]> git.ipfire.org Git - thirdparty/readline.git/commitdiff
Readline-4.2a import
authorChet Ramey <chet.ramey@case.edu>
Thu, 24 Nov 2011 00:01:09 +0000 (19:01 -0500)
committerChet Ramey <chet.ramey@case.edu>
Thu, 24 Nov 2011 00:01:09 +0000 (19:01 -0500)
80 files changed:
CHANGELOG
CHANGES
INSTALL
MANIFEST
Makefile.in
README
aclocal.m4
ansi_stdlib.h
bind.c
callback.c
chardefs.h
compat.c
complete.c
config.h.in
configure
configure.in
display.c
doc/Makefile.in
doc/history.dvi
doc/history.html
doc/history.info
doc/history.ps
doc/hstech.texinfo
doc/manvers.texinfo
doc/readline.0
doc/readline.3
doc/readline.dvi
doc/readline.html
doc/readline.info
doc/readline.ps
doc/readline_3.ps
doc/rltech.texinfo
doc/rluser.texinfo
doc/rluserman.dvi
doc/rluserman.html
doc/rluserman.info
doc/rluserman.ps
doc/texi2dvi
doc/texi2html
examples/Makefile.in
examples/fileman.c
examples/readlinebuf.h [new file with mode: 0644]
funmap.c
histexpand.c
histfile.c
history.c
history.h
histsearch.c
input.c
isearch.c
keymaps.h
kill.c
macro.c
nls.c
parens.c
readline.c
readline.h
rldefs.h
rlprivate.h
rlshell.h
rlstdc.h
rltty.c
rltypedefs.h
savestring.c
search.c
shell.c
shlib/Makefile.in
signals.c
support/config.guess
support/mkdist
support/shlib-install
support/shobj-conf
terminal.c
tilde.c
tilde.h
undo.c
util.c
vi_mode.c
xmalloc.c
xmalloc.h

index ab605598f2114fb148f113d1ac868dd2aa29916a..4453936fd5773537766000e211204eceaf8bd395 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -463,3 +463,148 @@ configure.in
                                    4/5
                                    ---
 [readline-4.2 frozen]
+
+                                   4/9
+                                   ---
+[readline-4.2 released]
+
+                                   5/2
+                                   ---
+Makefile.in,{doc,examples,shlib}/Makefile.in
+       - added support for DESTDIR installation root prefix, to support
+         building packages
+
+doc/Makefile.in
+       - add an info `dir' file entry for rluserman.info on `make install'
+       - change man1ext to `.1' and man3ext to `.3'
+       - install man pages with a $(man3ext) extension in the target directory
+       - add support for installing html documentation if `htmldir' has a
+         value
+
+Makefile.in
+       - on `make install', install from the `shlib' directory, too
+       - on `make uninstall', uninstall in the `doc' and `shlib'
+         subdirectories, too
+
+support/shlib-install
+       - add `freebsdelf*', `freebsdaout*', Hurd, `sysv4*', `sysv5*', `dgux*'
+         targets for symlink creation
+
+                                   5/7
+                                   ---
+configure.in, config.h.in
+       - check for <limits.h>, define HAVE_LIMITS_H if found
+
+                                   5/8
+                                   ---
+aclocal.m4
+       - pick up change to BASH_CHECK_LIB_TERMCAP that adds check for
+         libtinfo (termcap-specific portion of ncurses-5.2)
+
+                                   5/9
+                                   ---
+configure.in
+       - call AC_C_CONST to find out whether or not the compiler supports
+         `const'
+
+config.h.in
+       - placeholder for `const' define, if any
+
+                                  5/10
+                                  ----
+configure.in
+       - fix AC_CHECK_PROG(ar, ...) test to specify right value for the
+         case where ar is not found; should produce a better error message
+
+                                  5/14
+                                  ----
+configure.in,config.h.in
+       - check for vsnprintf, define HAVE_VSNPRINTF if found
+
+                                  5/21
+                                  ----
+configure.in, config.h.in
+       - add checks for size_t, ssize_t
+
+                                  5/30
+                                  ----
+configure.in
+       - update autoconf to version 2.50, use in AC_PREREQ
+       - changed AC_INIT to new flavor
+       - added AC_CONFIG_SRCDIR
+       - AC_CONFIG_HEADER -> AC_CONFIG_HEADERS
+       - call AC_C_PROTOTYPES
+       - AC_RETSIGTYPE -> AC_TYPE_SIGNAL
+
+                                  8/22
+                                  ----
+configure.in
+       - updated the version number to 4.2a
+
+Makefile.in,shlib/Makefile.in
+       - make sure tilde.o is built -DREADLINE_LIBRARY when being built as
+         part of the standalone library, so it picks up the right include
+         files
+
+                                  8/23
+                                  ----
+support/shlib-install
+       - support for Darwin/MacOS X shared library installation
+
+                                  9/24
+                                  ----
+examples/readlinebuf.h
+       - a new file, a C++ streambuf interface that uses readline for I/O.
+         Donated by Dimitris Vyzovitis <vyzo@media.mit.edu>
+
+                                  10/9
+                                  ----
+configure.in
+        - replaced call to BASH_HAVE_TIOCGWINSZ with AC_HEADER_TIOCGWINSZ
+
+[readline-4.2a-beta1 frozen]
+
+                                  10/15
+                                  -----
+configure.in, config.h.in
+       - check for <memory.h>, define HAVE_MEMORY_H if found
+       - check for <strings.h>, define HAVE_STRINGS_H if found
+
+                                  10/18
+                                  -----
+configure.in, config.h.in
+       - check for isascii, define HAVE_ISASCII if found
+
+configure.in
+       - changed the macro names from bash as appropriate:
+               BASH_SIGNAL_CHECK -> BASH_SYS_SIGNAL_VINTAGE
+               BASH_REINSTALL_SIGHANDLERS -> BASH_SYS_REINSTALL_SIGHANDLERS
+               BASH_MISC_SPEED_T -> BASH_CHECK_SPEED_T
+
+                                  10/22
+                                  -----
+configure.in
+       - check for isxdigit with AC_CHECK_FUNCS
+
+config.h.in
+       - new define for HAVE_ISXDIGIT
+
+                                  10/29
+                                  -----
+configure.in, config.h.in
+       - check for strpbrk with AC_CHECK_FUNCS, define HAVE_STRPBRK if found
+
+                                   11/1
+                                   ----
+Makefile.in
+       - make sure DESTDIR is passed to install and uninstall makes in
+         subdirectories
+       - when saving old copies of installed libraries, make sure we use
+         DESTDIR for the old installation tree
+
+[readline-4.2a-rc1 frozen]
+
+                                  11/2
+                                  ----
+Makefile.in, shlib/Makefile.in
+       - don't put -I$(includedir) into CFLAGS
diff --git a/CHANGES b/CHANGES
index 4f02f7794a4cb226892fe2bf850eb2edc306eebf..8197ca6e044d8224e5e92953d5e484add2d75fc4 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,82 @@
+This document details the changes between this version, readline-4.2a,
+and the previous version, readline-4.2.
+
+1.  Changes to Readline
+
+a.  More `const' and type casting fixes.
+
+b.  Changed rl_message() to use vsnprintf(3) (if available) to fix buffer
+    overflow problems.
+
+c.  The completion code no longer appends a `/' or ` ' to a match when
+    completing a symbolic link that resolves to a directory name, unless
+    the match does not add anything to the word being completed.  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.
+
+d.  Fixed a trivial typo that made the vi-mode `dT' command not work.
+
+e.  Fixed the tty code so that ^S and ^Q can be inserted with rl_quoted_insert.
+
+f.  Fixed the tty code so that ^V works more than once.
+
+g.  Changed the use of __P((...)) for function prototypes to PARAMS((...))
+    because the use of __P in typedefs conflicted g++ and glibc.
+
+h.  The completion code now attempts to do a better job of preserving the
+    case of the word the user typed if ignoring case in completions.
+
+i.  Readline defaults to not echoing the input and lets the terminal
+    initialization code enable echoing if there is a controlling terminal.
+
+j.  The key binding code now processes only two hex digits after a `\x'
+    escape sequence, and the documentation was changed to note that the
+    octal and hex escape sequences result in an eight-bit value rather
+    than strict ASCII.
+
+k.  Fixed a few places where negative array subscripts could have occurred.
+    
+l.  Fixed the vi-mode code to use a better method to determine the bounds of
+    the array used to hold the marks, and to avoid out-of-bounds references.
+    
+m.  Fixed the defines in chardefs.h to work better when chars are signed.
+    
+n.  Fixed configure.in to use the new names for bash autoconf macros.
+    
+o.  Readline no longer attempts to define its own versions of some ctype
+    macros if they are implemented as functions in libc but not as macros in
+    <ctype.h>.
+
+p.  Fixed a problem where rl_backward could possibly set point to before
+    the beginning of the line.
+
+q.  Fixed Makefile to not put -I/usr/include into CFLAGS, since it can cause
+    include file problems.
+
+2.  New Features in Readline
+
+a.  Added extern declaration for rl_get_termcap to readline.h, making it a
+    public function (it was always there, just not in readline.h).
+
+b.  New #defines in readline.h:  RL_READLINE_VERSION, currently 0x0402,
+    RL_VERSION_MAJOR, currently 4, and RL_VERSION_MINOR, currently 2.
+
+c.  New readline variable:  rl_readline_version, mirrors RL_READLINE_VERSION.
+
+d.  New bindable boolean readline variable:  match-hidden-files.  Controls
+    completion of files beginning with a `.' (on Unix).  Enabled by default.
+
+e.  The history expansion code now allows any character to terminate a
+    `:first-' modifier, like csh.
+
+f.  The incremental search code remembers the last search string and uses
+    it if ^R^R is typed without a search string.
+
+h.  New bindable variable `history-preserve-point'.  If set, the history
+    code attempts to place the user at the same location on each history
+    line retrived with previous-history or next-history.
+
+-------------------------------------------------------------------------------
 This document details the changes between this version, readline-4.2,
 and the previous version, readline-4.1.
 
diff --git a/INSTALL b/INSTALL
index 95d84c820fb8382b4f2d9daa044f626739ba0254..c503ccd1e38e2b9fb210218a505810120aae37c9 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1,73 +1,78 @@
 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
+These are installation instructions for Readline 4.2a.
+
+The simplest way to compile readline is:
+
+  1. `cd' to the directory containing the readline source code and type
+     `./configure' to configure readline 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
+     Running `configure' takes some time.  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.
+  2. Type `make' to compile readline and build the static libreadline
+     and libhistory libraries.  See below for instructions on compiling
+     the other parts of the distribution.  Typing `make everything' will
+     cause the static and shared libraries (if supported) and the example
+     programs to be built.
 
-  4. Type `make install' to install the programs and any data files and
-     documentation.
+  3. Type `make install' to install the static libreadline and libhistory
+     libraries, the readline include files, and the 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
+  4. You can remove the created libraries and object files from the
+     build directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile readline 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.
+     for the readline developers, and should be used with care.
+
+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 the build directory,
+and Makefiles in the `doc', `shlib', and `examples'
+subdirectories.  It also creates a `config.h' file 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 readline, please try
+to figure out how `configure' could check whether to do them, and
+mail diffs or instructions to <bug-readline@gnu.org> 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'. 
 
 Compilers and Options
 =====================
 
-   Some systems require unusual options for compilation or linking that
+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
+You can compile readline 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
@@ -75,80 +80,59 @@ 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.
+If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile readline for one architecture at a
+time in the source code directory.  After you have installed
+readline 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.
+By default, `make install' will install the readline libraries in
+`/usr/local/lib', the include files in
+`/usr/local/include/readline', the man pages in `/usr/local/man',
+and the info files in `/usr/local/info'.  You can specify an
+installation prefix other than `/usr/local' by giving `configure'
+the option `--prefix=PATH' or by supplying a value for the
+DESTDIR 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', the
+readline Makefiles will use PATH as the prefix for installing the
+libraries.  Documentation and other data files will still use the
+regular prefix. 
 
 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
+There may be some features `configure' can not figure out
+automatically, but need to determine by the type of host readline
+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 `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.
+See the file `config.sub' for the possible values of each field.
 
 Sharing Defaults
 ================
 
-   If you want to set default values for `configure' scripts to share,
+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.
+A warning: the readline `configure' looks for a site script, but not
+all `configure' scripts do.
 
 Operation Controls
 ==================
 
-   `configure' recognizes the following options to control how it
+`configure' recognizes the following options to control how it
 operates.
 
 `--cache-file=FILE'
@@ -174,3 +158,99 @@ operates.
 
 `configure' also accepts some other, not widely useful, options.
 
+Optional Features
+=================
+
+The readline `configure' takes a single `--with-PACKAGE' option:
+
+`--with-curses'
+    This tells readline that it can find the termcap library functions
+    (tgetent, et al.) in the curses library, rather than a separate
+    termcap library.  Readline uses the termcap functions, but does not
+    link with the termcap or curses library itself, allowing applications
+    which link with readline the to choose an appropriate library.
+    This option tells readline to link the example programs with the
+    curses library rather than libtermcap.
+Shared Libraries
+================
+
+There is support for building shared versions of the readline and
+history libraries.  The configure script creates a Makefile in
+the `shlib' subdirectory, and typing `make shared' will cause
+shared versions of the readline and history libraries to be built
+on supported platforms.  `make everything' will run `make shared'
+after building the static libraries. 
+
+Configure calls the script support/shobj-conf to test whether or
+not shared library creation is supported and to generate the values
+of variables that are substituted into shlib/Makefile.  If you
+try to build shared libraries on an unsupported platform, `make'
+will display a message asking you to update support/shobj-conf for
+your platform.
+
+If you need to update support/shobj-conf, you will need to create
+a `stanza' for your operating system and compiler.  The script uses
+the value of host_os and ${CC} as determined by configure.  For
+instance, FreeBSD 4.2 with any version of gcc is identified as
+`freebsd4.2-gcc*'.
+
+In the stanza for your operating system-compiler pair, you will need to
+define several variables.  They are:
+
+SHOBJ_CC       The C compiler used to compile source files into shareable
+               object files.  This is normally set to the value of ${CC}
+               by configure, and should not need to be changed.
+
+SHOBJ_CFLAGS   Flags to pass to the C compiler ($SHOBJ_CC) to create
+               position-independent code.  If you are using gcc, this
+               should probably be set to `-fpic'.
+
+SHOBJ_LD       The link editor to be used to create the shared library from
+               the object files created by $SHOBJ_CC.  If you are using
+               gcc, a value of `gcc' will probably work.
+
+SHOBJ_LDFLAGS  Flags to pass to SHOBJ_LD to enable shared object creation.
+               If you are using gcc, `-shared' may be all that is necessary.
+               These should be the flags needed for generic shared object
+               creation.
+
+SHLIB_XLDFLAGS Additional flags to pass to SHOBJ_LD for shared library
+               creation.  Many systems use the -R option to the link
+               editor to embed a path within the library for run-time
+               library searches.  A reasonable value for such systems would
+               be `-R$(libdir)'.
+
+SHLIB_LIBS     Any additional libraries that shared libraries should be
+               linked against when they are created.
+
+SHLIB_LIBSUFF  The suffix to add to `libreadline' and `libhistory' when
+               generating the filename of the shared library.  Many systems
+               use `so'; HP-UX uses `sl'.
+
+SHLIB_LIBVERSION The string to append to the filename to indicate the version
+               of the shared library.  It should begin with $(SHLIB_LIBSUFF),
+               and possibly include version information that allows the
+               run-time loader to load the version of the shared library
+               appropriate for a particular program.  Systems using shared
+               libraries similar to SunOS 4.x use major and minor library
+               version numbers; for those systems a value of
+               `$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' is appropriate.
+               Systems based on System V Release 4 don't use minor version
+               numbers; use `$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' on those systems.
+               Other Unix versions use different schemes.
+
+SHLIB_STATUS   Set this to `supported' when you have defined the other
+               necessary variables.  Make uses this to determine whether
+               or not shared library creation should be attempted.
+
+You should look at the existing stanzas in support/shobj-conf for ideas.
+
+Once you have updated support/shobj-conf, re-run configure and type
+`make shared'.  The shared libraries will be created in the shlib
+subdirectory.
+
+Since shared libraries are not created on all platforms, `make install'
+will not automatically install the shared libraries.  To install them,
+change the current directory to shlib and type `make install'.  Running
+`make install-shared' from the top-level build directory will also work.
index e80aba7b2db5e8306367c1ca5e40cae5acc68bc5..7398d15c6d65a4ee98f60543e0c2aaf91d6a7c07 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -94,6 +94,7 @@ examples/Makefile.in  f
 examples/excallback.c  f
 examples/fileman.c     f
 examples/manexamp.c    f
+examples/readlinebuf.h f
 examples/rlfe.c                f
 examples/rltest.c      f
 examples/rl.c          f
index 4caf6a80da82f3191223cad68bbaf269f361f9ad..178dddb77fd5890e5126e3e90ca658d1435965fe 100644 (file)
@@ -50,6 +50,9 @@ infodir = @infodir@
 
 man3dir = $(mandir)/man3
 
+# Support an alternate destination root directory for package building
+DESTDIR =
+
 # Programs to make tags files.
 ETAGS = etags -tw
 CTAGS = ctags -tw
@@ -64,7 +67,7 @@ LOCAL_DEFS = @LOCAL_DEFS@
 TERMCAP_LIB = @TERMCAP_LIB@
 
 # For libraries which include headers from other libraries.
-INCLUDES = -I. -I$(srcdir) -I$(includedir)
+INCLUDES = -I. -I$(srcdir)
 
 XCCFLAGS = $(DEFS) $(LOCAL_DEFS) $(CPPFLAGS) $(INCLUDES)
 CCFLAGS = $(XCCFLAGS) $(LOCAL_CFLAGS) $(CFLAGS)
@@ -72,7 +75,7 @@ CCFLAGS = $(XCCFLAGS) $(LOCAL_CFLAGS) $(CFLAGS)
 # could add -Werror here
 GCC_LINT_FLAGS = -ansi -Wall -Wshadow -Wpointer-arith -Wcast-qual \
                 -Wwrite-strings -Wstrict-prototypes \
-                -Wmissing-prototypes -Wno-implicit
+                -Wmissing-prototypes -Wno-implicit -pedantic
 GCC_LINT_CFLAGS = $(XCCFLAGS) $(GCC_LINT_FLAGS) @CFLAGS@ @LOCAL_CFLAGS@
 
 .c.o:
@@ -141,6 +144,12 @@ libhistory.a: $(HISTOBJ) xmalloc.o
        $(AR) $(ARFLAGS) $@ $(HISTOBJ) xmalloc.o
        -test -n "$(RANLIB)" && $(RANLIB) $@
 
+# Since tilde.c is shared between readline and bash, make sure we compile
+# it with the right flags when it's built as part of readline
+tilde.o:       tilde.c
+       rm -f $@
+       $(CC) $(CCFLAGS) -DREADLINE_LIBRARY -c $(srcdir)/tilde.c
+
 readline: $(OBJECTS) readline.h rldefs.h chardefs.h ./libreadline.a
        $(CC) $(CCFLAGS) -o $@ ./examples/rl.c ./libreadline.a ${TERMCAP_LIB}
 
@@ -184,40 +193,47 @@ force:
 
 install-headers: installdirs ${INSTALLED_HEADERS}
        for f in ${INSTALLED_HEADERS}; do \
-               $(INSTALL_DATA) $(srcdir)/$$f $(includedir)/readline ; \
+               $(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(includedir)/readline ; \
        done
 
 uninstall-headers:
-       -test -n "$(includedir)" && cd $(includedir)/readline && \
+       -test -n "$(includedir)" && cd $(DESTDIR)$(includedir)/readline && \
                ${RM} ${INSTALLED_HEADERS}
 
 maybe-uninstall-headers: uninstall-headers
 
 install: installdirs $(STATIC_LIBS) install-headers
-       -$(MV) $(libdir)/libreadline.a $(libdir)/libreadline.old
-       $(INSTALL_DATA) libreadline.a $(libdir)/libreadline.a
-       -test -n "$(RANLIB)" && $(RANLIB) $(libdir)/libreadline.a
-       -$(MV) $(libdir)/libhistory.a $(libdir)/libhistory.old
-       $(INSTALL_DATA) libhistory.a $(libdir)/libhistory.a
-       -test -n "$(RANLIB)" && $(RANLIB) $(libdir)/libhistory.a
+       -$(MV) $(DESTDIR)$(libdir)/libreadline.a $(DESTDIR)$(libdir)/libreadline.old
+       $(INSTALL_DATA) libreadline.a $(DESTDIR)$(libdir)/libreadline.a
+       -test -n "$(RANLIB)" && $(RANLIB) $(DESTDIR)$(libdir)/libreadline.a
+       -$(MV) $(DESTDIR)$(libdir)/libhistory.a $(DESTDIR)$(libdir)/libhistory.old
+       $(INSTALL_DATA) libhistory.a $(DESTDIR)$(libdir)/libhistory.a
+       -test -n "$(RANLIB)" && $(RANLIB) $(DESTDIR)$(libdir)/libhistory.a
        -( if test -d doc ; then \
                cd doc && \
-               ${MAKE} ${MFLAGS} infodir=$(infodir) $@; \
+               ${MAKE} ${MFLAGS} infodir=$(infodir) DESTDIR=${DESTDIR} $@; \
          fi )
+       -( cd shlib ; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} install )
 
 installdirs: $(srcdir)/support/mkdirs
-       -$(SHELL) $(srcdir)/support/mkdirs $(includedir) \
-               $(includedir)/readline $(libdir) $(infodir) $(man3dir)
+       -$(SHELL) $(srcdir)/support/mkdirs $(DESTDIR)$(includedir) \
+               $(DESTDIR)$(includedir)/readline $(DESTDIR)$(libdir) \
+               $(DESTDIR)$(infodir) $(DESTDIR)$(man3dir)
 
 uninstall: uninstall-headers
-       -test -n "$(libdir)" && cd $(libdir) && \
+       -test -n "$(DESTDIR)$(libdir)" && cd $(DESTDIR)$(libdir) && \
                ${RM} libreadline.a libreadline.old libhistory.a libhistory.old $(SHARED_LIBS)
+       -( if test -d doc ; then \
+               cd doc && \
+               ${MAKE} ${MFLAGS} infodir=$(infodir) DESTDIR=${DESTDIR} $@; \
+         fi )
+       -( cd shlib; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} uninstall )
 
 install-shared: installdirs install-headers shared
-       -( cd shlib ; ${MAKE} ${MFLAGS} install )
+       -( cd shlib ; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} install )
 
 uninstall-shared: maybe-uninstall-headers
-       -( cd shlib; ${MAKE} ${MFLAGS} uninstall )
+       -( cd shlib; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} uninstall )
 
 TAGS:  force
        $(ETAGS) $(CSOURCES) $(HSOURCES)
diff --git a/README b/README
index 53680c3555140878bfb3981405955c31578c727b..4a1374767e22d7af45a6699101e4963f1c459b4e 100644 (file)
--- a/README
+++ b/README
@@ -1,7 +1,7 @@
 Introduction
 ============
 
-This is the Gnu Readline library, version 4.2.
+This is the Gnu Readline library, version 4.2a.
 
 The Readline library provides a set of functions for use by applications
 that allow users to edit command lines as they are typed in.  Both
@@ -16,8 +16,8 @@ may be used without Readline in applications which desire its
 capabilities.
 
 The Readline library is free software, distributed under the terms of
-the GNU Public License, version 2.  For more information, see the file
-COPYING.
+the [GNU] General Public License, version 2.  For more information, see
+the file COPYING.
 
 To build the library, try typing `./configure', then `make'.  The
 configuration process is automated, so no further intervention should
@@ -67,8 +67,8 @@ your platform.
 If you need to update support/shobj-conf, you will need to create
 a `stanza' for your operating system and compiler.  The script uses
 the value of host_os and ${CC} as determined by configure.  For
-instance, FreeBSD 4.2 using the ELF object file format  with any
-version of gcc is identified as `freebsdelf4.2-gcc*'.
+instance, FreeBSD 4.2 with any version of gcc is identified as
+`freebsd4.2-gcc*'.
 
 In the stanza for your operating system-compiler pair, you will need to
 define several variables.  They are:
index 8c977c16db94ff22e6a9251938020be30cdb4500..22fe7fe7dc7471d2380e0bfdc8a906963e8cc176 100644 (file)
@@ -3,153 +3,82 @@ dnl Bash specific tests
 dnl
 dnl Some derived from PDKSH 5.1.3 autoconf tests
 dnl
-dnl
-dnl Check if dup2() does not clear the close on exec flag
-dnl
-AC_DEFUN(BASH_DUP2_CLOEXEC_CHECK,
-[AC_MSG_CHECKING(if dup2 fails to clear the close-on-exec flag)
-AC_CACHE_VAL(bash_cv_dup2_broken,
-[AC_TRY_RUN([
-#include <sys/types.h>
-#include <fcntl.h>
+
+AC_DEFUN(BASH_C_LONG_LONG,
+[AC_CACHE_CHECK(for long long, ac_cv_c_long_long,
+[if test "$GCC" = yes; then
+  ac_cv_c_long_long=yes
+else
+AC_TRY_RUN([
+int
 main()
 {
-  int fd1, fd2, fl;
-  fd1 = open("/dev/null", 2);
-  if (fcntl(fd1, 2, 1) < 0)
-    exit(1);
-  fd2 = dup2(fd1, 1);
-  if (fd2 < 0)
-    exit(2);
-  fl = fcntl(fd2, 1, 0);
-  /* fl will be 1 if dup2 did not reset the close-on-exec flag. */
-  exit(fl != 1);
+long long foo = 0;
+exit(sizeof(long long) < sizeof(long));
 }
-], bash_cv_dup2_broken=yes, bash_cv_dup2_broken=no,
-    [AC_MSG_WARN(cannot check dup2 if cross compiling -- defaulting to no)
-     bash_cv_dup2_broken=no])
-])
-AC_MSG_RESULT($bash_cv_dup2_broken)
-if test $bash_cv_dup2_broken = yes; then
-AC_DEFINE(DUP2_BROKEN)
-fi
-])
-
-dnl Check type of signal routines (posix, 4.2bsd, 4.1bsd or v7)
-AC_DEFUN(BASH_SIGNAL_CHECK,
-[AC_REQUIRE([AC_TYPE_SIGNAL])
-AC_MSG_CHECKING(for type of signal functions)
-AC_CACHE_VAL(bash_cv_signal_vintage,
-[
-  AC_TRY_LINK([#include <signal.h>],[
-    sigset_t ss;
-    struct sigaction sa;
-    sigemptyset(&ss); sigsuspend(&ss);
-    sigaction(SIGINT, &sa, (struct sigaction *) 0);
-    sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0);
-  ], bash_cv_signal_vintage=posix,
-  [
-    AC_TRY_LINK([#include <signal.h>], [
-       int mask = sigmask(SIGINT);
-       sigsetmask(mask); sigblock(mask); sigpause(mask);
-    ], bash_cv_signal_vintage=4.2bsd,
-    [
-      AC_TRY_LINK([
-       #include <signal.h>
-       RETSIGTYPE foo() { }], [
-               int mask = sigmask(SIGINT);
-               sigset(SIGINT, foo); sigrelse(SIGINT);
-               sighold(SIGINT); sigpause(SIGINT);
-        ], bash_cv_signal_vintage=svr3, bash_cv_signal_vintage=v7
-    )]
-  )]
-)
-])
-AC_MSG_RESULT($bash_cv_signal_vintage)
-if test "$bash_cv_signal_vintage" = posix; then
-AC_DEFINE(HAVE_POSIX_SIGNALS)
-elif test "$bash_cv_signal_vintage" = "4.2bsd"; then
-AC_DEFINE(HAVE_BSD_SIGNALS)
-elif test "$bash_cv_signal_vintage" = svr3; then
-AC_DEFINE(HAVE_USG_SIGHOLD)
+], ac_cv_c_long_long=yes, ac_cv_c_long_long=no)
+fi])
+if test $ac_cv_c_long_long = yes; then
+  AC_DEFINE(HAVE_LONG_LONG, 1, [Define if the `long long' type works.])
 fi
 ])
 
-dnl Check if the pgrp of setpgrp() can't be the pid of a zombie process.
-AC_DEFUN(BASH_PGRP_SYNC,
-[AC_REQUIRE([AC_FUNC_GETPGRP])
-AC_MSG_CHECKING(whether pgrps need synchronization)
-AC_CACHE_VAL(bash_cv_pgrp_pipe,
-[AC_TRY_RUN([
-#ifdef HAVE_UNISTD_H
-#  include <unistd.h>
-#endif
+dnl
+dnl This is very similar to AC_C_LONG_DOUBLE, with the fix for IRIX
+dnl (< changed to <=) added.
+dnl
+AC_DEFUN(BASH_C_LONG_DOUBLE,
+[AC_CACHE_CHECK(for long double, ac_cv_c_long_double,
+[if test "$GCC" = yes; then
+  ac_cv_c_long_double=yes
+else
+AC_TRY_RUN([
+int
 main()
 {
-# ifdef GETPGRP_VOID
-#  define getpgID()    getpgrp()
-# else
-#  define getpgID()    getpgrp(0)
-#  define setpgid(x,y) setpgrp(x,y)
-# endif
-       int pid1, pid2, fds[2];
-       int status;
-       char ok;
-
-       switch (pid1 = fork()) {
-         case -1:
-           exit(1);
-         case 0:
-           setpgid(0, getpid());
-           exit(0);
-       }
-       setpgid(pid1, pid1);
-
-       sleep(2);       /* let first child die */
-
-       if (pipe(fds) < 0)
-         exit(2);
-
-       switch (pid2 = fork()) {
-         case -1:
-           exit(3);
-         case 0:
-           setpgid(0, pid1);
-           ok = getpgID() == pid1;
-           write(fds[1], &ok, 1);
-           exit(0);
-       }
-       setpgid(pid2, pid1);
-
-       close(fds[1]);
-       if (read(fds[0], &ok, 1) != 1)
-         exit(4);
-       wait(&status);
-       wait(&status);
-       exit(ok ? 0 : 5);
+  /* The Stardent Vistra knows sizeof(long double), but does not
+     support it. */
+  long double foo = 0.0;
+  /* On Ultrix 4.3 cc, long double is 4 and double is 8.  */
+  /* On IRIX 5.3, the compiler converts long double to double with a warning,
+     but compiles this successfully. */
+  exit(sizeof(long double) <= sizeof(double));
 }
-], bash_cv_pgrp_pipe=no,bash_cv_pgrp_pipe=yes,
-   [AC_MSG_WARN(cannot check pgrp synchronization if cross compiling -- defaulting to no)
-    bash_cv_pgrp_pipe=no])
-])
-AC_MSG_RESULT($bash_cv_pgrp_pipe)
-if test $bash_cv_pgrp_pipe = yes; then
-AC_DEFINE(PGRP_PIPE)
+], ac_cv_c_long_double=yes, ac_cv_c_long_double=no)
+fi])
+if test $ac_cv_c_long_double = yes; then
+  AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if the `long double' type works.])
 fi
 ])
 
+dnl
+dnl Check for <inttypes.h>.  This is separated out so that it can be
+dnl AC_REQUIREd.
+dnl
+dnl BASH_HEADER_INTTYPES
+AC_DEFUN(BASH_HEADER_INTTYPES,
+[
+ AC_CHECK_HEADERS(inttypes.h)
+])
+
 dnl
 dnl check for typedef'd symbols in header files, but allow the caller to
 dnl specify the include files to be checked in addition to the default
 dnl 
 dnl BASH_CHECK_TYPE(TYPE, HEADERS, DEFAULT[, VALUE-IF-FOUND])
 AC_DEFUN(BASH_CHECK_TYPE,
-[AC_REQUIRE([AC_HEADER_STDC])dnl
+[
+AC_REQUIRE([AC_HEADER_STDC])dnl
+AC_REQUIRE([BASH_HEADER_INTTYPES])
 AC_MSG_CHECKING(for $1)
 AC_CACHE_VAL(bash_cv_type_$1,
 [AC_EGREP_CPP($1, [#include <sys/types.h>
 #if STDC_HEADERS
 #include <stdlib.h>
+#include <stddef.h>
+#endif
+#if HAVE_INTTYPES_H
+#include <inttypes.h>
 #endif
 $2
 ], bash_cv_type_$1=yes, bash_cv_type_$1=no)])
@@ -158,43 +87,74 @@ ifelse($#, 4, [if test $bash_cv_type_$1 = yes; then
        AC_DEFINE($4)
        fi])
 if test $bash_cv_type_$1 = no; then
-  AC_DEFINE($1, $3)
+  AC_DEFINE_UNQUOTED($1, $3)
 fi
 ])
 
 dnl
-dnl Type of struct rlimit fields: some systems (OSF/1, NetBSD, RISC/os 5.0)
-dnl have a rlim_t, others (4.4BSD based systems) use quad_t, others use
-dnl long and still others use int (HP-UX 9.01, SunOS 4.1.3).  To simplify
-dnl matters, this just checks for rlim_t, quad_t, or long.
+dnl BASH_CHECK_DECL(FUNC)
 dnl
-AC_DEFUN(BASH_RLIMIT_TYPE,
-[AC_MSG_CHECKING(for size and type of struct rlimit fields)
-AC_CACHE_VAL(bash_cv_type_rlimit,
-[AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/resource.h>],
-[rlim_t xxx;], bash_cv_type_rlimit=rlim_t,[
-AC_TRY_RUN([
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/resource.h>
+dnl Check for a declaration of FUNC in stdlib.h and inttypes.h like
+dnl AC_CHECK_DECL
+dnl
+AC_DEFUN(BASH_CHECK_DECL,
+[
+AC_REQUIRE([AC_HEADER_STDC])
+AC_REQUIRE([BASH_HEADER_INTTYPES])
+AC_CACHE_CHECK([for declaration of $1], bash_cv_decl_$1,
+[AC_TRY_LINK(
+[
+#if STDC_HEADERS
+#  include <stdlib.h>
+#endif
+#if HAVE_INTTYPES_H
+#  include <inttypes.h>
+#endif
+],
+[return !$1;],
+bash_cv_decl_$1=yes, bash_cv_decl_$1=no)])
+bash_tr_func=HAVE_DECL_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+if test $bash_cv_decl_$1 = yes; then
+  AC_DEFINE_UNQUOTED($bash_tr_func, 1)
+else
+  AC_DEFINE_UNQUOTED($bash_tr_func, 0)
+fi
+])
+
+AC_DEFUN(BASH_DECL_PRINTF,
+[AC_MSG_CHECKING(for declaration of printf in <stdio.h>)
+AC_CACHE_VAL(bash_cv_printf_declared,
+[AC_TRY_RUN([
+#include <stdio.h>
+#ifdef __STDC__
+typedef int (*_bashfunc)(const char *, ...);
+#else
+typedef int (*_bashfunc)();
+#endif
 main()
 {
-#ifdef HAVE_QUAD_T
-  struct rlimit rl;
-  if (sizeof(rl.rlim_cur) == sizeof(quad_t))
-    exit(0);
-#endif
-  exit(1);
-}], bash_cv_type_rlimit=quad_t, bash_cv_type_rlimit=long,
-        [AC_MSG_WARN(cannot check quad_t if cross compiling -- defaulting to long)
-         bash_cv_type_rlimit=long])])
+_bashfunc pf;
+pf = (_bashfunc) printf;
+exit(pf == 0);
+}
+], bash_cv_printf_declared=yes, bash_cv_printf_declared=no,
+   [AC_MSG_WARN(cannot check printf declaration if cross compiling -- defaulting to yes)
+    bash_cv_printf_declared=yes]
+)])
+AC_MSG_RESULT($bash_cv_printf_declared)
+if test $bash_cv_printf_declared = yes; then
+AC_DEFINE(PRINTF_DECLARED)
+fi
 ])
-AC_MSG_RESULT($bash_cv_type_rlimit)
-if test $bash_cv_type_rlimit = quad_t; then
-AC_DEFINE(RLIMTYPE, quad_t)
-elif test $bash_cv_type_rlimit = rlim_t; then
-AC_DEFINE(RLIMTYPE, rlim_t)
+
+AC_DEFUN(BASH_DECL_SBRK,
+[AC_MSG_CHECKING(for declaration of sbrk in <unistd.h>)
+AC_CACHE_VAL(bash_cv_sbrk_declared,
+[AC_EGREP_HEADER(sbrk, unistd.h,
+ bash_cv_sbrk_declared=yes, bash_cv_sbrk_declared=no)])
+AC_MSG_RESULT($bash_cv_sbrk_declared)
+if test $bash_cv_sbrk_declared = yes; then
+AC_DEFINE(SBRK_DECLARED)
 fi
 ])
 
@@ -272,6 +232,20 @@ AC_DEFINE(HAVE_SYS_SIGLIST)
 fi
 ])
 
+dnl Check for the various permutations of sys_siglist and make sure we
+dnl compile in siglist.o if they're not defined
+AC_DEFUN(BASH_CHECK_SYS_SIGLIST, [
+AC_REQUIRE([BASH_SYS_SIGLIST])
+AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST])
+AC_REQUIRE([BASH_FUNC_STRSIGNAL])
+if test "$bash_cv_sys_siglist" = no && test "$bash_cv_under_sys_siglist" = no && test "$bash_cv_have_strsignal" = no; then
+  SIGLIST_O=siglist.o
+else
+  SIGLIST_O=
+fi
+AC_SUBST([SIGLIST_O])
+])
+
 dnl Check for sys_errlist[] and sys_nerr, check for declaration
 AC_DEFUN(BASH_SYS_ERRLIST,
 [AC_MSG_CHECKING([for sys_errlist and sys_nerr])
@@ -287,6 +261,51 @@ AC_DEFINE(HAVE_SYS_ERRLIST)
 fi
 ])
 
+dnl
+dnl Check if dup2() does not clear the close on exec flag
+dnl
+AC_DEFUN(BASH_FUNC_DUP2_CLOEXEC_CHECK,
+[AC_MSG_CHECKING(if dup2 fails to clear the close-on-exec flag)
+AC_CACHE_VAL(bash_cv_dup2_broken,
+[AC_TRY_RUN([
+#include <sys/types.h>
+#include <fcntl.h>
+main()
+{
+  int fd1, fd2, fl;
+  fd1 = open("/dev/null", 2);
+  if (fcntl(fd1, 2, 1) < 0)
+    exit(1);
+  fd2 = dup2(fd1, 1);
+  if (fd2 < 0)
+    exit(2);
+  fl = fcntl(fd2, 1, 0);
+  /* fl will be 1 if dup2 did not reset the close-on-exec flag. */
+  exit(fl != 1);
+}
+], bash_cv_dup2_broken=yes, bash_cv_dup2_broken=no,
+    [AC_MSG_WARN(cannot check dup2 if cross compiling -- defaulting to no)
+     bash_cv_dup2_broken=no])
+])
+AC_MSG_RESULT($bash_cv_dup2_broken)
+if test $bash_cv_dup2_broken = yes; then
+AC_DEFINE(DUP2_BROKEN)
+fi
+])
+
+AC_DEFUN(BASH_FUNC_STRSIGNAL,
+[AC_MSG_CHECKING([for the existence of strsignal])
+AC_CACHE_VAL(bash_cv_have_strsignal,
+[AC_TRY_LINK([#include <sys/types.h>
+#include <signal.h>],
+[char *s = (char *)strsignal(2);],
+ bash_cv_have_strsignal=yes, bash_cv_have_strsignal=no)])
+AC_MSG_RESULT($bash_cv_have_strsignal)
+if test $bash_cv_have_strsignal = yes; then
+AC_DEFINE(HAVE_STRSIGNAL)
+fi
+])
+
 dnl Check to see if opendir will open non-directories (not a nice thing)
 AC_DEFUN(BASH_FUNC_OPENDIR_CHECK,
 [AC_REQUIRE([AC_HEADER_DIRENT])dnl
@@ -422,6 +441,8 @@ if test "$ac_cv_sizeof_int" = "$ac_cv_sizeof_char_p"; then
   AC_CHECK_TYPE(ptrdiff_t, int)
 elif test "$ac_cv_sizeof_long" = "$ac_cv_sizeof_char_p"; then
   AC_CHECK_TYPE(ptrdiff_t, long)
+elif test "$ac_cv_type_long_long" = yes && test "$ac_cv_sizeof_long_long" = "$ac_cv_sizeof_char_p"; then
+  AC_CHECK_TYPE(ptrdiff_t, [long long])
 else
   AC_CHECK_TYPE(ptrdiff_t, int)
 fi
@@ -432,10 +453,12 @@ dnl A signed 64-bit quantity
 dnl
 AC_DEFUN(BASH_TYPE_BITS64_T,
 [
-if test "$ac_sv_sizeof_char_p" = 8; then
+if test "$ac_cv_sizeof_char_p" = 8; then
   AC_CHECK_TYPE(bits64_t, char *)
 elif test "$ac_cv_sizeof_double" = 8; then
   AC_CHECK_TYPE(bits64_t, double)
+elif test -n "$ac_cv_type_long_long" && test "$ac_cv_sizeof_long_long" = 8; then
+  AC_CHECK_TYPE(bits64_t, [long long])
 elif test "$ac_cv_sizeof_long" = 8; then
   AC_CHECK_TYPE(bits64_t, long)
 else
@@ -443,16 +466,68 @@ else
 fi
 ])
 
-AC_DEFUN(BASH_FUNC_STRSIGNAL,
-[AC_MSG_CHECKING([for the existence of strsignal])
-AC_CACHE_VAL(bash_cv_have_strsignal,
-[AC_TRY_LINK([#include <sys/types.h>
-#include <signal.h>],
-[char *s = (char *)strsignal(2);],
- bash_cv_have_strsignal=yes, bash_cv_have_strsignal=no)])
-AC_MSG_RESULT($bash_cv_have_strsignal)
-if test $bash_cv_have_strsignal = yes; then
-AC_DEFINE(HAVE_STRSIGNAL)
+AC_DEFUN(BASH_TYPE_LONG_LONG,
+[
+AC_CACHE_CHECK([for long long], bash_cv_type_long_long,
+[AC_TRY_LINK([
+long long ll = 1; int i = 63;],
+[
+long long llm = (long long) -1;
+return ll << i | ll >> i | llm / ll | llm % ll;
+], bash_cv_type_long_long='long long', bash_cv_type_long_long='long')])
+if test "$bash_cv_type_long_long" = 'long long'; then
+  AC_DEFINE(HAVE_LONG_LONG, 1)
+fi
+])
+
+AC_DEFUN(BASH_TYPE_UNSIGNED_LONG_LONG,
+[
+AC_CACHE_CHECK([for unsigned long long], bash_cv_type_unsigned_long_long,
+[AC_TRY_LINK([
+unsigned long long ull = 1; int i = 63;],
+[
+unsigned long long ullmax = (unsigned long long) -1;
+return ull << i | ull >> i | ullmax / ull | ullmax % ull;
+], bash_cv_type_unsigned_long_long='unsigned long long',
+   bash_cv_type_unsigned_long_long='unsigned long')])
+if test "$bash_cv_type_unsigned_long_long" = 'unsigned long long'; then
+  AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1)
+fi
+])
+
+dnl
+dnl Type of struct rlimit fields: some systems (OSF/1, NetBSD, RISC/os 5.0)
+dnl have a rlim_t, others (4.4BSD based systems) use quad_t, others use
+dnl long and still others use int (HP-UX 9.01, SunOS 4.1.3).  To simplify
+dnl matters, this just checks for rlim_t, quad_t, or long.
+dnl
+AC_DEFUN(BASH_TYPE_RLIMIT,
+[AC_MSG_CHECKING(for size and type of struct rlimit fields)
+AC_CACHE_VAL(bash_cv_type_rlimit,
+[AC_TRY_COMPILE([#include <sys/types.h>
+#include <sys/resource.h>],
+[rlim_t xxx;], bash_cv_type_rlimit=rlim_t,[
+AC_TRY_RUN([
+#include <sys/types.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+main()
+{
+#ifdef HAVE_QUAD_T
+  struct rlimit rl;
+  if (sizeof(rl.rlim_cur) == sizeof(quad_t))
+    exit(0);
+#endif
+  exit(1);
+}], bash_cv_type_rlimit=quad_t, bash_cv_type_rlimit=long,
+        [AC_MSG_WARN(cannot check quad_t if cross compiling -- defaulting to long)
+         bash_cv_type_rlimit=long])])
+])
+AC_MSG_RESULT($bash_cv_type_rlimit)
+if test $bash_cv_type_rlimit = quad_t; then
+AC_DEFINE(RLIMTYPE, quad_t)
+elif test $bash_cv_type_rlimit = rlim_t; then
+AC_DEFINE(RLIMTYPE, rlim_t)
 fi
 ])
 
@@ -481,30 +556,8 @@ struct in_addr ap;], [ inet_aton("127.0.0.1", &ap); ],
 bash_cv_func_inet_aton=yes, bash_cv_func_inet_aton=no)])
 if test $bash_cv_func_inet_aton = yes; then
   AC_DEFINE(HAVE_INET_ATON)
-fi
-])
-
-AC_DEFUN(BASH_STRUCT_TERMIOS_LDISC,
-[AC_MSG_CHECKING([for a c_line member of struct termios])
-AC_CACHE_VAL(bash_cv_termios_ldisc,
-[AC_TRY_COMPILE([#include <sys/types.h>
-#include <termios.h>],[struct termios t; int i; i = t.c_line;],
-  bash_cv_termios_ldisc=yes, bash_cv_termios_ldisc=no)])dnl
-AC_MSG_RESULT($bash_cv_termios_ldisc)
-if test $bash_cv_termios_ldisc = yes; then
-AC_DEFINE(TERMIOS_LDISC)
-fi
-])
-
-AC_DEFUN(BASH_STRUCT_TERMIO_LDISC,
-[AC_MSG_CHECKING([for a c_line member of struct termio])
-AC_CACHE_VAL(bash_cv_termio_ldisc,
-[AC_TRY_COMPILE([#include <sys/types.h>
-#include <termio.h>],[struct termio t; int i; i = t.c_line;],
-  bash_cv_termio_ldisc=yes, bash_cv_termio_ldisc=no)])dnl
-AC_MSG_RESULT($bash_cv_termio_ldisc)
-if test $bash_cv_termio_ldisc = yes; then
-AC_DEFINE(TERMIO_LDISC)
+else
+  AC_LIBOBJ(inet_aton)
 fi
 ])
 
@@ -552,32 +605,6 @@ AC_DEFINE(CAN_REDEFINE_GETENV)
 fi
 ])
 
-AC_DEFUN(BASH_FUNC_PRINTF,
-[AC_MSG_CHECKING(for declaration of printf in <stdio.h>)
-AC_CACHE_VAL(bash_cv_printf_declared,
-[AC_TRY_RUN([
-#include <stdio.h>
-#ifdef __STDC__
-typedef int (*_bashfunc)(const char *, ...);
-#else
-typedef int (*_bashfunc)();
-#endif
-main()
-{
-_bashfunc pf;
-pf = (_bashfunc) printf;
-exit(pf == 0);
-}
-], bash_cv_printf_declared=yes, bash_cv_printf_declared=no,
-   [AC_MSG_WARN(cannot check printf declaration if cross compiling -- defaulting to yes)
-    bash_cv_printf_declared=yes]
-)])
-AC_MSG_RESULT($bash_cv_printf_declared)
-if test $bash_cv_printf_declared = yes; then
-AC_DEFINE(PRINTF_DECLARED)
-fi
-])
-
 AC_DEFUN(BASH_FUNC_ULIMIT_MAXFDS,
 [AC_MSG_CHECKING(whether ulimit can substitute for getdtablesize)
 AC_CACHE_VAL(bash_cv_ulimit_maxfds,
@@ -597,39 +624,6 @@ AC_DEFINE(ULIMIT_MAXFDS)
 fi
 ])
 
-AC_DEFUN(BASH_CHECK_LIB_TERMCAP,
-[
-if test "X$bash_cv_termcap_lib" = "X"; then
-_bash_needmsg=yes
-else
-AC_MSG_CHECKING(which library has the termcap functions)
-_bash_needmsg=
-fi
-AC_CACHE_VAL(bash_cv_termcap_lib,
-[AC_CHECK_LIB(termcap, tgetent, bash_cv_termcap_lib=libtermcap,
-    [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses,
-       [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses,
-           bash_cv_termcap_lib=gnutermcap)])])])
-if test "X$_bash_needmsg" = "Xyes"; then
-AC_MSG_CHECKING(which library has the termcap functions)
-fi
-AC_MSG_RESULT(using $bash_cv_termcap_lib)
-if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then
-LDFLAGS="$LDFLAGS -L./lib/termcap"
-TERMCAP_LIB="./lib/termcap/libtermcap.a"
-TERMCAP_DEP="./lib/termcap/libtermcap.a"
-elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then
-TERMCAP_LIB=-ltermcap
-TERMCAP_DEP=
-elif test $bash_cv_termcap_lib = libncurses; then
-TERMCAP_LIB=-lncurses
-TERMCAP_DEP=
-else
-TERMCAP_LIB=-lcurses
-TERMCAP_DEP=
-fi
-])
-
 AC_DEFUN(BASH_FUNC_GETCWD,
 [AC_MSG_CHECKING([if getcwd() calls popen()])
 AC_CACHE_VAL(bash_cv_getcwd_calls_popen,
@@ -691,6 +685,317 @@ main()
 AC_MSG_RESULT($bash_cv_getcwd_calls_popen)
 if test $bash_cv_getcwd_calls_popen = yes; then
 AC_DEFINE(GETCWD_BROKEN)
+AC_LIBOBJ(getcwd)
+fi
+])
+
+dnl
+dnl This needs BASH_CHECK_SOCKLIB, but since that's not called on every
+dnl system, we can't use AC_PREREQ
+dnl
+AC_DEFUN(BASH_FUNC_GETHOSTBYNAME,
+[if test "X$bash_cv_have_gethostbyname" = "X"; then
+_bash_needmsg=yes
+else
+AC_MSG_CHECKING(for gethostbyname in socket library)
+_bash_needmsg=
+fi
+AC_CACHE_VAL(bash_cv_have_gethostbyname,
+[AC_TRY_LINK([#include <netdb.h>],
+[ struct hostent *hp;
+  hp = gethostbyname("localhost");
+], bash_cv_have_gethostbyname=yes, bash_cv_have_gethostbyname=no)]
+)
+if test "X$_bash_needmsg" = Xyes; then
+    AC_MSG_CHECKING(for gethostbyname in socket library)
+fi
+AC_MSG_RESULT($bash_cv_have_gethostbyname)
+if test "$bash_cv_have_gethostbyname" = yes; then
+AC_DEFINE(HAVE_GETHOSTBYNAME)
+fi
+])
+
+AC_DEFUN(BASH_FUNC_FNMATCH_EXTMATCH,
+[AC_MSG_CHECKING(if fnmatch does extended pattern matching with FNM_EXTMATCH)
+AC_CACHE_VAL(bash_cv_fnm_extmatch,
+[AC_TRY_RUN([
+#include <fnmatch.h>
+
+main()
+{
+#ifdef FNM_EXTMATCH
+  exit (0);
+#else
+  exit (1);
+#endif
+}
+], bash_cv_fnm_extmatch=yes, bash_cv_fnm_extmatch=no,
+    [AC_MSG_WARN(cannot check FNM_EXTMATCH if cross compiling -- defaulting to no)
+     bash_cv_fnm_extmatch=no])
+])
+AC_MSG_RESULT($bash_cv_fnm_extmatch)
+if test $bash_cv_fnm_extmatch = yes; then
+AC_DEFINE(HAVE_LIBC_FNM_EXTMATCH)
+fi
+])
+
+AC_DEFUN(BASH_FUNC_POSIX_SETJMP,
+[AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE])
+AC_MSG_CHECKING(for presence of POSIX-style sigsetjmp/siglongjmp)
+AC_CACHE_VAL(bash_cv_func_sigsetjmp,
+[AC_TRY_RUN([
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <sys/types.h>
+#include <signal.h>
+#include <setjmp.h>
+
+main()
+{
+#if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS)
+exit (1);
+#else
+
+int code;
+sigset_t set, oset;
+sigjmp_buf xx;
+
+/* get the mask */
+sigemptyset(&set);
+sigemptyset(&oset);
+sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set);
+sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset);
+
+/* save it */
+code = sigsetjmp(xx, 1);
+if (code)
+  exit(0);     /* could get sigmask and compare to oset here. */
+
+/* change it */
+sigaddset(&set, SIGINT);
+sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL);
+
+/* and siglongjmp */
+siglongjmp(xx, 10);
+exit(1);
+#endif
+}], bash_cv_func_sigsetjmp=present, bash_cv_func_sigsetjmp=missing,
+    [AC_MSG_WARN(cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing)
+     bash_cv_func_sigsetjmp=missing]
+)])
+AC_MSG_RESULT($bash_cv_func_sigsetjmp)
+if test $bash_cv_func_sigsetjmp = present; then
+AC_DEFINE(HAVE_POSIX_SIGSETJMP)
+fi
+])
+
+AC_DEFUN(BASH_FUNC_STRCOLL,
+[
+AC_MSG_CHECKING(whether or not strcoll and strcmp differ)
+AC_CACHE_VAL(bash_cv_func_strcoll_broken,
+[AC_TRY_RUN([
+#include <stdio.h>
+#if defined (HAVE_LOCALE_H)
+#include <locale.h>
+#endif
+
+main(c, v)
+int     c;
+char    *v[];
+{
+        int     r1, r2;
+        char    *deflocale, *defcoll;
+
+#ifdef HAVE_SETLOCALE
+        deflocale = setlocale(LC_ALL, "");
+       defcoll = setlocale(LC_COLLATE, "");
+#endif
+
+#ifdef HAVE_STRCOLL
+       /* These two values are taken from tests/glob-test. */
+        r1 = strcoll("abd", "aXd");
+#else
+       r1 = 0;
+#endif
+        r2 = strcmp("abd", "aXd");
+
+       /* These two should both be greater than 0.  It is permissible for
+          a system to return different values, as long as the sign is the
+          same. */
+
+        /* Exit with 1 (failure) if these two values are both > 0, since
+          this tests whether strcoll(3) is broken with respect to strcmp(3)
+          in the default locale. */
+       exit (r1 > 0 && r2 > 0);
+}
+], bash_cv_func_strcoll_broken=yes, bash_cv_func_strcoll_broken=no,
+   [AC_MSG_WARN(cannot check strcoll if cross compiling -- defaulting to no)
+    bash_cv_func_strcoll_broken=no]
+)])
+AC_MSG_RESULT($bash_cv_func_strcoll_broken)
+if test $bash_cv_func_strcoll_broken = yes; then
+AC_DEFINE(STRCOLL_BROKEN)
+fi
+])
+
+AC_DEFUN(BASH_FUNC_PRINTF_A_FORMAT,
+[AC_MSG_CHECKING([for printf floating point output in hex notation])
+AC_CACHE_VAL(bash_cv_printf_a_format,
+[AC_TRY_RUN([
+#include <stdio.h>
+#include <string.h>
+
+int
+main()
+{
+       double y = 0.0;
+       char abuf[1024];
+
+       sprintf(abuf, "%A", y);
+       exit(strchr(abuf, 'P') == (char *)0);
+}
+], bash_cv_printf_a_format=yes, bash_cv_printf_a_format=no,
+   [AC_MSG_WARN(cannot check printf if cross compiling -- defaulting to no)
+    bash_cv_printf_a_format=no]
+)])
+AC_MSG_RESULT($bash_cv_printf_a_format)
+if test $bash_cv_printf_a_format = yes; then
+AC_DEFINE(HAVE_PRINTF_A_FORMAT)
+fi
+])
+
+AC_DEFUN(BASH_STRUCT_TERMIOS_LDISC,
+[
+AC_CHECK_MEMBER(struct termios.c_line, AC_DEFINE(TERMIOS_LDISC), ,[
+#include <sys/types.h>
+#include <termios.h>
+])
+])
+
+AC_DEFUN(BASH_STRUCT_TERMIO_LDISC,
+[
+AC_CHECK_MEMBER(struct termio.c_line, AC_DEFINE(TERMIO_LDISC), ,[
+#include <sys/types.h>
+#include <termio.h>
+])
+])
+
+dnl
+dnl Like AC_STRUCT_ST_BLOCKS, but doesn't muck with LIBOBJS
+dnl
+dnl sets bash_cv_struct_stat_st_blocks
+dnl
+dnl unused for now; we'll see how AC_CHECK_MEMBERS works
+dnl
+AC_DEFUN(BASH_STRUCT_ST_BLOCKS,
+[
+AC_MSG_CHECKING([for struct stat.st_blocks])
+AC_CACHE_VAL(bash_cv_struct_stat_st_blocks,
+[AC_TRY_COMPILE(
+[
+#include <sys/types.h>
+#include <sys/stat.h>
+],
+[
+main()
+{
+static struct stat a;
+if (a.st_blocks) return 0;
+return 0;
+}
+], bash_cv_struct_stat_st_blocks=yes, bash_cv_struct_stat_st_blocks=no)
+])
+AC_MSG_RESULT($bash_cv_struct_stat_st_blocks)
+if test "$bash_cv_struct_stat_st_blocks" = "yes"; then
+AC_DEFINE(HAVE_STRUCT_STAT_ST_BLOCKS)
+fi
+])
+
+AC_DEFUN(BASH_CHECK_LIB_TERMCAP,
+[
+if test "X$bash_cv_termcap_lib" = "X"; then
+_bash_needmsg=yes
+else
+AC_MSG_CHECKING(which library has the termcap functions)
+_bash_needmsg=
+fi
+AC_CACHE_VAL(bash_cv_termcap_lib,
+[AC_CHECK_LIB(termcap, tgetent, bash_cv_termcap_lib=libtermcap,
+    [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcal_lib=libtinfo,
+        [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses,
+           [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses,
+               bash_cv_termcap_lib=gnutermcap)])])])])
+if test "X$_bash_needmsg" = "Xyes"; then
+AC_MSG_CHECKING(which library has the termcap functions)
+fi
+AC_MSG_RESULT(using $bash_cv_termcap_lib)
+if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then
+LDFLAGS="$LDFLAGS -L./lib/termcap"
+TERMCAP_LIB="./lib/termcap/libtermcap.a"
+TERMCAP_DEP="./lib/termcap/libtermcap.a"
+elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then
+TERMCAP_LIB=-ltermcap
+TERMCAP_DEP=
+elif test $bash_cv_termcap_lib = libtinfo; then
+TERMCAP_LIB=-ltinfo
+TERMCAP_DEP=
+elif test $bash_cv_termcap_lib = libncurses; then
+TERMCAP_LIB=-lncurses
+TERMCAP_DEP=
+else
+TERMCAP_LIB=-lcurses
+TERMCAP_DEP=
+fi
+])
+
+dnl
+dnl Check for the presence of getpeername in libsocket.
+dnl If libsocket is present, check for libnsl and add it to LIBS if
+dnl it's there, since most systems with libsocket require linking
+dnl with libnsl as well.  This should only be called if getpeername
+dnl was not found in libc.
+dnl
+dnl NOTE: IF WE FIND GETPEERNAME, WE ASSUME THAT WE HAVE BIND/CONNECT
+dnl      AS WELL
+dnl
+AC_DEFUN(BASH_CHECK_LIB_SOCKET,
+[
+if test "X$bash_cv_have_socklib" = "X"; then
+_bash_needmsg=
+else
+AC_MSG_CHECKING(for socket library)
+_bash_needmsg=yes
+fi
+AC_CACHE_VAL(bash_cv_have_socklib,
+[AC_CHECK_LIB(socket, getpeername,
+        bash_cv_have_socklib=yes, bash_cv_have_socklib=no, -lnsl)])
+if test "X$_bash_needmsg" = Xyes; then
+  AC_MSG_RESULT($bash_cv_have_socklib)
+  _bash_needmsg=
+fi
+if test $bash_cv_have_socklib = yes; then
+  # check for libnsl, add it to LIBS if present
+  if test "X$bash_cv_have_libnsl" = "X"; then
+    _bash_needmsg=
+  else
+    AC_MSG_CHECKING(for libnsl)
+    _bash_needmsg=yes
+  fi
+  AC_CACHE_VAL(bash_cv_have_libnsl,
+          [AC_CHECK_LIB(nsl, t_open,
+                bash_cv_have_libnsl=yes, bash_cv_have_libnsl=no)])
+  if test "X$_bash_needmsg" = Xyes; then
+    AC_MSG_RESULT($bash_cv_have_libnsl)
+    _bash_needmsg=
+  fi
+  if test $bash_cv_have_libnsl = yes; then
+    LIBS="-lsocket -lnsl $LIBS"
+  else
+    LIBS="-lsocket $LIBS"
+  fi
+  AC_DEFINE(HAVE_LIBSOCKET)
+  AC_DEFINE(HAVE_GETPEERNAME)
 fi
 ])
 
@@ -760,9 +1065,149 @@ AC_DEFINE(STRUCT_DIRENT_HAS_D_FILENO)
 fi
 ])
 
-AC_DEFUN(BASH_REINSTALL_SIGHANDLERS,
+AC_DEFUN(BASH_STRUCT_TIMEVAL,
+[AC_MSG_CHECKING(for struct timeval in sys/time.h and time.h)
+AC_CACHE_VAL(bash_cv_struct_timeval,
+[
+AC_EGREP_HEADER(struct timeval, sys/time.h,
+               bash_cv_struct_timeval=yes,
+               AC_EGREP_HEADER(struct timeval, time.h,
+                       bash_cv_struct_timeval=yes,
+                       bash_cv_struct_timeval=no))
+])
+AC_MSG_RESULT($bash_cv_struct_timeval)
+if test $bash_cv_struct_timeval = yes; then
+  AC_DEFINE(HAVE_TIMEVAL)
+fi
+])
+
+AC_DEFUN(BASH_STRUCT_WINSIZE,
+[AC_MSG_CHECKING(for struct winsize in sys/ioctl.h and termios.h)
+AC_CACHE_VAL(bash_cv_struct_winsize_header,
+[AC_TRY_COMPILE([#include <sys/types.h>
+#include <sys/ioctl.h>], [struct winsize x;],
+  bash_cv_struct_winsize_header=ioctl_h,
+  [AC_TRY_COMPILE([#include <sys/types.h>
+#include <termios.h>], [struct winsize x;],
+  bash_cv_struct_winsize_header=termios_h, bash_cv_struct_winsize_header=other)
+])])
+if test $bash_cv_struct_winsize_header = ioctl_h; then
+  AC_MSG_RESULT(sys/ioctl.h)
+  AC_DEFINE(STRUCT_WINSIZE_IN_SYS_IOCTL)
+elif test $bash_cv_struct_winsize_header = termios_h; then
+  AC_MSG_RESULT(termios.h)
+  AC_DEFINE(STRUCT_WINSIZE_IN_TERMIOS)
+else
+  AC_MSG_RESULT(not found)
+fi
+])
+
+dnl Check type of signal routines (posix, 4.2bsd, 4.1bsd or v7)
+AC_DEFUN(BASH_SYS_SIGNAL_VINTAGE,
+[AC_REQUIRE([AC_TYPE_SIGNAL])
+AC_MSG_CHECKING(for type of signal functions)
+AC_CACHE_VAL(bash_cv_signal_vintage,
+[
+  AC_TRY_LINK([#include <signal.h>],[
+    sigset_t ss;
+    struct sigaction sa;
+    sigemptyset(&ss); sigsuspend(&ss);
+    sigaction(SIGINT, &sa, (struct sigaction *) 0);
+    sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0);
+  ], bash_cv_signal_vintage=posix,
+  [
+    AC_TRY_LINK([#include <signal.h>], [
+       int mask = sigmask(SIGINT);
+       sigsetmask(mask); sigblock(mask); sigpause(mask);
+    ], bash_cv_signal_vintage=4.2bsd,
+    [
+      AC_TRY_LINK([
+       #include <signal.h>
+       RETSIGTYPE foo() { }], [
+               int mask = sigmask(SIGINT);
+               sigset(SIGINT, foo); sigrelse(SIGINT);
+               sighold(SIGINT); sigpause(SIGINT);
+        ], bash_cv_signal_vintage=svr3, bash_cv_signal_vintage=v7
+    )]
+  )]
+)
+])
+AC_MSG_RESULT($bash_cv_signal_vintage)
+if test "$bash_cv_signal_vintage" = posix; then
+AC_DEFINE(HAVE_POSIX_SIGNALS)
+elif test "$bash_cv_signal_vintage" = "4.2bsd"; then
+AC_DEFINE(HAVE_BSD_SIGNALS)
+elif test "$bash_cv_signal_vintage" = svr3; then
+AC_DEFINE(HAVE_USG_SIGHOLD)
+fi
+])
+
+dnl Check if the pgrp of setpgrp() can't be the pid of a zombie process.
+AC_DEFUN(BASH_SYS_PGRP_SYNC,
+[AC_REQUIRE([AC_FUNC_GETPGRP])
+AC_MSG_CHECKING(whether pgrps need synchronization)
+AC_CACHE_VAL(bash_cv_pgrp_pipe,
+[AC_TRY_RUN([
+#ifdef HAVE_UNISTD_H
+#  include <unistd.h>
+#endif
+main()
+{
+# ifdef GETPGRP_VOID
+#  define getpgID()    getpgrp()
+# else
+#  define getpgID()    getpgrp(0)
+#  define setpgid(x,y) setpgrp(x,y)
+# endif
+       int pid1, pid2, fds[2];
+       int status;
+       char ok;
+
+       switch (pid1 = fork()) {
+         case -1:
+           exit(1);
+         case 0:
+           setpgid(0, getpid());
+           exit(0);
+       }
+       setpgid(pid1, pid1);
+
+       sleep(2);       /* let first child die */
+
+       if (pipe(fds) < 0)
+         exit(2);
+
+       switch (pid2 = fork()) {
+         case -1:
+           exit(3);
+         case 0:
+           setpgid(0, pid1);
+           ok = getpgID() == pid1;
+           write(fds[1], &ok, 1);
+           exit(0);
+       }
+       setpgid(pid2, pid1);
+
+       close(fds[1]);
+       if (read(fds[0], &ok, 1) != 1)
+         exit(4);
+       wait(&status);
+       wait(&status);
+       exit(ok ? 0 : 5);
+}
+], bash_cv_pgrp_pipe=no,bash_cv_pgrp_pipe=yes,
+   [AC_MSG_WARN(cannot check pgrp synchronization if cross compiling -- defaulting to no)
+    bash_cv_pgrp_pipe=no])
+])
+AC_MSG_RESULT($bash_cv_pgrp_pipe)
+if test $bash_cv_pgrp_pipe = yes; then
+AC_DEFINE(PGRP_PIPE)
+fi
+])
+
+AC_DEFUN(BASH_SYS_REINSTALL_SIGHANDLERS,
 [AC_REQUIRE([AC_TYPE_SIGNAL])
-AC_REQUIRE([BASH_SIGNAL_CHECK])
+AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE])
 AC_MSG_CHECKING([if signal handlers must be reinstalled when invoked])
 AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers,
 [AC_TRY_RUN([
@@ -818,20 +1263,9 @@ AC_DEFINE(MUST_REINSTALL_SIGHANDLERS)
 fi
 ])
 
-AC_DEFUN(BASH_FUNC_SBRK_DECLARED,
-[AC_MSG_CHECKING(for declaration of sbrk in <unistd.h>)
-AC_CACHE_VAL(bash_cv_sbrk_declared,
-[AC_EGREP_HEADER(sbrk, unistd.h,
- bash_cv_sbrk_declared=yes, bash_cv_sbrk_declared=no)])
-AC_MSG_RESULT($bash_cv_sbrk_declared)
-if test $bash_cv_sbrk_declared = yes; then
-AC_DEFINE(SBRK_DECLARED)
-fi
-])
-
 dnl check that some necessary job control definitions are present
-AC_DEFUN(BASH_JOB_CONTROL_MISSING,
-[AC_REQUIRE([BASH_SIGNAL_CHECK])
+AC_DEFUN(BASH_SYS_JOB_CONTROL_MISSING,
+[AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE])
 AC_MSG_CHECKING(for presence of necessary job control definitions)
 AC_CACHE_VAL(bash_cv_job_control_missing,
 [AC_TRY_RUN([
@@ -939,54 +1373,32 @@ AC_DEFINE(NAMED_PIPES_MISSING)
 fi
 ])
 
-AC_DEFUN(BASH_FUNC_POSIX_SETJMP,
-[AC_REQUIRE([BASH_SIGNAL_CHECK])
-AC_MSG_CHECKING(for presence of POSIX-style sigsetjmp/siglongjmp)
-AC_CACHE_VAL(bash_cv_func_sigsetjmp,
-[AC_TRY_RUN([
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <sys/types.h>
-#include <signal.h>
-#include <setjmp.h>
-
-main()
-{
-#if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS)
-exit (1);
-#else
-
-int code;
-sigset_t set, oset;
-sigjmp_buf xx;
-
-/* get the mask */
-sigemptyset(&set);
-sigemptyset(&oset);
-sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set);
-sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset);
-
-/* save it */
-code = sigsetjmp(xx, 1);
-if (code)
-  exit(0);     /* could get sigmask and compare to oset here. */
-
-/* change it */
-sigaddset(&set, SIGINT);
-sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL);
-
-/* and siglongjmp */
-siglongjmp(xx, 10);
-exit(1);
-#endif
-}], bash_cv_func_sigsetjmp=present, bash_cv_func_sigsetjmp=missing,
-    [AC_MSG_WARN(cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing)
-     bash_cv_func_sigsetjmp=missing]
-)])
-AC_MSG_RESULT($bash_cv_func_sigsetjmp)
-if test $bash_cv_func_sigsetjmp = present; then
-AC_DEFINE(HAVE_POSIX_SIGSETJMP)
+AC_DEFUN(BASH_SYS_DEFAULT_MAIL_DIR,
+[AC_MSG_CHECKING(for default mail directory)
+AC_CACHE_VAL(bash_cv_mail_dir,
+[if test -d /var/mail; then
+   bash_cv_mail_dir=/var/mail
+ elif test -d /usr/mail; then
+   bash_cv_mail_dir=/usr/mail
+ elif test -d /var/spool/mail; then
+   bash_cv_mail_dir=/var/spool/mail
+ elif test -d /usr/spool/mail; then
+   bash_cv_mail_dir=/usr/spool/mail
+ else
+   bash_cv_mail_dir=unknown
+ fi
+])
+AC_MSG_RESULT($bash_cv_mail_dir)
+if test $bash_cv_mail_dir = "/var/mail"; then
+   AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "/var/mail")
+elif test $bash_cv_mail_dir = "/usr/mail"; then
+   AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "/usr/mail")
+elif test $bash_cv_mail_dir = "/var/spool/mail"; then
+   AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "/var/spool/mail")
+elif test $bash_cv_mail_dir = "/usr/spool/mail"; then
+   AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "/usr/spool/mail")
+else
+   AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "unknown")
 fi
 ])
 
@@ -1002,27 +1414,6 @@ AC_DEFINE(GWINSZ_IN_SYS_IOCTL)
 fi
 ])
 
-AC_DEFUN(BASH_STRUCT_WINSIZE,
-[AC_MSG_CHECKING(for struct winsize in sys/ioctl.h and termios.h)
-AC_CACHE_VAL(bash_cv_struct_winsize_header,
-[AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/ioctl.h>], [struct winsize x;],
-  bash_cv_struct_winsize_header=ioctl_h,
-  [AC_TRY_COMPILE([#include <sys/types.h>
-#include <termios.h>], [struct winsize x;],
-  bash_cv_struct_winsize_header=termios_h, bash_cv_struct_winsize_header=other)
-])])
-if test $bash_cv_struct_winsize_header = ioctl_h; then
-  AC_MSG_RESULT(sys/ioctl.h)
-  AC_DEFINE(STRUCT_WINSIZE_IN_SYS_IOCTL)
-elif test $bash_cv_struct_winsize_header = termios_h; then
-  AC_MSG_RESULT(termios.h)
-  AC_DEFINE(STRUCT_WINSIZE_IN_TERMIOS)
-else
-  AC_MSG_RESULT(not found)
-fi
-])
-
 AC_DEFUN(BASH_HAVE_TIOCSTAT,
 [AC_MSG_CHECKING(for TIOCSTAT in sys/ioctl.h)
 AC_CACHE_VAL(bash_cv_tiocstat_in_ioctl,
@@ -1053,7 +1444,7 @@ dnl require a definition of speed_t each time <termcap.h> is included,
 dnl but you can only get speed_t if you include <termios.h> (on some
 dnl versions) or <sys/types.h> (on others).
 dnl
-AC_DEFUN(BASH_MISC_SPEED_T,
+AC_DEFUN(BASH_CHECK_SPEED_T,
 [AC_MSG_CHECKING(for speed_t in sys/types.h)
 AC_CACHE_VAL(bash_cv_speed_t_in_sys_types,
 [AC_TRY_COMPILE([#include <sys/types.h>], [speed_t x;],
@@ -1120,115 +1511,10 @@ if test $bash_cv_dev_stdin = "present"; then
 fi
 ])
 
-dnl
-dnl Check for the presence of getpeername in libsocket.
-dnl If libsocket is present, check for libnsl and add it to LIBS if
-dnl it's there, since most systems with libsocket require linking
-dnl with libnsl as well.  This should only be called if getpeername
-dnl was not found in libc.
-dnl
-dnl NOTE: IF WE FIND GETPEERNAME, WE ASSUME THAT WE HAVE BIND/CONNECT
-dnl      AS WELL
-dnl
-AC_DEFUN(BASH_CHECK_SOCKLIB,
-[
-if test "X$bash_cv_have_socklib" = "X"; then
-_bash_needmsg=
-else
-AC_MSG_CHECKING(for socket library)
-_bash_needmsg=yes
-fi
-AC_CACHE_VAL(bash_cv_have_socklib,
-[AC_CHECK_LIB(socket, getpeername,
-        bash_cv_have_socklib=yes, bash_cv_have_socklib=no, -lnsl)])
-if test "X$_bash_needmsg" = Xyes; then
-  AC_MSG_RESULT($bash_cv_have_socklib)
-  _bash_needmsg=
-fi
-if test $bash_cv_have_socklib = yes; then
-  # check for libnsl, add it to LIBS if present
-  if test "X$bash_cv_have_libnsl" = "X"; then
-    _bash_needmsg=
-  else
-    AC_MSG_CHECKING(for libnsl)
-    _bash_needmsg=yes
-  fi
-  AC_CACHE_VAL(bash_cv_have_libnsl,
-          [AC_CHECK_LIB(nsl, t_open,
-                bash_cv_have_libnsl=yes, bash_cv_have_libnsl=no)])
-  if test "X$_bash_needmsg" = Xyes; then
-    AC_MSG_RESULT($bash_cv_have_libnsl)
-    _bash_needmsg=
-  fi
-  if test $bash_cv_have_libnsl = yes; then
-    LIBS="-lsocket -lnsl $LIBS"
-  else
-    LIBS="-lsocket $LIBS"
-  fi
-  AC_DEFINE(HAVE_LIBSOCKET)
-  AC_DEFINE(HAVE_GETPEERNAME)
-fi
-])
-
-dnl
-dnl This needs BASH_CHECK_SOCKLIB, but since that's not called on every
-dnl system, we can't use AC_PREREQ
-dnl
-AC_DEFUN(BASH_FUNC_GETHOSTBYNAME,
-[if test "X$bash_cv_have_gethostbyname" = "X"; then
-_bash_needmsg=yes
-else
-AC_MSG_CHECKING(for gethostbyname in socket library)
-_bash_needmsg=
-fi
-AC_CACHE_VAL(bash_cv_have_gethostbyname,
-[AC_TRY_LINK([#include <netdb.h>],
-[ struct hostent *hp;
-  hp = gethostbyname("localhost");
-], bash_cv_have_gethostbyname=yes, bash_cv_have_gethostbyname=no)]
-)
-if test "X$_bash_needmsg" = Xyes; then
-    AC_MSG_CHECKING(for gethostbyname in socket library)
-fi
-AC_MSG_RESULT($bash_cv_have_gethostbyname)
-if test "$bash_cv_have_gethostbyname" = yes; then
-AC_DEFINE(HAVE_GETHOSTBYNAME)
-fi
-])
-
-AC_DEFUN(BASH_DEFAULT_MAIL_DIR,
-[AC_MSG_CHECKING(for default mail directory)
-AC_CACHE_VAL(bash_cv_mail_dir,
-[if test -d /var/mail; then
-   bash_cv_mail_dir=/var/mail
- elif test -d /usr/mail; then
-   bash_cv_mail_dir=/usr/mail
- elif test -d /var/spool/mail; then
-   bash_cv_mail_dir=/var/spool/mail
- elif test -d /usr/spool/mail; then
-   bash_cv_mail_dir=/usr/spool/mail
- else
-   bash_cv_mail_dir=unknown
- fi
-])
-AC_MSG_RESULT($bash_cv_mail_dir)
-if test $bash_cv_mail_dir = "/var/mail"; then
-   AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "/var/mail")
-elif test $bash_cv_mail_dir = "/usr/mail"; then
-   AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "/usr/mail")
-elif test $bash_cv_mail_dir = "/var/spool/mail"; then
-   AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "/var/spool/mail")
-elif test $bash_cv_mail_dir = "/usr/spool/mail"; then
-   AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "/usr/spool/mail")
-else
-   AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "unknown")
-fi
-])
-
 dnl
 dnl Check if HPUX needs _KERNEL defined for RLIMIT_* definitions
 dnl
-AC_DEFUN(BASH_KERNEL_RLIMIT_CHECK,
+AC_DEFUN(BASH_CHECK_KERNEL_RLIMIT,
 [AC_MSG_CHECKING([whether $host_os needs _KERNEL for RLIMIT defines])
 AC_CACHE_VAL(bash_cv_kernel_rlimit,
 [AC_TRY_COMPILE([
@@ -1256,145 +1542,6 @@ AC_DEFINE(RLIMIT_NEEDS_KERNEL)
 fi
 ])
 
-AC_DEFUN(BASH_FUNC_STRCOLL,
-[
-AC_MSG_CHECKING(whether or not strcoll and strcmp differ)
-AC_CACHE_VAL(bash_cv_func_strcoll_broken,
-[AC_TRY_RUN([
-#include <stdio.h>
-#if defined (HAVE_LOCALE_H)
-#include <locale.h>
-#endif
-
-main(c, v)
-int     c;
-char    *v[];
-{
-        int     r1, r2;
-        char    *deflocale, *defcoll;
-
-#ifdef HAVE_SETLOCALE
-        deflocale = setlocale(LC_ALL, "");
-       defcoll = setlocale(LC_COLLATE, "");
-#endif
-
-#ifdef HAVE_STRCOLL
-       /* These two values are taken from tests/glob-test. */
-        r1 = strcoll("abd", "aXd");
-#else
-       r1 = 0;
-#endif
-        r2 = strcmp("abd", "aXd");
-
-       /* These two should both be greater than 0.  It is permissible for
-          a system to return different values, as long as the sign is the
-          same. */
-
-        /* Exit with 1 (failure) if these two values are both > 0, since
-          this tests whether strcoll(3) is broken with respect to strcmp(3)
-          in the default locale. */
-       exit (r1 > 0 && r2 > 0);
-}
-], bash_cv_func_strcoll_broken=yes, bash_cv_func_strcoll_broken=no,
-   [AC_MSG_WARN(cannot check strcoll if cross compiling -- defaulting to no)
-    bash_cv_func_strcoll_broken=no]
-)])
-AC_MSG_RESULT($bash_cv_func_strcoll_broken)
-if test $bash_cv_func_strcoll_broken = yes; then
-AC_DEFINE(STRCOLL_BROKEN)
-fi
-])
-
-dnl
-dnl If available, use support for large files unless the user specified
-dnl one of the CPPFLAGS, LDFLAGS, or LIBS variables (<eggert@twinsun.com>
-dnl via GNU patch 2.5)
-dnl
-AC_DEFUN(BASH_LARGE_FILE_SUPPORT,
-[AC_MSG_CHECKING(whether large file support needs explicit enabling)
-ac_getconfs=''
-ac_result=yes
-ac_set=''
-ac_shellvars='CPPFLAGS LDFLAGS LIBS'
-for ac_shellvar in $ac_shellvars; do
-  case $ac_shellvar in
-  CPPFLAGS) ac_lfsvar=LFS_CFLAGS ac_lfs64var=LFS64_CFLAGS ;;
-  *) ac_lfsvar=LFS_$ac_shellvar ac_lfs64var=LFS64_$ac_shellvar ;;
-  esac
-  eval test '"${'$ac_shellvar'+set}"' = set && ac_set=$ac_shellvar
-  (getconf $ac_lfsvar) >/dev/null 2>&1 || { ac_result=no; break; }
-  ac_getconf=`getconf $ac_lfsvar`
-  ac_getconf64=`getconf $ac_lfs64var`
-  ac_getconfs=$ac_getconfs$ac_getconf\ $ac_getconf64
-  eval ac_test_$ac_shellvar="\$ac_getconf\ \$ac_getconf64"
-done
-case "$ac_result$ac_getconfs" in
-yes) ac_result=no ;;
-esac
-case "$ac_result$ac_set" in
-yes?*) ac_result="yes, but $ac_set is already set, so use its settings"
-esac
-AC_MSG_RESULT($ac_result)
-case $ac_result in
-yes)
-  for ac_shellvar in $ac_shellvars; do
-    eval $ac_shellvar=\$ac_test_$ac_shellvar
-  done ;;
-esac
-])
-
-dnl
-dnl AC_SYS_RESTARTABLE_SYSCALLS tests only for restarted system calls
-dnl after a signal handler has been installed with signal().  Since
-dnl Bash uses sigaction() if it is available, we need to check whether
-dnl or not a signal handler installed with sigaction and SA_RESTART
-dnl causes system calls to be restarted after the signal is caught
-dnl
-AC_DEFUN(BASH_SYS_RESTARTABLE_SYSCALLS,
-[AC_REQUIRE([BASH_SIGNAL_CHECK])
-AC_CACHE_CHECK(whether posix sigaction restarts system calls by default,
-bash_cv_sys_restartable_syscalls,
-[AC_TRY_RUN(
-[/* Exit 0 (true) if wait returns something other than -1,
-   i.e. the pid of the child, which means that wait was restarted
-   after getting the signal.  */
-#ifdef HAVE_UNISTD_H
-#  include <unistd.h>
-#endif
-#include <sys/types.h>
-#include <signal.h>
-static int caught = 0;
-void ucatch (isig) int isig; { caught = 1; }
-main ()
-{
-#if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS)
-  exit (1);
-#else
-  struct sigaction act, oact;
-  int i, status;
-
-  act.sa_handler = ucatch;
-  /* Might want to add SA_RESTART here, but bash's set_signal_handler
-     does not. */
-  act.sa_flags = 0;
-  sigemptyset(&act.sa_mask);
-  sigemptyset(&oact.sa_mask);
-  i = fork ();
-  /* A possible race condition here, but in practice it never happens. */
-  if (i == 0) { sleep (3); kill (getppid (), SIGINT); sleep (3); exit (0); }
-  sigaction(SIGINT, &act, &oact);
-  status = wait(&i);
-  if (status == -1) wait(&i);
-  exit (status == -1);
-#endif
-}
-], bash_cv_sys_restartable_syscalls=yes, bash_cv_sys_restartable_syscalls=no,
-   AC_MSG_WARN(cannot check restartable syscalls if cross compiling))
-])
-if test $bash_cv_sys_restartable_syscalls = yes; then
-  AC_DEFINE(HAVE_RESTARTABLE_SYSCALLS)
-fi
-])
 dnl
 dnl Check for 64-bit off_t -- used for malloc alignment
 dnl
@@ -1415,22 +1562,6 @@ if test $bash_cv_off_t_64 = yes; then
         AC_DEFINE(HAVE_OFF_T_64)
 fi])
 
-AC_DEFUN(BASH_STRUCT_TIMEVAL,
-[AC_MSG_CHECKING(for struct timeval in sys/time.h and time.h)
-AC_CACHE_VAL(bash_cv_struct_timeval,
-[
-AC_EGREP_HEADER(struct timeval, sys/time.h,
-               bash_cv_struct_timeval=yes,
-               AC_EGREP_HEADER(struct timeval, time.h,
-                       bash_cv_struct_timeval=yes,
-                       bash_cv_struct_timeval=no))
-])
-AC_MSG_RESULT($bash_cv_struct_timeval)
-if test $bash_cv_struct_timeval = yes; then
-  AC_DEFINE(HAVE_TIMEVAL)
-fi
-])
-
 AC_DEFUN(BASH_CHECK_RTSIGS,
 [AC_MSG_CHECKING(for unusable real-time signals due to large values)
 AC_CACHE_VAL(bash_cv_unusable_rtsigs,
@@ -1461,3 +1592,115 @@ if test $bash_cv_unusable_rtsigs = yes; then
 AC_DEFINE(UNUSABLE_RT_SIGNALS)
 fi
 ])
+
+dnl need: prefix exec_prefix libdir includedir CC TERMCAP_LIB
+dnl require:
+dnl    AC_PROG_CC
+dnl    BASH_CHECK_LIB_TERMCAP
+
+AC_DEFUN(RL_LIB_READLINE_VERSION,
+[
+AC_REQUIRE([BASH_CHECK_LIB_TERMCAP])
+
+AC_MSG_CHECKING([version of installed readline library])
+
+# What a pain in the ass this is.
+
+# save cpp and ld options
+_save_CFLAGS="$CFLAGS"
+_save_LDFLAGS="$LDFLAGS"
+_save_LIBS="$LIBS"
+
+# Don't set ac_cv_rl_prefix if the caller has already assigned a value.  This
+# allows the caller to do something like $_rl_prefix=$withval if the user
+# specifies --with-installed-readline=PREFIX as an argument to configure
+
+if test -z "$ac_cv_rl_prefix"; then
+test "x$prefix" = xNONE && ac_cv_rl_prefix=$ac_default_prefix || ac_cv_rl_prefix=${prefix}
+fi
+
+eval ac_cv_rl_includedir=${ac_cv_rl_prefix}/include
+eval ac_cv_rl_libdir=${ac_cv_rl_prefix}/lib
+
+LIBS="$LIBS -lreadline ${TERMCAP_LIB}"
+CFLAGS="$CFLAGS -I${ac_cv_rl_includedir}"
+LDFLAGS="$LDFLAGS -L${ac_cv_rl_libdir}"
+
+AC_TRY_RUN([
+#include <stdio.h>
+#include <readline/readline.h>
+
+main()
+{
+       FILE *fp;
+       fp = fopen("conftest.rlv", "w");
+       if (fp == 0) exit(1);
+       fprintf(fp, "%s\n", rl_library_version ? rl_library_version : "0.0");
+       fclose(fp);
+       exit(0);
+}
+],
+ac_cv_rl_version=`cat conftest.rlv`,
+ac_cv_rl_version='0.0',
+ac_cv_rl_version='4.2')
+
+CFLAGS="$_save_CFLAGS"
+LDFLAGS="$_save_LDFLAGS"
+LIBS="$_save_LIBS"
+
+RL_MAJOR=0
+RL_MINOR=0
+
+# (
+case "$ac_cv_rl_version" in
+2*|3*|4*|5*|6*|7*|8*|9*)
+       RL_MAJOR=`echo $ac_cv_rl_version | sed 's:\..*$::'`
+       RL_MINOR=`echo $ac_cv_rl_version | sed -e 's:^.*\.::' -e 's:[a-zA-Z]*$::'`
+       ;;
+esac
+
+# (((
+case $RL_MAJOR in
+[[0-9][0-9]])  _RL_MAJOR=$RL_MAJOR ;;
+[[0-9]])       _RL_MAJOR=0$RL_MAJOR ;;
+*)             _RL_MAJOR=00 ;;
+esac
+
+# (((
+case $RL_MINOR in
+[[0-9][0-9]])  _RL_MINOR=$RL_MINOR ;;
+[[0-9]])       _RL_MINOR=0$RL_MINOR ;;
+*)             _RL_MINOR=00 ;;
+esac
+
+RL_VERSION="0x${_RL_MAJOR}${_RL_MINOR}"
+
+# Readline versions greater than 4.2 have these defines in readline.h
+
+if test $ac_cv_rl_version = '0.0' ; then
+       AC_MSG_WARN([Could not test version of installed readline library.])
+elif test $RL_MAJOR -gt 4 || { test $RL_MAJOR = 4 && test $RL_MINOR -gt 2 ; } ; then
+       # set these for use by the caller
+       RL_PREFIX=$ac_cv_rl_prefix
+       RL_LIBDIR=$ac_cv_rl_libdir
+       RL_INCLUDEDIR=$ac_cv_rl_includedir
+       AC_MSG_RESULT($ac_cv_rl_version)
+else
+
+AC_DEFINE_UNQUOTED(RL_READLINE_VERSION, $RL_VERSION, [encoded version of the installed readline library])
+AC_DEFINE_UNQUOTED(RL_VERSION_MAJOR, $RL_MAJOR, [major version of installed readline library])
+AC_DEFINE_UNQUOTED(RL_VERSION_MINOR, $RL_MINOR, [minor version of installed readline library])
+
+AC_SUBST(RL_VERSION)
+AC_SUBST(RL_MAJOR)
+AC_SUBST(RL_MINOR)
+
+# set these for use by the caller
+RL_PREFIX=$ac_cv_rl_prefix
+RL_LIBDIR=$ac_cv_rl_libdir
+RL_INCLUDEDIR=$ac_cv_rl_includedir
+
+AC_MSG_RESULT($ac_cv_rl_version)
+
+fi
+])
index 3a354f28ddf2708a08559ab7afa5a5efe89687c4..db13cd234bdf216accbe666718f5e63dab4001cc 100644 (file)
 
 /* String conversion functions. */
 extern int atoi ();
-extern long int atol ();
 
 extern double atof ();
 extern double strtod ();
 
 /* Memory allocation functions. */
-extern char *malloc ();
-extern char *realloc ();
+/* Generic pointer type. */
+#ifndef PTR_T
+
+#if defined (__STDC__)
+#  define PTR_T        void *
+#else
+#  define PTR_T char *
+#endif
+
+#endif /* PTR_T */
+
+extern PTR_T malloc ();
+extern PTR_T realloc ();
 extern void free ();
 
 /* Other miscellaneous functions. */
diff --git a/bind.c b/bind.c
index 74fa6f2ae49687e0dca1d75275586adfc4104f90..d429177d1a906a1e45bfa844ca7997543419de64 100644 (file)
--- a/bind.c
+++ b/bind.c
@@ -68,9 +68,9 @@ extern char *strchr (), *strrchr ();
 /* Variables exported by this file. */
 Keymap rl_binding_keymap;
 
-static int _rl_read_init_file __P((const char *, int));
-static int glean_key_from_name __P((char *));
-static int substring_member_of_array __P((char *, const char **));
+static int _rl_read_init_file PARAMS((const char *, int));
+static int glean_key_from_name PARAMS((char *));
+static int substring_member_of_array PARAMS((char *, const char **));
 
 static int currently_reading_init_file;
 
@@ -255,7 +255,7 @@ rl_generic_bind (type, keyseq, data, map)
       return -1;
     }
 
-  keys = xmalloc (1 + (2 * strlen (keyseq)));
+  keys = (char *)xmalloc (1 + (2 * strlen (keyseq)));
 
   /* Translate the ASCII representation of KEYSEQ into an array of
      characters.  Stuff the characters into KEYS, and the length of
@@ -269,7 +269,7 @@ rl_generic_bind (type, keyseq, data, map)
   /* Bind keys, making new keymaps as necessary. */
   for (i = 0; i < keys_len; i++)
     {
-      int ic = (int) ((unsigned char)keys[i]);
+      unsigned char ic = keys[i];
 
       if (_rl_convert_meta_chars_to_ascii && META_CHAR (ic))
        {
@@ -393,16 +393,16 @@ rl_translate_keyseq (seq, array, len)
              for (temp = 2, c -= '0'; ISOCTAL (seq[i]) && temp--; i++)
                c = (c * 8) + OCTVALUE (seq[i]);
              i--;      /* auto-increment in for loop */
-             array[l++] = c % (largest_char + 1);
+             array[l++] = c & largest_char;
              break;
            case 'x':
              i++;
-             for (temp = 3, c = 0; isxdigit (seq[i]) && temp--; i++)
+             for (temp = 2, c = 0; ISXDIGIT ((unsigned char)seq[i]) && temp--; i++)
                c = (c * 16) + HEXVALUE (seq[i]);
-             if (temp == 3)
+             if (temp == 2)
                c = 'x';
              i--;      /* auto-increment in for loop */
-             array[l++] = c % (largest_char + 1);
+             array[l++] = c & largest_char;
              break;
            default:    /* backslashes before non-special chars just add the char */
              array[l++] = c;
@@ -472,7 +472,7 @@ _rl_untranslate_macro_value (seq)
   char *ret, *r, *s;
   int c;
 
-  r = ret = xmalloc (7 * strlen (seq) + 1);
+  r = ret = (char *)xmalloc (7 * strlen (seq) + 1);
   for (s = seq; *s; s++)
     {
       c = *s;
@@ -547,7 +547,7 @@ rl_function_of_keyseq (keyseq, map, type)
 
   for (i = 0; keyseq && keyseq[i]; i++)
     {
-      int ic = keyseq[i];
+      unsigned char ic = keyseq[i];
 
       if (META_CHAR (ic) && _rl_convert_meta_chars_to_ascii)
        {
@@ -782,7 +782,7 @@ _rl_init_file_error (msg)
 /*                                                                 */
 /* **************************************************************** */
 
-typedef int _rl_parser_func_t __P((char *));
+typedef int _rl_parser_func_t PARAMS((char *));
 
 /* Things that mean `Control'. */
 const char *_rl_possible_control_prefixes[] = {
@@ -1145,7 +1145,7 @@ rl_parse_and_bind (string)
       char *seq;
       register int j, k, passc;
 
-      seq = xmalloc (1 + strlen (string));
+      seq = (char *)xmalloc (1 + strlen (string));
       for (j = 1, k = passc = 0; string[j]; j++)
        {
          /* Allow backslash to quote characters, but leave them in place.
@@ -1203,7 +1203,7 @@ rl_parse_and_bind (string)
   /* Temporary.  Handle old-style keyname with macro-binding. */
   if (*funname == '\'' || *funname == '"')
     {
-      unsigned char useq[2];
+      char useq[2];
       int fl = strlen (funname);
 
       useq[0] = key; useq[1] = '\0';
@@ -1245,10 +1245,12 @@ static struct {
   { "disable-completion",      &rl_inhibit_completion,         0 },
   { "enable-keypad",           &_rl_enable_keypad,             0 },
   { "expand-tilde",            &rl_complete_with_tilde_expansion, 0 },
+  { "history-preserve-point",  &_rl_history_preserve_point,    0 },
   { "horizontal-scroll-mode",  &_rl_horizontal_scroll_mode,    0 },
   { "input-meta",              &_rl_meta_flag,                 0 },
   { "mark-directories",                &_rl_complete_mark_directories, 0 },
   { "mark-modified-lines",     &_rl_mark_modified_lines,       0 },
+  { "match-hidden-files",      &_rl_match_hidden_files,        0 },
   { "meta-flag",               &_rl_meta_flag,                 0 },
   { "output-meta",             &_rl_output_meta_chars,         0 },
   { "prefer-visible-bell",     &_rl_prefer_visible_bell,       V_SPECIAL },
@@ -1294,7 +1296,7 @@ hack_special_boolean_var (i)
     }
 }
 
-typedef int _rl_sv_func_t __P((const char *));
+typedef int _rl_sv_func_t PARAMS((const char *));
 
 /* These *must* correspond to the array indices for the appropriate
    string variable.  (Though they're not used right now.) */
@@ -1308,12 +1310,12 @@ typedef int _rl_sv_func_t __P((const char *));
 #define V_INT          2
 
 /* Forward declarations */
-static int sv_bell_style __P((const char *));
-static int sv_combegin __P((const char *));
-static int sv_compquery __P((const char *));
-static int sv_editmode __P((const char *));
-static int sv_isrchterm __P((const char *));
-static int sv_keymap __P((const char *));
+static int sv_bell_style PARAMS((const char *));
+static int sv_combegin PARAMS((const char *));
+static int sv_compquery PARAMS((const char *));
+static int sv_editmode PARAMS((const char *));
+static int sv_isrchterm PARAMS((const char *));
+static int sv_keymap PARAMS((const char *));
 
 static struct {
   const char *name;
@@ -1446,24 +1448,22 @@ sv_keymap (value)
   return 1;
 }
 
-#define _SET_BELL(v)   do { _rl_bell_preference = v; return 0; } while (0)
-
 static int
 sv_bell_style (value)
      const char *value;
 {
   if (value == 0 || *value == '\0')
-    _SET_BELL (AUDIBLE_BELL);
+    _rl_bell_preference = AUDIBLE_BELL;
   else if (_rl_stricmp (value, "none") == 0 || _rl_stricmp (value, "off") == 0)
-    _SET_BELL (NO_BELL);
+    _rl_bell_preference = NO_BELL;
   else if (_rl_stricmp (value, "audible") == 0 || _rl_stricmp (value, "on") == 0)
-    _SET_BELL (AUDIBLE_BELL);
+    _rl_bell_preference = AUDIBLE_BELL;
   else if (_rl_stricmp (value, "visible") == 0)
-    _SET_BELL (VISIBLE_BELL);
+    _rl_bell_preference = VISIBLE_BELL;
   else
     return 1;
+  return 0;
 }
-#undef _SET_BELL
 
 static int
 sv_isrchterm (value)
@@ -1493,7 +1493,7 @@ sv_isrchterm (value)
   v[end] = '\0';
 
   /* The value starts at v + beg.  Translate it into a character string. */
-  _rl_isearch_terminators = (unsigned char *)xmalloc (2 * strlen (v) + 1);
+  _rl_isearch_terminators = (char *)xmalloc (2 * strlen (v) + 1);
   rl_translate_keyseq (v + beg, _rl_isearch_terminators, &end);
   _rl_isearch_terminators[end] = '\0';
 
@@ -1751,7 +1751,7 @@ rl_invoking_keyseqs_in_map (function, map)
              if (result_index + 2 > result_size)
                {
                  result_size += 10;
-                 result = (char **) xrealloc (result, result_size * sizeof (char *));
+                 result = (char **)xrealloc (result, result_size * sizeof (char *));
                }
 
              result[result_index++] = keyname;
@@ -1803,7 +1803,7 @@ rl_invoking_keyseqs_in_map (function, map)
                if (result_index + 2 > result_size)
                  {
                    result_size += 10;
-                   result = (char **) xrealloc (result, result_size * sizeof (char *));
+                   result = (char **)xrealloc (result, result_size * sizeof (char *));
                  }
 
                result[result_index++] = keyname;
@@ -1951,7 +1951,7 @@ _rl_macro_dumper_internal (print_readably, map, prefix)
          prefix_len = prefix ? strlen (prefix) : 0;
          if (key == ESC)
            {
-             keyname = xmalloc (3 + prefix_len);
+             keyname = (char *)xmalloc (3 + prefix_len);
              if (prefix)
                strcpy (keyname, prefix);
              keyname[prefix_len] = '\\';
@@ -1963,7 +1963,7 @@ _rl_macro_dumper_internal (print_readably, map, prefix)
              keyname = _rl_get_keyname (key);
              if (prefix)
                {
-                 out = xmalloc (strlen (keyname) + prefix_len + 1);
+                 out = (char *)xmalloc (strlen (keyname) + prefix_len + 1);
                  strcpy (out, prefix);
                  strcpy (out + prefix_len, keyname);
                  free (keyname);
index 9ddf9f1b69c95d07c8266a0e9701355af607a5c7..a8f4323c929f467c905b4781e867c641908a1646 100644 (file)
 #if defined (READLINE_CALLBACKS)
 
 #include <sys/types.h>
+
+#ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+#else
+#  include "ansi_stdlib.h"
+#endif
+
 #include <stdio.h>
 
 /* System-specific feature definitions and include files. */
index aec704d626537bd641bf56e0981cffac90a41b8f..33ee512f37ceb47be0f5ca96c24b4447591583fb 100644 (file)
 
 #if defined (HAVE_CONFIG_H)
 #  if defined (HAVE_STRING_H)
+#    if ! defined (STDC_HEADERS) && defined (HAVE_MEMORY_H)
+#      include <memory.h>
+#    endif
 #    include <string.h>
-#  else
-#    include <strings.h>
 #  endif /* HAVE_STRING_H */
+#  if defined (HAVE_STRINGS_H)
+#    include <strings.h>
+#  endif /* HAVE_STRINGS_H */
 #else
 #  include <string.h>
 #endif /* !HAVE_CONFIG_H */
 #define UNMETA(c) ((c) & (~meta_character_bit))
 #define UNCTRL(c) _rl_to_upper(((c)|control_character_bit))
 
-/* Old versions
-#define _rl_lowercase_p(c) (((c) > ('a' - 1) && (c) < ('z' + 1)))
-#define _rl_uppercase_p(c) (((c) > ('A' - 1) && (c) < ('Z' + 1)))
-#define _rl_digit_p(c)  ((c) >= '0' && (c) <= '9')
-*/
+#if defined STDC_HEADERS || (!defined (isascii) && !defined (HAVE_ISASCII))
+#  define IN_CTYPE_DOMAIN(c) 1
+#else
+#  define IN_CTYPE_DOMAIN(c) isascii(c)
+#endif
+
+#if !defined (isxdigit) && !defined (HAVE_ISXDIGIT)
+#  define isxdigit(c)   (isdigit((c)) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F'))
+#endif
+
+#define NON_NEGATIVE(c)        ((unsigned char)(c) == (c))
 
-#define _rl_lowercase_p(c) (islower(c))
-#define _rl_uppercase_p(c) (isupper(c))
-#define _rl_digit_p(x)  (isdigit (x))
+#define ISALNUM(c)     (IN_CTYPE_DOMAIN (c) && isalnum (c))
+#define ISALPHA(c)     (IN_CTYPE_DOMAIN (c) && isalpha (c))
+#define ISDIGIT(c)     (IN_CTYPE_DOMAIN (c) && isdigit (c))
+#define ISLOWER(c)     (IN_CTYPE_DOMAIN (c) && islower (c))
+#define ISPRINT(c)     (IN_CTYPE_DOMAIN (c) && isprint (c))
+#define ISUPPER(c)     (IN_CTYPE_DOMAIN (c) && isupper (c))
+#define ISXDIGIT(c)    (IN_CTYPE_DOMAIN (c) && isxdigit (c))
 
-#define _rl_pure_alphabetic(c) (_rl_lowercase_p(c) || _rl_uppercase_p(c))
-#define ALPHABETIC(c)  (_rl_lowercase_p(c) || _rl_uppercase_p(c) || _rl_digit_p(c))
+#define _rl_lowercase_p(c)     (NON_NEGATIVE(c) && ISLOWER(c))
+#define _rl_uppercase_p(c)     (NON_NEGATIVE(c) && ISUPPER(c))
+#define _rl_digit_p(c)         ((c) >= '0' && (c) <= '9')
 
-/* Old versions
-#  define _rl_to_upper(c) (_rl_lowercase_p(c) ? ((c) - 32) : (c))
-#  define _rl_to_lower(c) (_rl_uppercase_p(c) ? ((c) + 32) : (c))
-*/
+#define _rl_pure_alphabetic(c) (NON_NEGATIVE(c) && ISALPHA(c))
+#define ALPHABETIC(c)          (NON_NEGATIVE(c) && ISALNUM(c))
 
 #ifndef _rl_to_upper
-#  define _rl_to_upper(c) (islower(c) ? toupper(c) : (c))
-#  define _rl_to_lower(c) (isupper(c) ? tolower(c) : (c))
+#  define _rl_to_upper(c) (_rl_lowercase_p(c) ? toupper((unsigned char)c) : (c))
+#  define _rl_to_lower(c) (_rl_uppercase_p(c) ? tolower((unsigned char)c) : (c))
 #endif
 
 #ifndef _rl_digit_value
-#define _rl_digit_value(x) ((x) - '0')
+#  define _rl_digit_value(x) ((x) - '0')
 #endif
 
+#ifndef _rl_isident
+#  define _rl_isident(c) (ISALNUM(c) || (c) == '_')
+#endif
+
+#ifndef ISOCTAL
+#  define ISOCTAL(c)   ((c) >= '0' && (c) <= '7')
+#endif
+#define OCTVALUE(c)    ((c) - '0')
+
+#define HEXVALUE(c) \
+  (((c) >= 'a' && (c) <= 'f') \
+       ? (c)-'a'+10 \
+       : (c) >= 'A' && (c) <= 'F' ? (c)-'A'+10 : (c)-'0')
+
 #ifndef NEWLINE
 #define NEWLINE '\n'
 #endif
 #endif
 #define ESC CTRL('[')
 
-#ifndef ISOCTAL
-#define ISOCTAL(c)      ((c) >= '0' && (c) <= '7')
-#endif
-#define OCTVALUE(c)     ((c) - '0')
-
-#ifndef isxdigit
-#  define isxdigit(c)   (isdigit((c)) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F'))
-#endif
-
-#define HEXVALUE(c) \
-  (((c) >= 'a' && (c) <= 'f') \
-       ? (c)-'a'+10 \
-       : (c) >= 'A' && (c) <= 'F' ? (c)-'A'+10 : (c)-'0')
-
 #endif  /* _CHARDEFS_H_ */
index 1f41559625b971b9ec282154a42d5af4a659d3ee..a66d210fd2eb3005c992978ae2bf78d242366169 100644 (file)
--- a/compat.c
+++ b/compat.c
 #include "rlstdc.h"
 #include "rltypedefs.h"
 
-extern void rl_free_undo_list __P((void));
-extern int rl_maybe_save_line __P((void));
-extern int rl_maybe_unsave_line __P((void));
-extern int rl_maybe_replace_line __P((void));
-
-extern int rl_crlf __P((void));
-extern int rl_ding __P((void));
-extern int rl_alphabetic __P((int));
-
-extern char **rl_completion_matches __P((const char *, rl_compentry_func_t *));
-extern char *rl_username_completion_function __P((const char *, int));
-extern char *rl_filename_completion_function __P((const char *, int));
+extern void rl_free_undo_list PARAMS((void));
+extern int rl_maybe_save_line PARAMS((void));
+extern int rl_maybe_unsave_line PARAMS((void));
+extern int rl_maybe_replace_line PARAMS((void));
+
+extern int rl_crlf PARAMS((void));
+extern int rl_ding PARAMS((void));
+extern int rl_alphabetic PARAMS((int));
+
+extern char **rl_completion_matches PARAMS((const char *, rl_compentry_func_t *));
+extern char *rl_username_completion_function PARAMS((const char *, int));
+extern char *rl_filename_completion_function PARAMS((const char *, int));
 
 /* Provide backwards-compatible entry points for old function names. */
 
index 927bd52bbeda996e1eb097329f7e51ac3ddf1277..cbcee28f823867af768e1c70a6c4cc1faaf6dd92 100644 (file)
@@ -67,10 +67,19 @@ typedef int QSFUNC (const void *, const void *);
 typedef int QSFUNC ();
 #endif
 
+#ifdef HAVE_LSTAT
+#  define LSTAT lstat
+#else
+#  define LSTAT stat
+#endif
+
+/* Unix version of a hidden file.  Could be different on other systems. */
+#define HIDDEN_FILE(fname)     ((fname)[0] == '.')
+
 /* Most systems don't declare getpwent in <pwd.h> if _POSIX_SOURCE is
    defined. */
 #if !defined (HAVE_GETPW_DECLS) || defined (_POSIX_SOURCE)
-extern struct passwd *getpwent __P((void));
+extern struct passwd *getpwent PARAMS((void));
 #endif /* !HAVE_GETPW_DECLS || _POSIX_SOURCE */
 
 /* If non-zero, then this is the address of a function to call when
@@ -86,17 +95,28 @@ rl_compdisp_func_t *rl_completion_display_matches_hook = (rl_compdisp_func_t *)N
 #  if !defined (X_OK)
 #    define X_OK 1
 #  endif
-static int stat_char __P((char *));
+static int stat_char PARAMS((char *));
 #endif
 
-static char *rl_quote_filename __P((char *, int, char *));
+static char *rl_quote_filename PARAMS((char *, int, char *));
+
+static int get_y_or_n PARAMS((void));
+static char *printable_part PARAMS((char *));
+static int print_filename PARAMS((char *, char *));
+static char find_completion_word PARAMS((int *, int *));
+
+static char **gen_completion_matches PARAMS((char *, int, int, rl_compentry_func_t *, int, int));
 
-static char **remove_duplicate_matches __P((char **));
-static void insert_match __P((char *, int, int, char *));
-static int append_to_match __P((char *, int, int));
-static void insert_all_matches __P((char **, int, char *));
-static void display_matches __P((char **));
-static int compute_lcd_of_matches __P((char **, int, const char *));
+static char **remove_duplicate_matches PARAMS((char **));
+static void insert_match PARAMS((char *, int, int, char *));
+static int append_to_match PARAMS((char *, int, int, int));
+static void insert_all_matches PARAMS((char **, int, char *));
+static void display_matches PARAMS((char **));
+static int compute_lcd_of_matches PARAMS((char **, int, const char *));
+static int postprocess_matches PARAMS((char ***, int));
+
+static char *make_quoted_replacement PARAMS((char *, int, char *));
+static void free_match_list PARAMS((char **));
 
 /* **************************************************************** */
 /*                                                                 */
@@ -123,6 +143,10 @@ int _rl_completion_case_fold = 1;
 int _rl_completion_case_fold;
 #endif
 
+/* If non-zero, don't match hidden files (filenames beginning with a `.' on
+   Unix) when doing filename completion. */
+int _rl_match_hidden_files = 1;
+
 /* Global variables available to applications using readline. */
 
 #if defined (VISIBLE_STATS)
@@ -387,7 +411,7 @@ printable_part (pathname)
 
   temp = rl_filename_completion_desired ? strrchr (pathname, '/') : (char *)NULL;
 #if defined (__MSDOS__)
-  if (rl_filename_completion_desired && temp == 0 && isalpha (pathname[0]) && pathname[1] == ':')
+  if (rl_filename_completion_desired && temp == 0 && ISALPHA ((unsigned char)pathname[0]) && pathname[1] == ':')
     temp = pathname + 1;
 #endif
   return (temp ? ++temp : pathname);
@@ -461,7 +485,7 @@ print_filename (to_print, full_pathname)
 
          slen = strlen (s);
          tlen = strlen (to_print);
-         new_full_pathname = xmalloc (slen + tlen + 2);
+         new_full_pathname = (char *)xmalloc (slen + tlen + 2);
          strcpy (new_full_pathname, s);
          new_full_pathname[slen] = '/';
          strcpy (new_full_pathname + slen + 1, to_print);
@@ -496,7 +520,7 @@ rl_quote_filename (s, rtype, qcp)
 {
   char *r;
 
-  r = xmalloc (strlen (s) + 2);
+  r = (char *)xmalloc (strlen (s) + 2);
   *r = *rl_completer_quote_characters;
   strcpy (r + 1, s);
   if (qcp)
@@ -507,7 +531,7 @@ rl_quote_filename (s, rtype, qcp)
 /* Find the bounds of the current word for completion purposes, and leave
    rl_point set to the end of the word.  This function skips quoted
    substrings (characters between matched pairs of characters in
-   rl_completer_quote_characters.  First we try to find an unclosed
+   rl_completer_quote_characters).  First we try to find an unclosed
    quoted substring on which to do matching.  If one is not found, we use
    the word break characters to find the boundaries of the current word.
    We call an application-specific function to decide whether or not a
@@ -797,13 +821,40 @@ compute_lcd_of_matches (match_list, matches, text)
      value of matches[0]. */
   if (low == 0 && text && *text)
     {
-      match_list[0] = xmalloc (strlen (text) + 1);
+      match_list[0] = (char *)xmalloc (strlen (text) + 1);
       strcpy (match_list[0], text);
     }
   else
     {
-      match_list[0] = xmalloc (low + 1);
-      strncpy (match_list[0], match_list[1], low);
+      match_list[0] = (char *)xmalloc (low + 1);
+
+      /* If we are ignoring case, try to preserve the case of the string
+        the user typed in the face of multiple matches differing in case. */
+      if (_rl_completion_case_fold)
+       {
+         /* sort the list to get consistent answers. */
+         qsort (match_list+1, matches, sizeof(char *), (QSFUNC *)_rl_qsort_string_compare);
+
+         si = strlen (text);
+         if (si <= low)
+           {
+             for (i = 1; i <= matches; i++)
+               if (strncmp (match_list[i], text, si) == 0)
+                 {
+                   strncpy (match_list[0], match_list[i], low);
+                   break;
+                 }
+             /* no casematch, use first entry */
+             if (i > matches)
+               strncpy (match_list[0], match_list[1], low);
+           }
+         else
+           /* otherwise, just use the text the user typed. */
+           strncpy (match_list[0], text, low);
+       }
+      else
+        strncpy (match_list[0], match_list[1], low);
+
       match_list[0][low] = '\0';
     }
 
@@ -1102,14 +1153,16 @@ insert_match (match, start, mtype, qc)
    just-inserted match.  If the user has specified that directories
    should be marked by a trailing `/', append one of those instead.  The
    default trailing character is a space.  Returns the number of characters
-   appended. */
+   appended.  If NONTRIVIAL_MATCH is set, we test for a symlink (if the OS
+   has them) and don't add a suffix for a symlink to a directory.  A
+   nontrivial match is one that actually adds to the word being completed.  */
 static int
-append_to_match (text, delimiter, quote_char)
+append_to_match (text, delimiter, quote_char, nontrivial_match)
      char *text;
-     int delimiter, quote_char;
+     int delimiter, quote_char, nontrivial_match;
 {
   char temp_string[4], *filename;
-  int temp_string_index;
+  int temp_string_index, s;
   struct stat finfo;
 
   temp_string_index = 0;
@@ -1126,11 +1179,19 @@ append_to_match (text, delimiter, quote_char)
   if (rl_filename_completion_desired)
     {
       filename = tilde_expand (text);
-      if (stat (filename, &finfo) == 0 && S_ISDIR (finfo.st_mode))
+      s = nontrivial_match ? LSTAT (filename, &finfo) : stat (filename, &finfo);
+      if (s == 0 && S_ISDIR (finfo.st_mode))
        {
          if (_rl_complete_mark_directories && rl_line_buffer[rl_point] != '/')
            rl_insert_text ("/");
        }
+#ifdef S_ISLNK
+      /* Don't add anything if the filename is a symlink and resolves to a
+        directory. */
+      else if (s == 0 && S_ISLNK (finfo.st_mode) &&
+              stat (filename, &finfo) == 0 && S_ISDIR (finfo.st_mode))
+       ;
+#endif
       else
        {
          if (rl_point == rl_end)
@@ -1210,7 +1271,7 @@ rl_complete_internal (what_to_do)
 {
   char **matches;
   rl_compentry_func_t *our_func;
-  int start, end, delimiter, found_quote, i;
+  int start, end, delimiter, found_quote, i, nontrivial_lcd;
   char *text, *saved_line_buffer;
   char quote_char;
 
@@ -1240,6 +1301,9 @@ rl_complete_internal (what_to_do)
 
   text = rl_copy_text (start, end);
   matches = gen_completion_matches (text, start, end, our_func, found_quote, quote_char);
+  /* nontrivial_lcd is set if the common prefix adds something to the word
+     being completed. */
+  nontrivial_lcd = matches && strcmp (text, matches[0]) != 0;
   free (text);
 
   if (matches == 0)
@@ -1291,7 +1355,7 @@ rl_complete_internal (what_to_do)
            rl_ding (); /* There are other matches remaining. */
        }
       else
-       append_to_match (matches[0], delimiter, quote_char);
+       append_to_match (matches[0], delimiter, quote_char, nontrivial_lcd);
 
       break;
 
@@ -1428,7 +1492,7 @@ rl_username_completion_function (text, state)
     }
   else
     {
-      value = xmalloc (2 + strlen (entry->pw_name));
+      value = (char *)xmalloc (2 + strlen (entry->pw_name));
 
       *value = *text;
 
@@ -1483,7 +1547,7 @@ rl_filename_completion_function (text, state)
 
 #if defined (__MSDOS__)
       /* special hack for //X/... */
-      if (dirname[0] == '/' && dirname[1] == '/' && isalpha (dirname[2]) && dirname[3] == '/')
+      if (dirname[0] == '/' && dirname[1] == '/' && ISALPHA ((unsigned char)dirname[2]) && dirname[3] == '/')
         temp = strrchr (dirname + 3, '/');
 #endif
 
@@ -1494,7 +1558,7 @@ rl_filename_completion_function (text, state)
        }
 #if defined (__MSDOS__)
       /* searches from current directory on the drive */
-      else if (isalpha (dirname[0]) && dirname[1] == ':')
+      else if (ISALPHA ((unsigned char)dirname[0]) && dirname[1] == ':')
         {
           strcpy (filename, dirname + 2);
           dirname[2] = '\0';
@@ -1544,10 +1608,14 @@ rl_filename_completion_function (text, state)
   entry = (struct dirent *)NULL;
   while (directory && (entry = readdir (directory)))
     {
-      /* Special case for no filename.
-        All entries except "." and ".." match. */
+      /* Special case for no filename.  If the user has disabled the
+         `match-hidden-files' variable, skip filenames beginning with `.'.
+        All other entries except "." and ".." match. */
       if (filename_len == 0)
        {
+         if (_rl_match_hidden_files == 0 && HIDDEN_FILE (entry->d_name))
+           continue;
+
          if (entry->d_name[0] != '.' ||
               (entry->d_name[1] &&
                 (entry->d_name[1] != '.' || entry->d_name[2])))
@@ -1607,7 +1675,7 @@ rl_filename_completion_function (text, state)
          if (rl_complete_with_tilde_expansion && *users_dirname == '~')
            {
              dirlen = strlen (dirname);
-             temp = xmalloc (2 + dirlen + D_NAMLEN (entry));
+             temp = (char *)xmalloc (2 + dirlen + D_NAMLEN (entry));
              strcpy (temp, dirname);
              /* Canonicalization cuts off any final slash present.  We
                 may need to add it back. */
@@ -1620,7 +1688,7 @@ rl_filename_completion_function (text, state)
          else
            {
              dirlen = strlen (users_dirname);
-             temp = xmalloc (2 + dirlen + D_NAMLEN (entry));
+             temp = (char *)xmalloc (2 + dirlen + D_NAMLEN (entry));
              strcpy (temp, users_dirname);
              /* Make sure that temp has a trailing slash here. */
              if (users_dirname[dirlen - 1] != '/')
@@ -1745,7 +1813,8 @@ rl_menu_complete (count, ignore)
   else
     {
       insert_match (matches[match_list_index], orig_start, SINGLE_MATCH, &quote_char);
-      append_to_match (matches[match_list_index], delimiter, quote_char);
+      append_to_match (matches[match_list_index], delimiter, quote_char,
+                      strcmp (orig_text, matches[match_list_index]));
     }
 
   completion_changed_buffer = 1;
index ca7bd90bc588a0225f626ced0bea9024850557d4..cd15211d317464b0b249cc687de6d6563cb59cf3 100644 (file)
@@ -6,11 +6,24 @@
 /* Define as the return type of signal handlers (int or void).  */
 #undef RETSIGTYPE
 
+/* Characteristics of the compiler. */
+#undef const
+
+#undef size_t
+
+#undef ssize_t
+
 /* Define if the `S_IS*' macros in <sys/stat.h> do not work properly.  */
 #undef STAT_MACROS_BROKEN
 
 #undef VOID_SIGHANDLER
 
+/* Define if you have the isascii function. */
+#undef HAVE_ISASCII
+
+/* Define if you have the isxdigit function. */
+#undef HAVE_ISXDIGIT
+
 /* Define if you have the lstat function. */
 #undef HAVE_LSTAT
 
 /* Define if you have the setenv function.  */
 #undef HAVE_SETENV
 
+/* Define if you have the setlocale function. */
+#undef HAVE_SETLOCALE
+
 /* Define if you have the strcasecmp function.  */
 #undef HAVE_STRCASECMP
 
-/* Define if you have the setlocale function. */
-#undef HAVE_SETLOCALE
+/* Define if you have the strpbrk function.  */
+#undef HAVE_STRPBRK
 
 /* Define if you have the tcgetattr function.  */
 #undef HAVE_TCGETATTR
 
+/* Define if you have the vsnprintf function.  */
+#undef HAVE_VSNPRINTF
+
 /* Define if you have the strcoll function.  */
 #undef HAVE_STRCOLL
 
@@ -52,6 +71,9 @@
 /* Define if you have the <string.h> header file.  */
 #undef HAVE_STRING_H
 
+/* Define if you have the <strings.h> header file.  */
+#undef HAVE_STRINGS_H
+
 /* Define if you have the <sys/dir.h> header file.  */
 #undef HAVE_SYS_DIR_H
 
 
 #undef HAVE_LOCALE_H
 
+#undef HAVE_LIMITS_H
+
+#undef HAVE_MEMORY_H
+
 /* Definitions pulled in from aclocal.m4. */
 #undef VOID_SIGHANDLER
 
index 0765d4eb9c8633e6a1c901ee195f230a80007712..e548b21ec53449dc819a2e216bd6ebbdc449b36c 100755 (executable)
--- a/configure
+++ b/configure
 #! /bin/sh
+# From configure.in for Readline 4.2a, version 2.40, from autoconf version 2.52.
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by Autoconf 2.52 for readline 4.2a.
+#
+# Report bugs to <bug-readline@gnu.org>.
+#
+# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
 
-# From configure.in for Readline 4.2, version 2.26, from autoconf version 2.13
-LIBVERSION=4.2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
 
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
 
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
 
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
 
+# Name of the executable.
+as_me=`echo "$0" |sed 's,.*[\\/],,'`
 
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
 
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
 
+as_executable_p="test -f"
 
+# Support unset when possible.
+if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
 
+# NLS nuisances.
+$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; }
+$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; }
+$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; }
+$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; }
+$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; }
+$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; }
+$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; }
+$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; }
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS="  $as_nl"
+
+# CDPATH.
+$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; }
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+exec 6>&1
 
-# Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.13 
-# Copyright (C) 1992, 93, 94, 95, 96 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=
+# Initializations.
+#
 ac_default_prefix=/usr/local
-# Any additions from configure.in:
-ac_help="$ac_help
---with-curses               use the curses library instead of the termcap library"
+cross_compiling=no
+subdirs=
+MFLAGS= MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Maximum number of lines to put in a shell here document.
+# This variable seems obsolete.  It should probably be removed, and
+# only ac_max_sed_lines should be used.
+: ${ac_max_here_lines=38}
+
+ac_unique_file="readline.h"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#if STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# if HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#if HAVE_STRING_H
+# if !STDC_HEADERS && HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#if HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#else
+# if HAVE_STDINT_H
+#  include <stdint.h>
+# endif
+#endif
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
 
 # Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
 # The variables have the same names as the options, with
 # dashes changed to underlines.
-build=NONE
-cache_file=./config.cache
+cache_file=/dev/null
 exec_prefix=NONE
-host=NONE
 no_create=
-nonopt=NONE
 no_recursion=
 prefix=NONE
 program_prefix=NONE
@@ -136,10 +161,15 @@ program_transform_name=s,x,x,
 silent=
 site=
 srcdir=
-target=NONE
 verbose=
 x_includes=NONE
 x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
 bindir='${exec_prefix}/bin'
 sbindir='${exec_prefix}/sbin'
 libexecdir='${exec_prefix}/libexec'
@@ -153,17 +183,16 @@ oldincludedir='/usr/include'
 infodir='${prefix}/info'
 mandir='${prefix}/man'
 
-# Initialize some other variables.
-subdirs=
-MFLAGS= MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-# Maximum number of lines to put in a shell here document.
-ac_max_here_lines=12
+# Identity of this package.
+PACKAGE_NAME='readline'
+PACKAGE_TARNAME='readline'
+PACKAGE_VERSION='4.2a'
+PACKAGE_STRING='readline 4.2a'
+PACKAGE_BUGREPORT='bug-readline@gnu.org'
 
 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"
@@ -171,59 +200,59 @@ do
     continue
   fi
 
-  case "$ac_option" in
-  -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
-  *) ac_optarg= ;;
-  esac
+  ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
 
   # Accept the important Cygnus configure options, so we can diagnose typos.
 
-  case "$ac_option" in
+  case $ac_option in
 
   -bindir | --bindir | --bindi | --bind | --bin | --bi)
     ac_prev=bindir ;;
   -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir="$ac_optarg" ;;
+    bindir=$ac_optarg ;;
 
   -build | --build | --buil | --bui | --bu)
-    ac_prev=build ;;
+    ac_prev=build_alias ;;
   -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-    build="$ac_optarg" ;;
+    build_alias=$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" ;;
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
 
   -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
     ac_prev=datadir ;;
   -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
   | --da=*)
-    datadir="$ac_optarg" ;;
+    datadir=$ac_optarg ;;
 
   -disable-* | --disable-*)
-    ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
+    ac_feature=`expr "x$ac_option" : 'x-*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" ;;
+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    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/=.*//'`
+    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
     # 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
-      *=*) ;;
+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+    case $ac_option in
+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
       *) ac_optarg=yes ;;
     esac
-    eval "enable_${ac_feature}='$ac_optarg'" ;;
+    eval "enable_$ac_feature='$ac_optarg'" ;;
 
   -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
   | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
@@ -232,95 +261,47 @@ do
   -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
   | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
   | --exec=* | --exe=* | --ex=*)
-    exec_prefix="$ac_optarg" ;;
+    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=EPREFIX   install architecture-dependent files in EPREFIX
-                          [same as prefix]
-  --bindir=DIR            user executables in DIR [EPREFIX/bin]
-  --sbindir=DIR           system admin executables in DIR [EPREFIX/sbin]
-  --libexecdir=DIR        program executables in DIR [EPREFIX/libexec]
-  --datadir=DIR           read-only architecture-independent data in DIR
-                          [PREFIX/share]
-  --sysconfdir=DIR        read-only single-machine data in DIR [PREFIX/etc]
-  --sharedstatedir=DIR    modifiable architecture-independent data in DIR
-                          [PREFIX/com]
-  --localstatedir=DIR     modifiable single-machine data in DIR [PREFIX/var]
-  --libdir=DIR            object code libraries in DIR [EPREFIX/lib]
-  --includedir=DIR        C header files in DIR [PREFIX/include]
-  --oldincludedir=DIR     C header files for non-gcc in DIR [/usr/include]
-  --infodir=DIR           info documentation in DIR [PREFIX/info]
-  --mandir=DIR            man documentation in DIR [PREFIX/man]
-  --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
-EOF
-    cat << EOF
-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
-EOF
-    if test -n "$ac_help"; then
-      echo "--enable and --with options recognized:$ac_help"
-    fi
-    exit 0 ;;
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
 
   -host | --host | --hos | --ho)
-    ac_prev=host ;;
+    ac_prev=host_alias ;;
   -host=* | --host=* | --hos=* | --ho=*)
-    host="$ac_optarg" ;;
+    host_alias=$ac_optarg ;;
 
   -includedir | --includedir | --includedi | --included | --include \
   | --includ | --inclu | --incl | --inc)
     ac_prev=includedir ;;
   -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
   | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir="$ac_optarg" ;;
+    includedir=$ac_optarg ;;
 
   -infodir | --infodir | --infodi | --infod | --info | --inf)
     ac_prev=infodir ;;
   -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir="$ac_optarg" ;;
+    infodir=$ac_optarg ;;
 
   -libdir | --libdir | --libdi | --libd)
     ac_prev=libdir ;;
   -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir="$ac_optarg" ;;
+    libdir=$ac_optarg ;;
 
   -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
   | --libexe | --libex | --libe)
     ac_prev=libexecdir ;;
   -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
   | --libexe=* | --libex=* | --libe=*)
-    libexecdir="$ac_optarg" ;;
+    libexecdir=$ac_optarg ;;
 
   -localstatedir | --localstatedir | --localstatedi | --localstated \
   | --localstate | --localstat | --localsta | --localst \
@@ -329,12 +310,12 @@ EOF
   -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
   | --localstate=* | --localstat=* | --localsta=* | --localst=* \
   | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
-    localstatedir="$ac_optarg" ;;
+    localstatedir=$ac_optarg ;;
 
   -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
     ac_prev=mandir ;;
   -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir="$ac_optarg" ;;
+    mandir=$ac_optarg ;;
 
   -nfp | --nfp | --nf)
     # Obsolete; use --without-fp.
@@ -355,26 +336,26 @@ EOF
   -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
   | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
   | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir="$ac_optarg" ;;
+    oldincludedir=$ac_optarg ;;
 
   -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
     ac_prev=prefix ;;
   -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix="$ac_optarg" ;;
+    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_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_suffix=$ac_optarg ;;
 
   -program-transform-name | --program-transform-name \
   | --program-transform-nam | --program-transform-na \
@@ -391,7 +372,7 @@ EOF
   | --program-transfo=* | --program-transf=* \
   | --program-trans=* | --program-tran=* \
   | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name="$ac_optarg" ;;
+    program_transform_name=$ac_optarg ;;
 
   -q | -quiet | --quiet | --quie | --qui | --qu | --q \
   | -silent | --silent | --silen | --sile | --sil)
@@ -401,7 +382,7 @@ EOF
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
   | --sbi=* | --sb=*)
-    sbindir="$ac_optarg" ;;
+    sbindir=$ac_optarg ;;
 
   -sharedstatedir | --sharedstatedir | --sharedstatedi \
   | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
@@ -412,58 +393,57 @@ EOF
   | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
   | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
   | --sha=* | --sh=*)
-    sharedstatedir="$ac_optarg" ;;
+    sharedstatedir=$ac_optarg ;;
 
   -site | --site | --sit)
     ac_prev=site ;;
   -site=* | --site=* | --sit=*)
-    site="$ac_optarg" ;;
+    site=$ac_optarg ;;
 
   -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
     ac_prev=srcdir ;;
   -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir="$ac_optarg" ;;
+    srcdir=$ac_optarg ;;
 
   -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
   | --syscon | --sysco | --sysc | --sys | --sy)
     ac_prev=sysconfdir ;;
   -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
   | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir="$ac_optarg" ;;
+    sysconfdir=$ac_optarg ;;
 
   -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target ;;
+    ac_prev=target_alias ;;
   -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target="$ac_optarg" ;;
+    target_alias=$ac_optarg ;;
 
   -v | -verbose | --verbose | --verbos | --verbo | --verb)
     verbose=yes ;;
 
-  -version | --version | --versio | --versi | --vers)
-    echo "configure generated by autoconf version 2.13"
-    exit 0 ;;
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
 
   -with-* | --with-*)
-    ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
+    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
     # 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
+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
     ac_package=`echo $ac_package| sed 's/-/_/g'`
-    case "$ac_option" in
-      *=*) ;;
+    case $ac_option in
+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
       *) ac_optarg=yes ;;
     esac
-    eval "with_${ac_package}='$ac_optarg'" ;;
+    eval "with_$ac_package='$ac_optarg'" ;;
 
   -without-* | --without-*)
-    ac_package=`echo $ac_option|sed -e 's/-*without-//'`
+    ac_package=`expr "x$ac_option" : 'x-*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" ;;
+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package | sed 's/-/_/g'`
+    eval "with_$ac_package=no" ;;
 
   --x)
     # Obsolete; use --with-x.
@@ -474,98 +454,98 @@ EOF
     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_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" ;;
+    x_libraries=$ac_optarg ;;
 
-  -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
+  -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; }
     ;;
 
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+   { (exit 1); exit 1; }; }
+    ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+    eval "$ac_envvar='$ac_optarg'"
+    export $ac_envvar ;;
+
   *)
-    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"
+    # FIXME: should be removed in autoconf 3.0.
+    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$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
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  { echo "$as_me: error: missing argument to $ac_option" >&2
+   { (exit 1); exit 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
+# Be sure to have absolute paths.
+for ac_var in exec_prefix prefix
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+    *)  { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; };;
+  esac
+done
 
-# 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
+# Be sure to have absolute paths.
+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+              localstatedir libdir includedir oldincludedir infodir mandir
 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" ;;
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* ) ;;
+    *)  { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; };;
   esac
 done
 
-# NLS nuisances.
-# Only set these to C if already set.  These must not be set unconditionally
-# because not all systems understand e.g. LANG=C (notably SCO).
-# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
-# Non-C LC_CTYPE values break the ctype check.
-if test "${LANG+set}"   = set; then LANG=C;   export LANG;   fi
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
-if test "${LC_CTYPE+set}"    = set; then LC_CTYPE=C;    export LC_CTYPE;    fi
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: should be removed in autoconf 3.0.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used." >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+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
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
 
-# 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=readline.h
+test "$silent" = yes && exec 6>/dev/null
 
 # 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%/[^/][^/]*$%%'`
+  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
@@ -576,362 +556,1123 @@ else
 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; }
+    { echo "$as_me: error: cannot find sources in $ac_confdir or .." >&2
+   { (exit 1); exit 1; }; }
   else
-    { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
+    { echo "$as_me: error: cannot find sources in $srcdir" >&2
+   { (exit 1); exit 1; }; }
   fi
 fi
-srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
+srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+ac_env_build_alias_set=${build_alias+set}
+ac_env_build_alias_value=$build_alias
+ac_cv_env_build_alias_set=${build_alias+set}
+ac_cv_env_build_alias_value=$build_alias
+ac_env_host_alias_set=${host_alias+set}
+ac_env_host_alias_value=$host_alias
+ac_cv_env_host_alias_set=${host_alias+set}
+ac_cv_env_host_alias_value=$host_alias
+ac_env_target_alias_set=${target_alias+set}
+ac_env_target_alias_value=$target_alias
+ac_cv_env_target_alias_set=${target_alias+set}
+ac_cv_env_target_alias_value=$target_alias
+ac_env_CC_set=${CC+set}
+ac_env_CC_value=$CC
+ac_cv_env_CC_set=${CC+set}
+ac_cv_env_CC_value=$CC
+ac_env_CFLAGS_set=${CFLAGS+set}
+ac_env_CFLAGS_value=$CFLAGS
+ac_cv_env_CFLAGS_set=${CFLAGS+set}
+ac_cv_env_CFLAGS_value=$CFLAGS
+ac_env_LDFLAGS_set=${LDFLAGS+set}
+ac_env_LDFLAGS_value=$LDFLAGS
+ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
+ac_cv_env_LDFLAGS_value=$LDFLAGS
+ac_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_env_CPPFLAGS_value=$CPPFLAGS
+ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_cv_env_CPPFLAGS_value=$CPPFLAGS
+ac_env_CPP_set=${CPP+set}
+ac_env_CPP_value=$CPP
+ac_cv_env_CPP_set=${CPP+set}
+ac_cv_env_CPP_value=$CPP
 
-# 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
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<EOF
+\`configure' configures readline 4.2a to adapt to many kinds of systems.
 
-if test -r "$cache_file"; then
-  echo "loading cache $cache_file"
-  . $cache_file
-else
-  echo "creating cache $cache_file"
-  > $cache_file
-fi
+Usage: $0 [OPTION]... [VAR=VALUE]...
 
-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'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-ac_exeext=
-ac_objext=o
-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
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
 
+Defaults for the options are specified in brackets.
 
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
 
+EOF
 
+  cat <<EOF
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR           user executables [EPREFIX/bin]
+  --sbindir=DIR          system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR       program executables [EPREFIX/libexec]
+  --datadir=DIR          read-only architecture-independent data [PREFIX/share]
+  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
+  --libdir=DIR           object code libraries [EPREFIX/lib]
+  --includedir=DIR       C header files [PREFIX/include]
+  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
+  --infodir=DIR          info documentation [PREFIX/info]
+  --mandir=DIR           man documentation [PREFIX/man]
+EOF
 
+  cat <<\EOF
 
-ac_aux_dir=
-for ac_dir in ./support $srcdir/./support; 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 ./support $srcdir/./support" 1>&2; exit 1; }
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       build programs to run on HOST [BUILD]
+EOF
 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.
 
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of readline 4.2a:";;
+   esac
+  cat <<\EOF
 
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+--with-curses               use the curses library instead of the termcap library
 
-# Make sure we can run config.sub.
-if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then :
-else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
-fi
-
-echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:663: checking host system type" >&5
-
-host_alias=$host
-case "$host_alias" in
-NONE)
-  case $nonopt in
-  NONE)
-    if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then :
-    else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
-    fi ;;
-  *) host_alias=$nonopt ;;
-  esac ;;
-esac
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  CPPFLAGS    C/C++ preprocessor flags, e.g. -I<include dir> if you have
+              headers in a nonstandard directory <include dir>
+  CPP         C preprocessor
 
-host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias`
-host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-echo "$ac_t""$host" 1>&6
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
 
+Report bugs to <bug-readline@gnu.org>.
+EOF
+fi
 
-opt_curses=no
-opt_shared=no
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  ac_popdir=`pwd`
+  for ac_subdir in : $ac_subdirs_all; do test "x$ac_subdir" = x: && continue
+    cd $ac_subdir
+    # A "../" for each directory in /$ac_subdir.
+    ac_dots=`echo $ac_subdir |
+             sed 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g'`
+
+    case $srcdir in
+    .) # No --srcdir option.  We are building in place.
+      ac_sub_srcdir=$srcdir ;;
+    [\\/]* | ?:[\\/]* ) # Absolute path.
+      ac_sub_srcdir=$srcdir/$ac_subdir ;;
+    *) # Relative path.
+      ac_sub_srcdir=$ac_dots$srcdir/$ac_subdir ;;
+    esac
 
-# Check whether --with-curses or --without-curses was given.
-if test "${with_curses+set}" = set; then
-  withval="$with_curses"
-  opt_curses=$withval
+    # Check for guested configure; otherwise get Cygnus style configure.
+    if test -f $ac_sub_srcdir/configure.gnu; then
+      echo
+      $SHELL $ac_sub_srcdir/configure.gnu  --help=recursive
+    elif test -f $ac_sub_srcdir/configure; then
+      echo
+      $SHELL $ac_sub_srcdir/configure  --help=recursive
+    elif test -f $ac_sub_srcdir/configure.ac ||
+           test -f $ac_sub_srcdir/configure.in; then
+      echo
+      $ac_configure --help
+    else
+      echo "$as_me: WARNING: no configuration information is in $ac_subdir" >&2
+    fi
+    cd $ac_popdir
+  done
 fi
 
+test -n "$ac_init_help" && exit 0
+if $ac_init_version; then
+  cat <<\EOF
+readline configure 4.2a
+generated by GNU Autoconf 2.52
 
-if test "$opt_curses" = "yes"; then
-       prefer_curses=yes
+Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+EOF
+  exit 0
 fi
+exec 5>config.log
+cat >&5 <<EOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
 
-# We want these before the checks, so the checks can modify their values.
-test -z "$CFLAGS" && CFLAGS=-g auto_cflags=1
+It was created by readline $as_me 4.2a, which was
+generated by GNU Autoconf 2.52.  Invocation command line was
+
+  $ $0 $@
 
-echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:702: checking whether ${MAKE-make} sets \${MAKE}" >&5
-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftestmake <<\EOF
-all:
-       @echo 'ac_maketemp="${MAKE}"'
 EOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
-eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=`
-if test -n "$ac_maketemp"; then
-  eval ac_cv_prog_make_${ac_make}_set=yes
-else
-  eval ac_cv_prog_make_${ac_make}_set=no
+{
+cat <<_ASUNAME
+## ---------- ##
+## Platform.  ##
+## ---------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+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 || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+hostinfo               = `(hostinfo) 2>/dev/null               || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+PATH = $PATH
+
+_ASUNAME
+} >&5
+
+cat >&5 <<EOF
+## ------------ ##
+## Core tests.  ##
+## ------------ ##
+
+EOF
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Also quote any args containing shell meta-characters.
+ac_configure_args=
+ac_sep=
+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_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"`
+    ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+    ac_sep=" " ;;
+  *) ac_configure_args="$ac_configure_args$ac_sep$ac_arg"
+     ac_sep=" " ;;
+  esac
+  # Get rid of the leading space.
+done
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  echo >&5
+  echo "## ----------------- ##" >&5
+  echo "## Cache variables.  ##" >&5
+  echo "## ----------------- ##" >&5
+  echo >&5
+  # The following way of writing the cache mishandles newlines in values,
+{
+  (set) 2>&1 |
+    case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+    *ac_space=\ *)
+      sed -n \
+        "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+      ;;
+    *)
+      sed -n \
+        "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      ;;
+    esac;
+} >&5
+  sed "/^$/d" confdefs.h >conftest.log
+  if test -s conftest.log; then
+    echo >&5
+    echo "## ------------ ##" >&5
+    echo "## confdefs.h.  ##" >&5
+    echo "## ------------ ##" >&5
+    echo >&5
+    cat conftest.log >&5
+  fi
+  (echo; echo) >&5
+  test "$ac_signal" != 0 &&
+    echo "$as_me: caught signal $ac_signal" >&5
+  echo "$as_me: exit $exit_status" >&5
+  rm -rf conftest* confdefs* core core.* *.core conf$$* $ac_clean_files &&
+    exit $exit_status
+     ' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# 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
+
+# Let the site file select an alternate cache file if it wants to.
+# 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 "$as_me:872: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+    cat "$ac_site_file" >&5
+    . "$ac_site_file"
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special
+  # files actually), so we avoid doing that.
+  if test -f "$cache_file"; then
+    { echo "$as_me:883: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . $cache_file;;
+      *)                      . ./$cache_file;;
+    esac
+  fi
+else
+  { echo "$as_me:891: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in `(set) 2>&1 |
+               sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val="\$ac_cv_env_${ac_var}_value"
+  eval ac_new_val="\$ac_env_${ac_var}_value"
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { echo "$as_me:907: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { echo "$as_me:911: error: \`$ac_var' was not set in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+        { echo "$as_me:917: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+        { echo "$as_me:919:   former value:  $ac_old_val" >&5
+echo "$as_me:   former value:  $ac_old_val" >&2;}
+        { echo "$as_me:921:   current value: $ac_new_val" >&5
+echo "$as_me:   current value: $ac_new_val" >&2;}
+        ac_cache_corrupted=:
+      fi;;
+  esac
+  # Pass precious variables to config.status.  It doesn't matter if
+  # we pass some twice (in addition to the command line arguments).
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *" "*|*"   "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+      ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"`
+      ac_configure_args="$ac_configure_args '$ac_arg'"
+      ;;
+    *) ac_configure_args="$ac_configure_args $ac_var=$ac_new_val"
+       ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { echo "$as_me:940: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  { { echo "$as_me:942: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+   { (exit 1); exit 1; }; }
 fi
-rm -f conftestmake
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T='     ' ;;
+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+  *)      ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+echo "#! $SHELL" >conftest.sh
+echo  "exit 0"   >>conftest.sh
+chmod +x conftest.sh
+if { (echo "$as_me:962: PATH=\".;.\"; conftest.sh") >&5
+  (PATH=".;."; conftest.sh) 2>&5
+  ac_status=$?
+  echo "$as_me:965: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  ac_path_separator=';'
+else
+  ac_path_separator=:
+fi
+PATH_SEPARATOR="$ac_path_separator"
+rm -f conftest.sh
+
+ac_aux_dir=
+for ac_dir in ./support $srcdir/./support; 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
+  elif test -f $ac_dir/shtool; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  { { echo "$as_me:991: error: cannot find install-sh or install.sh in ./support $srcdir/./support" >&5
+echo "$as_me: error: cannot find install-sh or install.sh in ./support $srcdir/./support" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"
+ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
+
+ac_config_headers="$ac_config_headers config.h"
+
+LIBVERSION=4.2a
+
+# Make sure we can run config.sub.
+$ac_config_sub sun4 >/dev/null 2>&1 ||
+  { { echo "$as_me:1005: error: cannot run $ac_config_sub" >&5
+echo "$as_me: error: cannot run $ac_config_sub" >&2;}
+   { (exit 1); exit 1; }; }
+
+echo "$as_me:1009: checking build system type" >&5
+echo $ECHO_N "checking build system type... $ECHO_C" >&6
+if test "${ac_cv_build+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_build_alias=$build_alias
+test -z "$ac_cv_build_alias" &&
+  ac_cv_build_alias=`$ac_config_guess`
+test -z "$ac_cv_build_alias" &&
+  { { echo "$as_me:1018: error: cannot guess build type; you must specify one" >&5
+echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+   { (exit 1); exit 1; }; }
+ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
+  { { echo "$as_me:1022: error: $ac_config_sub $ac_cv_build_alias failed." >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed." >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:1027: result: $ac_cv_build" >&5
+echo "${ECHO_T}$ac_cv_build" >&6
+build=$ac_cv_build
+build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+echo "$as_me:1034: checking host system type" >&5
+echo $ECHO_N "checking host system type... $ECHO_C" >&6
+if test "${ac_cv_host+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_host_alias=$host_alias
+test -z "$ac_cv_host_alias" &&
+  ac_cv_host_alias=$ac_cv_build_alias
+ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
+  { { echo "$as_me:1043: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:1048: result: $ac_cv_host" >&5
+echo "${ECHO_T}$ac_cv_host" >&6
+host=$ac_cv_host
+host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+opt_curses=no
+opt_shared=no
+
+# Check whether --with-curses or --without-curses was given.
+if test "${with_curses+set}" = set; then
+  withval="$with_curses"
+  opt_curses=$withval
+fi;
+
+if test "$opt_curses" = "yes"; then
+       prefer_curses=yes
+fi
+
+echo ""
+echo "Beginning configuration for readline-$LIBVERSION for ${host_cpu}-${host_vendor}-${host_os}"
+echo ""
+
+# We want these before the checks, so the checks can modify their values.
+test -z "$CFLAGS" && CFLAGS=-g auto_cflags=1
+
+echo "$as_me:1075: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'`
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.make <<\EOF
+all:
+       @echo 'ac_maketemp="${MAKE}"'
+EOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
+if test -n "$ac_maketemp"; then
+  eval ac_cv_prog_make_${ac_make}_set=yes
+else
+  eval ac_cv_prog_make_${ac_make}_set=no
+fi
+rm -f conftest.make
 fi
 if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
+  echo "$as_me:1095: result: yes" >&5
+echo "${ECHO_T}yes" >&6
   SET_MAKE=
 else
-  echo "$ac_t""no" 1>&6
+  echo "$as_me:1099: result: no" >&5
+echo "${ECHO_T}no" >&6
   SET_MAKE="MAKE=${MAKE-make}"
 fi
 
-# Extract the first word of "gcc", so it can be a program name with args.
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+echo "$as_me:1112: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_CC="${ac_tool_prefix}gcc"
+echo "$as_me:1127: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:1135: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:1138: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:731: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:1147: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_ac_ct_CC="gcc"
+echo "$as_me:1162: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:1170: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:1173: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  CC=$ac_ct_CC
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+echo "$as_me:1186: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; 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"
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_CC="${ac_tool_prefix}cc"
+echo "$as_me:1201: found $ac_dir/$ac_word" >&5
+break
+done
+
 fi
 fi
-CC="$ac_cv_prog_CC"
+CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  echo "$ac_t""$CC" 1>&6
+  echo "$as_me:1209: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:1212: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:1221: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_ac_ct_CC="cc"
+echo "$as_me:1236: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:1244: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:1247: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  CC=$ac_ct_CC
 else
-  echo "$ac_t""no" 1>&6
+  CC="$ac_cv_prog_CC"
 fi
 
+fi
 if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:761: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:1260: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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=":"
   ac_prog_rejected=no
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
-        ac_prog_rejected=yes
-       continue
-      fi
-      ac_cv_prog_CC="cc"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
+  ac_prog_rejected=yes
+  continue
+fi
+ac_cv_prog_CC="cc"
+echo "$as_me:1280: found $ac_dir/$ac_word" >&5
+break
+done
+
 if test $ac_prog_rejected = yes; then
   # We found a bogon in the path, so make sure we never use it.
   set dummy $ac_cv_prog_CC
   shift
-  if test $# -gt 0; then
+  if test $# != 0; then
     # We chose a different compiler from the bogus one.
     # However, it has the same basename, so the bogon will be chosen
     # first if we set CC to just the basename; use the full file name.
     shift
-    set dummy "$ac_dir/$ac_word" "$@"
+    set dummy "$ac_dir/$ac_word" ${1+"$@"}
     shift
     ac_cv_prog_CC="$@"
   fi
 fi
 fi
 fi
-CC="$ac_cv_prog_CC"
+CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  echo "$ac_t""$CC" 1>&6
+  echo "$as_me:1302: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
 else
-  echo "$ac_t""no" 1>&6
+  echo "$as_me:1305: result: no" >&5
+echo "${ECHO_T}no" >&6
 fi
 
-  if test -z "$CC"; then
-    case "`uname -s`" in
-    *win32* | *WIN32*)
-      # Extract the first word of "cl", so it can be a program name with args.
-set dummy cl; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:812: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:1316: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_CC="cl"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+echo "$as_me:1331: found $ac_dir/$ac_word" >&5
+break
+done
+
 fi
 fi
-CC="$ac_cv_prog_CC"
+CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  echo "$ac_t""$CC" 1>&6
+  echo "$as_me:1339: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
 else
-  echo "$ac_t""no" 1>&6
-fi
- ;;
-    esac
-  fi
-  test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
+  echo "$as_me:1342: result: no" >&5
+echo "${ECHO_T}no" >&6
 fi
 
-echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:844: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:1355: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_ac_ct_CC="$ac_prog"
+echo "$as_me:1370: found $ac_dir/$ac_word" >&5
+break
+done
 
-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'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:1378: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:1381: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
 
-cat > conftest.$ac_ext << EOF
+  test -n "$ac_ct_CC" && break
+done
 
-#line 855 "configure"
+  CC=$ac_ct_CC
+fi
+
+fi
+
+test -z "$CC" && { { echo "$as_me:1393: error: no acceptable cc found in \$PATH" >&5
+echo "$as_me: error: no acceptable cc found in \$PATH" >&2;}
+   { (exit 1); exit 1; }; }
+
+# Provide some information about the compiler.
+echo "$as_me:1398:" \
+     "checking for C compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:1401: \"$ac_compiler --version </dev/null >&5\"") >&5
+  (eval $ac_compiler --version </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:1404: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:1406: \"$ac_compiler -v </dev/null >&5\"") >&5
+  (eval $ac_compiler -v </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:1409: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:1411: \"$ac_compiler -V </dev/null >&5\"") >&5
+  (eval $ac_compiler -V </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:1414: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 1418 "configure"
 #include "confdefs.h"
 
-main(){return(0);}
-EOF
-if { (eval echo configure:860: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  ac_cv_prog_cc_works=yes
-  # If we can't run a trivial program, we are probably using a cross compiler.
-  if (./conftest; exit) 2>/dev/null; then
-    ac_cv_prog_cc_cross=no
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.exe"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+echo "$as_me:1434: checking for C compiler default output" >&5
+echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6
+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+if { (eval echo "$as_me:1437: \"$ac_link_default\"") >&5
+  (eval $ac_link_default) 2>&5
+  ac_status=$?
+  echo "$as_me:1440: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # Find the output, starting from the most likely.  This scheme is
+# not robust to junk in `.', hence go to wildcards (a.*) only as a last
+# resort.
+for ac_file in `ls a.exe conftest.exe 2>/dev/null;
+                ls a.out conftest 2>/dev/null;
+                ls a.* conftest.* 2>/dev/null`; do
+  case $ac_file in
+    *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;;
+    a.out ) # We found the default executable, but exeext='' is most
+            # certainly right.
+            break;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+          # FIXME: I believe we export ac_cv_exeext for Libtool --akim.
+          export ac_cv_exeext
+          break;;
+    * ) break;;
+  esac
+done
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+{ { echo "$as_me:1463: error: C compiler cannot create executables" >&5
+echo "$as_me: error: C compiler cannot create executables" >&2;}
+   { (exit 77); exit 77; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+echo "$as_me:1469: result: $ac_file" >&5
+echo "${ECHO_T}$ac_file" >&6
+
+# Check the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:1474: checking whether the C compiler works" >&5
+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+  if { ac_try='./$ac_file'
+  { (eval echo "$as_me:1480: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:1483: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+    cross_compiling=no
   else
-    ac_cv_prog_cc_cross=yes
+    if test "$cross_compiling" = maybe; then
+       cross_compiling=yes
+    else
+       { { echo "$as_me:1490: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'." >&5
+echo "$as_me: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'." >&2;}
+   { (exit 1); exit 1; }; }
+    fi
   fi
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  ac_cv_prog_cc_works=no
 fi
-rm -fr conftest*
-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'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
-if test $ac_cv_prog_cc_works = no; then
-  { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
-fi
-echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:886: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
-echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
-cross_compiling=$ac_cv_prog_cc_cross
-
-echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:891: checking whether we are using GNU C" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.c <<EOF
-#ifdef __GNUC__
-  yes;
-#endif
-EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:900: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
-  ac_cv_prog_gcc=yes
+echo "$as_me:1498: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+rm -f a.out a.exe conftest$ac_cv_exeext
+ac_clean_files=$ac_clean_files_save
+# Check the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:1505: checking whether we are cross compiling" >&5
+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+echo "$as_me:1507: result: $cross_compiling" >&5
+echo "${ECHO_T}$cross_compiling" >&6
+
+echo "$as_me:1510: checking for executable suffix" >&5
+echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6
+if { (eval echo "$as_me:1512: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:1515: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do
+  case $ac_file in
+    *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+          export ac_cv_exeext
+          break;;
+    * ) break;;
+  esac
+done
 else
-  ac_cv_prog_gcc=no
-fi
-fi
+  { { echo "$as_me:1531: error: cannot compute EXEEXT: cannot compile and link" >&5
+echo "$as_me: error: cannot compute EXEEXT: cannot compile and link" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+echo "$as_me:1537: result: $ac_cv_exeext" >&5
+echo "${ECHO_T}$ac_cv_exeext" >&6
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+echo "$as_me:1543: checking for object suffix" >&5
+echo $ECHO_N "checking for object suffix... $ECHO_C" >&6
+if test "${ac_cv_objext+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1549 "configure"
+#include "confdefs.h"
 
-echo "$ac_t""$ac_cv_prog_gcc" 1>&6
+int
+main ()
+{
 
-if test $ac_cv_prog_gcc = yes; then
-  GCC=yes
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (eval echo "$as_me:1561: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:1564: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
 else
-  GCC=
-fi
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+{ { echo "$as_me:1576: error: cannot compute OBJEXT: cannot compile" >&5
+echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+echo "$as_me:1583: result: $ac_cv_objext" >&5
+echo "${ECHO_T}$ac_cv_objext" >&6
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+echo "$as_me:1587: checking whether we are using the GNU C compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1593 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
 
-ac_test_CFLAGS="${CFLAGS+set}"
-ac_save_CFLAGS="$CFLAGS"
-CFLAGS=
-echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:919: checking whether ${CC-cc} accepts -g" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1608: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:1611: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:1614: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:1617: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_compiler_gnu=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:1629: result: $ac_cv_c_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
+GCC=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+CFLAGS="-g"
+echo "$as_me:1635: checking whether $CC accepts -g" >&5
+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  echo 'void f(){}' > conftest.c
-if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1641 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1653: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:1656: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:1659: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:1662: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
   ac_cv_prog_cc_g=yes
 else
-  ac_cv_prog_cc_g=no
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_prog_cc_g=no
 fi
-rm -f conftest*
-
+rm -f conftest.$ac_objext conftest.$ac_ext
 fi
-
-echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
+echo "$as_me:1672: result: $ac_cv_prog_cc_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
 if test "$ac_test_CFLAGS" = set; then
-  CFLAGS="$ac_save_CFLAGS"
+  CFLAGS=$ac_save_CFLAGS
 elif test $ac_cv_prog_cc_g = yes; then
   if test "$GCC" = yes; then
     CFLAGS="-g -O2"
@@ -945,182 +1686,417 @@ else
     CFLAGS=
   fi
 fi
+# Some people use a C++ compiler to compile C.  Since we use `exit',
+# in C++ we need to declare it.  In case someone uses the same compiler
+# for both compiling C and C++ we need to have the C++ compiler decide
+# the declaration of exit, since it's the most demanding environment.
+cat >conftest.$ac_ext <<_ACEOF
+#ifndef __cplusplus
+  choke me
+#endif
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1699: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:1702: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:1705: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:1708: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  for ac_declaration in \
+   ''\
+   '#include <stdlib.h>' \
+   'extern "C" void std::exit (int) throw (); using std::exit;' \
+   'extern "C" void std::exit (int); using std::exit;' \
+   'extern "C" void exit (int) throw ();' \
+   'extern "C" void exit (int);' \
+   'void exit (int);'
+do
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1720 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+$ac_declaration
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1733: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:1736: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:1739: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:1742: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+continue
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1752 "configure"
+#include "confdefs.h"
+$ac_declaration
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1764: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:1767: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:1770: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:1773: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  break
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+  echo '#ifdef __cplusplus' >>confdefs.h
+  echo $ac_declaration      >>confdefs.h
+  echo '#endif'             >>confdefs.h
+fi
 
-echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:951: checking how to run the C preprocessor" >&5
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+echo "$as_me:1805: checking how to run the C preprocessor" >&5
+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&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
+  if test "${ac_cv_prog_CPP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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"
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
   # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp.
-  cat > conftest.$ac_ext <<EOF
-#line 966 "configure"
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1826 "configure"
 #include "confdefs.h"
 #include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:972: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
+                     Syntax error
+_ACEOF
+if { (eval echo "$as_me:1831: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:1837: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
   :
 else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
+  echo "$as_me: failed program was:" >&5
   cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  CPP="${CC-cc} -E -traditional-cpp"
-  cat > conftest.$ac_ext <<EOF
-#line 983 "configure"
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1860 "configure"
 #include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:989: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  :
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:1864: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:1870: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
 else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
+  echo "$as_me: failed program was:" >&5
   cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  CPP="${CC-cc} -nologo -E"
-  cat > conftest.$ac_ext <<EOF
-#line 1000 "configure"
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+echo "$as_me:1907: result: $CPP" >&5
+echo "${ECHO_T}$CPP" >&6
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1917 "configure"
 #include "confdefs.h"
 #include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1006: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
+                     Syntax error
+_ACEOF
+if { (eval echo "$as_me:1922: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:1928: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
   :
 else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
+  echo "$as_me: failed program was:" >&5
   cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  CPP=/lib/cpp
-fi
-rm -f conftest*
+  # Broken: fails on valid input.
+continue
 fi
-rm -f conftest*
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1951 "configure"
+#include "confdefs.h"
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:1955: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:1961: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
 fi
-rm -f conftest*
-  ac_cv_prog_CPP="$CPP"
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  # Passes both tests.
+ac_preproc_ok=:
+break
 fi
-  CPP="$ac_cv_prog_CPP"
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
 else
-  ac_cv_prog_CPP="$CPP"
+  { { echo "$as_me:1989: error: C preprocessor \"$CPP\" fails sanity check" >&5
+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;}
+   { (exit 1); exit 1; }; }
 fi
-echo "$ac_t""$CPP" 1>&6
 
-ac_safe=`echo "minix/config.h" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for minix/config.h""... $ac_c" 1>&6
-echo "configure:1032: checking for minix/config.h" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+echo "$as_me:2000: checking for minix/config.h" >&5
+echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6
+if test "${ac_cv_header_minix_config_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  cat > conftest.$ac_ext <<EOF
-#line 1037 "configure"
+  cat >conftest.$ac_ext <<_ACEOF
+#line 2006 "configure"
 #include "confdefs.h"
 #include <minix/config.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1042: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
+_ACEOF
+if { (eval echo "$as_me:2010: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:2016: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_cv_header_minix_config_h=yes
+else
+  echo "$as_me: failed program was:" >&5
   cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
+  ac_cv_header_minix_config_h=no
 fi
-rm -f conftest*
+rm -f conftest.err conftest.$ac_ext
 fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
+echo "$as_me:2035: result: $ac_cv_header_minix_config_h" >&5
+echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6
+if test $ac_cv_header_minix_config_h = yes; then
   MINIX=yes
 else
-  echo "$ac_t""no" 1>&6
-MINIX=
+  MINIX=
 fi
 
 if test "$MINIX" = yes; then
-  cat >> confdefs.h <<\EOF
+
+cat >>confdefs.h <<\EOF
 #define _POSIX_SOURCE 1
 EOF
 
-  cat >> confdefs.h <<\EOF
+cat >>confdefs.h <<\EOF
 #define _POSIX_1_SOURCE 2
 EOF
 
-  cat >> confdefs.h <<\EOF
+cat >>confdefs.h <<\EOF
 #define _MINIX 1
 EOF
 
 fi
 
-
 # If we're using gcc and the user hasn't specified CFLAGS, add -O to CFLAGS.
 test -n "$GCC" && test -n "$auto_cflags" && CFLAGS="$CFLAGS -O"
 
-if test $ac_cv_prog_gcc = yes; then
-    echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6
-echo "configure:1085: checking whether ${CC-cc} needs -traditional" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+if test $ac_cv_c_compiler_gnu = yes; then
+    echo "$as_me:2063: checking whether $CC needs -traditional" >&5
+echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6
+if test "${ac_cv_prog_gcc_traditional+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
     ac_pattern="Autoconf.*'x'"
-  cat > conftest.$ac_ext <<EOF
-#line 1091 "configure"
+  cat >conftest.$ac_ext <<_ACEOF
+#line 2070 "configure"
 #include "confdefs.h"
 #include <sgtty.h>
 Autoconf TIOCGETP
-EOF
+_ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   egrep "$ac_pattern" >/dev/null 2>&1; then
-  rm -rf conftest*
   ac_cv_prog_gcc_traditional=yes
 else
-  rm -rf conftest*
   ac_cv_prog_gcc_traditional=no
 fi
 rm -f conftest*
 
-
   if test $ac_cv_prog_gcc_traditional = no; then
-    cat > conftest.$ac_ext <<EOF
-#line 1109 "configure"
+    cat >conftest.$ac_ext <<_ACEOF
+#line 2085 "configure"
 #include "confdefs.h"
 #include <termio.h>
 Autoconf TCGETA
-EOF
+_ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   egrep "$ac_pattern" >/dev/null 2>&1; then
-  rm -rf conftest*
   ac_cv_prog_gcc_traditional=yes
 fi
 rm -f conftest*
 
   fi
 fi
-
-echo "$ac_t""$ac_cv_prog_gcc_traditional" 1>&6
+echo "$as_me:2098: result: $ac_cv_prog_gcc_traditional" >&5
+echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6
   if test $ac_cv_prog_gcc_traditional = yes; then
     CC="$CC -traditional"
   fi
@@ -1133,31 +2109,39 @@ fi
 # SunOS /usr/etc/install
 # IRIX /sbin/install
 # AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
 # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
 # 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
-echo "configure:1142: checking for a BSD compatible install" >&5
+echo "$as_me:2117: checking for a BSD compatible install" >&5
+echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&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
+if test "${ac_cv_path_install+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-    IFS="${IFS=        }"; ac_save_IFS="$IFS"; IFS=":"
+    ac_save_IFS=$IFS; IFS=$ac_path_separator
   for ac_dir in $PATH; do
+    IFS=$ac_save_IFS
     # 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/*) ;;
+    case $ac_dir/ in
+    / | ./ | .// | /cC/* \
+    | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \
+    | /usr/ucb/* ) ;;
     *)
       # OSF1 and SCO ODT 3.0 have their own names for install.
       # Don't use installbsd from OSF since it installs stuff as root
       # by default.
       for ac_prog in ginstall scoinst install; do
-        if test -f $ac_dir/$ac_prog; then
+        if $as_executable_p "$ac_dir/$ac_prog"; then
          if test $ac_prog = install &&
-            grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
+            grep dspmsg "$ac_dir/$ac_prog" >/dev/null 2>&1; then
            # AIX install.  It has an incompatible calling convention.
            :
+         elif test $ac_prog = install &&
+           grep pwplus "$ac_dir/$ac_prog" >/dev/null 2>&1; then
+           # program-specific install script used by HP pwplus--don't use.
+           :
          else
            ac_cv_path_install="$ac_dir/$ac_prog -c"
            break 2
@@ -1167,105 +2151,350 @@ else
       ;;
     esac
   done
-  IFS="$ac_save_IFS"
 
 fi
   if test "${ac_cv_path_install+set}" = set; then
-    INSTALL="$ac_cv_path_install"
+    INSTALL=$ac_cv_path_install
   else
     # As a last resort, use the slow shell script.  We don't cache a
     # path for INSTALL within a source directory, because that will
     # break other packages using the cache if that directory is
     # removed, or if the path is relative.
-    INSTALL="$ac_install_sh"
+    INSTALL=$ac_install_sh
   fi
 fi
-echo "$ac_t""$INSTALL" 1>&6
+echo "$as_me:2166: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&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_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
 
 test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 
 # Extract the first word of "ar", so it can be a program name with args.
 set dummy ar; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1197: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:2179: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_AR+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   if test -n "$AR"; then
   ac_cv_prog_AR="$AR" # Let the user override the test.
 else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_AR="ar"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_AR=""
+echo "$as_me:2194: found $ac_dir/$ac_word" >&5
+break
+done
+
+  test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar"
 fi
 fi
-AR="$ac_cv_prog_AR"
+AR=$ac_cv_prog_AR
 if test -n "$AR"; then
-  echo "$ac_t""$AR" 1>&6
+  echo "$as_me:2203: result: $AR" >&5
+echo "${ECHO_T}$AR" >&6
 else
-  echo "$ac_t""no" 1>&6
+  echo "$as_me:2206: result: no" >&5
+echo "${ECHO_T}no" >&6
 fi
 
 test -n "$ARFLAGS" || ARFLAGS="cr"
-# Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1227: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+echo "$as_me:2214: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; 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=":"
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+echo "$as_me:2229: found $ac_dir/$ac_word" >&5
+break
+done
+
 fi
 fi
-RANLIB="$ac_cv_prog_RANLIB"
+RANLIB=$ac_cv_prog_RANLIB
 if test -n "$RANLIB"; then
-  echo "$ac_t""$RANLIB" 1>&6
+  echo "$as_me:2237: result: $RANLIB" >&5
+echo "${ECHO_T}$RANLIB" >&6
 else
-  echo "$ac_t""no" 1>&6
+  echo "$as_me:2240: result: no" >&5
+echo "${ECHO_T}no" >&6
 fi
 
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+echo "$as_me:2249: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_ac_ct_RANLIB="ranlib"
+echo "$as_me:2264: found $ac_dir/$ac_word" >&5
+break
+done
+
+  test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  echo "$as_me:2273: result: $ac_ct_RANLIB" >&5
+echo "${ECHO_T}$ac_ct_RANLIB" >&6
+else
+  echo "$as_me:2276: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  RANLIB=$ac_ct_RANLIB
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
 
 MAKE_SHELL=/bin/sh
 
+echo "$as_me:2287: checking for $CC option to accept ANSI C" >&5
+echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_cc_stdc=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+#line 2295 "configure"
+#include "confdefs.h"
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX                  -qlanglvl=ansi
+# Ultrix and OSF/1     -std1
+# HP-UX 10.20 and later        -Ae
+# HP-UX older versions -Aa -D_HPUX_SOURCE
+# SVR4                 -Xc -D__EXTENSIONS__
+for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  rm -f conftest.$ac_objext
+if { (eval echo "$as_me:2344: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:2347: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:2350: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:2353: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cc_stdc=$ac_arg
+break
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext
+done
+rm -f conftest.$ac_ext conftest.$ac_objext
+CC=$ac_save_CC
+
+fi
+
+case "x$ac_cv_prog_cc_stdc" in
+  x|xno)
+    echo "$as_me:2370: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6 ;;
+  *)
+    echo "$as_me:2373: result: $ac_cv_prog_cc_stdc" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+    CC="$CC $ac_cv_prog_cc_stdc" ;;
+esac
 
-echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:1259: checking return type of signal handlers" >&5
-if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:2378: checking for an ANSI C-conforming const" >&5
+echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
+if test "${ac_cv_c_const+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  cat > conftest.$ac_ext <<EOF
-#line 1264 "configure"
+  cat >conftest.$ac_ext <<_ACEOF
+#line 2384 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+/* FIXME: Include the comments suggested by Paul. */
+#ifndef __cplusplus
+  /* Ultrix mips cc rejects this.  */
+  typedef int charset[2];
+  const charset x;
+  /* SunOS 4.1.1 cc rejects this.  */
+  char const *const *ccp;
+  char **p;
+  /* NEC SVR4.0.2 mips cc rejects this.  */
+  struct point {int x, y;};
+  static struct point const zero = {0,0};
+  /* AIX XL C 1.02.0.0 rejects this.
+     It does not let you subtract one const X* pointer from another in
+     an arm of an if-expression whose if-part is not a constant
+     expression */
+  const char *g = "string";
+  ccp = &g + (g ? g-g : 0);
+  /* HPUX 7.0 cc rejects these. */
+  ++ccp;
+  p = (char**) ccp;
+  ccp = (char const *const *) p;
+  { /* SCO 3.2v4 cc rejects this.  */
+    char *t;
+    char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+    *t++ = 0;
+  }
+  { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
+    int x[] = {25, 17};
+    const int *foo = &x[0];
+    ++foo;
+  }
+  { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+    typedef const int *iptr;
+    iptr p = 0;
+    ++p;
+  }
+  { /* AIX XL C 1.02.0.0 rejects this saying
+       "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+    struct s { int j; const int *ap[3]; };
+    struct s *b; b->j = 5;
+  }
+  { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+    const int foo = 10;
+  }
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:2442: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:2445: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:2448: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:2451: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_c_const=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_c_const=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:2461: result: $ac_cv_c_const" >&5
+echo "${ECHO_T}$ac_cv_c_const" >&6
+if test $ac_cv_c_const = no; then
+
+cat >>confdefs.h <<\EOF
+#define const
+EOF
+
+fi
+
+echo "$as_me:2471: checking for function prototypes" >&5
+echo $ECHO_N "checking for function prototypes... $ECHO_C" >&6
+if test "$ac_cv_prog_cc_stdc" != no; then
+  echo "$as_me:2474: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+cat >>confdefs.h <<\EOF
+#define PROTOTYPES 1
+EOF
+
+else
+  echo "$as_me:2482: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+echo "$as_me:2486: checking return type of signal handlers" >&5
+echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6
+if test "${ac_cv_type_signal+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 2492 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
 #ifdef signal
-#undef signal
+# undef signal
 #endif
 #ifdef __cplusplus
 extern "C" void (*signal (int, void (*)(int)))(int);
@@ -1273,36 +2502,337 @@ extern "C" void (*signal (int, void (*)(int)))(int);
 void (*signal ()) ();
 #endif
 
-int main() {
+int
+main ()
+{
 int i;
-; return 0; }
-EOF
-if { (eval echo configure:1281: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:2514: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:2517: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:2520: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:2523: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
   ac_cv_type_signal=void
 else
-  echo "configure: failed program was:" >&5
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_type_signal=int
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:2533: result: $ac_cv_type_signal" >&5
+echo "${ECHO_T}$ac_cv_type_signal" >&6
+
+cat >>confdefs.h <<EOF
+#define RETSIGTYPE $ac_cv_type_signal
+EOF
+
+echo "$as_me:2540: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 2546 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+_ACEOF
+if { (eval echo "$as_me:2554: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:2560: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_cv_header_stdc=yes
+else
+  echo "$as_me: failed program was:" >&5
   cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_type_signal=int
+  ac_cv_header_stdc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+#line 2582 "configure"
+#include "confdefs.h"
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "memchr" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
 fi
 rm -f conftest*
+
 fi
 
-echo "$ac_t""$ac_cv_type_signal" 1>&6
-cat >> confdefs.h <<EOF
-#define RETSIGTYPE $ac_cv_type_signal
+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 <<_ACEOF
+#line 2600 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "free" >/dev/null 2>&1; then
+  :
+else
+  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
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 2621 "configure"
+#include "confdefs.h"
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \
+                     || ('j' <= (c) && (c) <= 'r') \
+                     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#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);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:2647: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:2650: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:2652: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:2655: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_header_stdc=no
+fi
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:2668: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\EOF
+#define STDC_HEADERS 1
+EOF
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+                  inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:2684: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 2690 "configure"
+#include "confdefs.h"
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:2696: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:2699: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:2702: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:2705: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_Header=yes"
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:2715: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
 EOF
 
+fi
+done
+
+echo "$as_me:2725: checking for size_t" >&5
+echo $ECHO_N "checking for size_t... $ECHO_C" >&6
+if test "${ac_cv_type_size_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 2731 "configure"
+#include "confdefs.h"
+$ac_includes_default
+int
+main ()
+{
+if ((size_t *) 0)
+  return 0;
+if (sizeof (size_t))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:2746: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:2749: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:2752: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:2755: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_type_size_t=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_type_size_t=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:2765: result: $ac_cv_type_size_t" >&5
+echo "${ECHO_T}$ac_cv_type_size_t" >&6
+if test $ac_cv_type_size_t = yes; then
+  :
+else
+
+cat >>confdefs.h <<EOF
+#define size_t unsigned
+EOF
+
+fi
+
+echo "$as_me:2777: checking for ssize_t" >&5
+echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6
+if test "${ac_cv_type_ssize_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 2783 "configure"
+#include "confdefs.h"
+$ac_includes_default
+int
+main ()
+{
+if ((ssize_t *) 0)
+  return 0;
+if (sizeof (ssize_t))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:2798: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:2801: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:2804: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:2807: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_type_ssize_t=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_type_ssize_t=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:2817: result: $ac_cv_type_ssize_t" >&5
+echo "${ECHO_T}$ac_cv_type_ssize_t" >&6
+if test $ac_cv_type_ssize_t = yes; then
+  :
+else
+
+cat >>confdefs.h <<EOF
+#define ssize_t int
+EOF
 
+fi
 
-echo $ac_n "checking whether stat file-mode macros are broken""... $ac_c" 1>&6
-echo "configure:1301: checking whether stat file-mode macros are broken" >&5
-if eval "test \"`echo '$''{'ac_cv_header_stat_broken'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:2829: checking whether stat file-mode macros are broken" >&5
+echo $ECHO_N "checking whether stat file-mode macros are broken... $ECHO_C" >&6
+if test "${ac_cv_header_stat_broken+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  cat > conftest.$ac_ext <<EOF
-#line 1306 "configure"
+  cat >conftest.$ac_ext <<_ACEOF
+#line 2835 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -1331,409 +2861,516 @@ You lose.
 # endif
 #endif
 
-EOF
+_ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   egrep "You lose" >/dev/null 2>&1; then
-  rm -rf conftest*
   ac_cv_header_stat_broken=yes
 else
-  rm -rf conftest*
   ac_cv_header_stat_broken=no
 fi
 rm -f conftest*
 
 fi
-
-echo "$ac_t""$ac_cv_header_stat_broken" 1>&6
+echo "$as_me:2874: result: $ac_cv_header_stat_broken" >&5
+echo "${ECHO_T}$ac_cv_header_stat_broken" >&6
 if test $ac_cv_header_stat_broken = yes; then
-  cat >> confdefs.h <<\EOF
+
+cat >>confdefs.h <<\EOF
 #define STAT_MACROS_BROKEN 1
 EOF
 
 fi
 
 ac_header_dirent=no
-for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h
-do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
-echo "configure:1361: checking for $ac_hdr that defines DIR" >&5
-if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1366 "configure"
+for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
+  as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
+echo "$as_me:2887: checking for $ac_hdr that defines DIR" >&5
+echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 2893 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <$ac_hdr>
-int main() {
-DIR *dirp = 0;
-; return 0; }
-EOF
-if { (eval echo configure:1374: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  eval "ac_cv_header_dirent_$ac_safe=yes"
+
+int
+main ()
+{
+if ((DIR *) 0)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:2908: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:2911: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:2914: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:2917: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_Header=yes"
 else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_dirent_$ac_safe=no"
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+eval "$as_ac_Header=no"
 fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest.$ac_ext
 fi
-if eval "test \"`echo '$ac_cv_header_dirent_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
+echo "$as_me:2927: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
 EOF
- ac_header_dirent=$ac_hdr; break
-else
-  echo "$ac_t""no" 1>&6
+
+ac_header_dirent=$ac_hdr; break
 fi
+
 done
 # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
 if test $ac_header_dirent = dirent.h; then
-echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
-echo "configure:1399: checking for opendir in -ldir" >&5
-ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+  echo "$as_me:2940: checking for opendir in -ldir" >&5
+echo $ECHO_N "checking for opendir in -ldir... $ECHO_C" >&6
+if test "${ac_cv_lib_dir_opendir+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  ac_save_LIBS="$LIBS"
+  ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldir  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 1407 "configure"
+cat >conftest.$ac_ext <<_ACEOF
+#line 2948 "configure"
 #include "confdefs.h"
+
 /* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
 /* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char opendir();
-
-int main() {
-opendir()
-; return 0; }
-EOF
-if { (eval echo configure:1418: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
+   builtin and then its argument prototype would still apply.  */
+char opendir ();
+int
+main ()
+{
+opendir ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:2967: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:2970: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:2973: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:2976: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dir_opendir=yes
 else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_dir_opendir=no
 fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
 fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
+echo "$as_me:2987: result: $ac_cv_lib_dir_opendir" >&5
+echo "${ECHO_T}$ac_cv_lib_dir_opendir" >&6
+if test $ac_cv_lib_dir_opendir = yes; then
   LIBS="$LIBS -ldir"
-else
-  echo "$ac_t""no" 1>&6
 fi
 
 else
-echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
-echo "configure:1440: checking for opendir in -lx" >&5
-ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+  echo "$as_me:2994: checking for opendir in -lx" >&5
+echo $ECHO_N "checking for opendir in -lx... $ECHO_C" >&6
+if test "${ac_cv_lib_x_opendir+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  ac_save_LIBS="$LIBS"
+  ac_check_lib_save_LIBS=$LIBS
 LIBS="-lx  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 1448 "configure"
+cat >conftest.$ac_ext <<_ACEOF
+#line 3002 "configure"
 #include "confdefs.h"
+
 /* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
 /* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char opendir();
-
-int main() {
-opendir()
-; return 0; }
-EOF
-if { (eval echo configure:1459: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
+   builtin and then its argument prototype would still apply.  */
+char opendir ();
+int
+main ()
+{
+opendir ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:3021: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3024: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:3027: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3030: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_x_opendir=yes
 else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_x_opendir=no
 fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
 fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
+echo "$as_me:3041: result: $ac_cv_lib_x_opendir" >&5
+echo "${ECHO_T}$ac_cv_lib_x_opendir" >&6
+if test $ac_cv_lib_x_opendir = yes; then
   LIBS="$LIBS -lx"
-else
-  echo "$ac_t""no" 1>&6
 fi
 
 fi
 
-
 for ac_func in lstat memmove putenv select setenv setlocale \
-               strcasecmp tcgetattr
+               strcasecmp strpbrk tcgetattr vsnprintf isascii isxdigit
 do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1486: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:3053: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  cat > conftest.$ac_ext <<EOF
-#line 1491 "configure"
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3059 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
+    which can conflict with char $ac_func (); below.  */
 #include <assert.h>
 /* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
 /* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+char (*f) ();
 
+int
+main ()
+{
 /* The GNU C library defines this for functions which it implements
     to always fail with ENOSYS.  Some functions are actually named
     something starting with __ and the normal name is an alias.  */
 #if defined (__stub_$ac_func) || defined (__stub___$ac_func)
 choke me
 #else
-$ac_func();
+f = $ac_func;
 #endif
 
-; return 0; }
-EOF
-if { (eval echo configure:1514: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:3090: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3093: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:3096: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3099: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_var=yes"
 else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+eval "$as_ac_var=no"
 fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
 fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
+echo "$as_me:3109: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
 EOF
-else
-  echo "$ac_t""no" 1>&6
+
 fi
 done
 
-
-echo $ac_n "checking for working strcoll""... $ac_c" 1>&6
-echo "configure:1540: checking for working strcoll" >&5
-if eval "test \"`echo '$''{'ac_cv_func_strcoll_works'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:3119: checking for working strcoll" >&5
+echo $ECHO_N "checking for working strcoll... $ECHO_C" >&6
+if test "${ac_cv_func_strcoll_works+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   if test "$cross_compiling" = yes; then
   ac_cv_func_strcoll_works=no
 else
-  cat > conftest.$ac_ext <<EOF
-#line 1548 "configure"
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3128 "configure"
 #include "confdefs.h"
-#include <string.h>
+$ac_includes_default
+int
 main ()
 {
-  exit (strcoll ("abc", "def") >= 0 ||
-       strcoll ("ABC", "DEF") >= 0 ||
-       strcoll ("123", "456") >= 0);
+exit (strcoll ("abc", "def") >= 0 ||
+        strcoll ("ABC", "DEF") >= 0 ||
+        strcoll ("123", "456") >= 0)
+  ;
+  return 0;
 }
-EOF
-if { (eval echo configure:1558: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:3142: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3145: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:3147: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3150: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
   ac_cv_func_strcoll_works=yes
 else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  ac_cv_func_strcoll_works=no
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_func_strcoll_works=no
 fi
-rm -fr conftest*
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
-
 fi
-
-echo "$ac_t""$ac_cv_func_strcoll_works" 1>&6
+echo "$as_me:3162: result: $ac_cv_func_strcoll_works" >&5
+echo "${ECHO_T}$ac_cv_func_strcoll_works" >&6
 if test $ac_cv_func_strcoll_works = yes; then
-  cat >> confdefs.h <<\EOF
+
+cat >>confdefs.h <<\EOF
 #define HAVE_STRCOLL 1
 EOF
 
 fi
 
-
-for ac_hdr in unistd.h stdlib.h varargs.h stdarg.h string.h \
-               sys/ptem.h sys/pte.h sys/stream.h sys/select.h \
-               termcap.h termios.h termio.h sys/file.h locale.h
+for ac_header in unistd.h stdlib.h varargs.h stdarg.h string.h strings.h \
+               limits.h sys/ptem.h sys/pte.h sys/stream.h sys/select.h \
+               termcap.h termios.h termio.h sys/file.h locale.h memory.h
 do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1587: checking for $ac_hdr" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1592 "configure"
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:3177: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3183 "configure"
 #include "confdefs.h"
-#include <$ac_hdr>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1597: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:3187: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:3193: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  eval "$as_ac_Header=yes"
+else
+  echo "$as_me: failed program was:" >&5
   cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
+  eval "$as_ac_Header=no"
 fi
-rm -f conftest*
+rm -f conftest.err conftest.$ac_ext
 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 | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
+echo "$as_me:3212: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
 EOF
-else
-  echo "$ac_t""no" 1>&6
+
 fi
 done
 
-
-
-echo $ac_n "checking for type of signal functions""... $ac_c" 1>&6
-echo "configure:1626: checking for type of signal functions" >&5
-if eval "test \"`echo '$''{'bash_cv_signal_vintage'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:3222: checking for type of signal functions" >&5
+echo $ECHO_N "checking for type of signal functions... $ECHO_C" >&6
+if test "${bash_cv_signal_vintage+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  
-  cat > conftest.$ac_ext <<EOF
-#line 1632 "configure"
+
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3229 "configure"
 #include "confdefs.h"
 #include <signal.h>
-int main() {
+int
+main ()
+{
 
     sigset_t ss;
     struct sigaction sa;
     sigemptyset(&ss); sigsuspend(&ss);
     sigaction(SIGINT, &sa, (struct sigaction *) 0);
     sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0);
-  
-; return 0; }
-EOF
-if { (eval echo configure:1645: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:3247: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3250: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:3253: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3256: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
   bash_cv_signal_vintage=posix
 else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  
-    cat > conftest.$ac_ext <<EOF
-#line 1654 "configure"
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+
+    cat >conftest.$ac_ext <<_ACEOF
+#line 3264 "configure"
 #include "confdefs.h"
 #include <signal.h>
-int main() {
+int
+main ()
+{
 
        int mask = sigmask(SIGINT);
        sigsetmask(mask); sigblock(mask); sigpause(mask);
-    
-; return 0; }
-EOF
-if { (eval echo configure:1664: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:3279: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3282: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:3285: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3288: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
   bash_cv_signal_vintage=4.2bsd
 else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  
-      cat > conftest.$ac_ext <<EOF
-#line 1673 "configure"
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+
+      cat >conftest.$ac_ext <<_ACEOF
+#line 3296 "configure"
 #include "confdefs.h"
 
        #include <signal.h>
        RETSIGTYPE foo() { }
-int main() {
+int
+main ()
+{
 
                int mask = sigmask(SIGINT);
                sigset(SIGINT, foo); sigrelse(SIGINT);
                sighold(SIGINT); sigpause(SIGINT);
-        
-; return 0; }
-EOF
-if { (eval echo configure:1686: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:3314: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3317: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:3320: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3323: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
   bash_cv_signal_vintage=svr3
 else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  bash_cv_signal_vintage=v7
-    
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+bash_cv_signal_vintage=v7
+
 fi
-rm -f conftest*
-  
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+
 fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
 
 fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
 
 fi
 
-echo "$ac_t""$bash_cv_signal_vintage" 1>&6
+echo "$as_me:3342: result: $bash_cv_signal_vintage" >&5
+echo "${ECHO_T}$bash_cv_signal_vintage" >&6
 if test "$bash_cv_signal_vintage" = posix; then
-cat >> confdefs.h <<\EOF
+cat >>confdefs.h <<\EOF
 #define HAVE_POSIX_SIGNALS 1
 EOF
 
 elif test "$bash_cv_signal_vintage" = "4.2bsd"; then
-cat >> confdefs.h <<\EOF
+cat >>confdefs.h <<\EOF
 #define HAVE_BSD_SIGNALS 1
 EOF
 
 elif test "$bash_cv_signal_vintage" = svr3; then
-cat >> confdefs.h <<\EOF
+cat >>confdefs.h <<\EOF
 #define HAVE_USG_SIGHOLD 1
 EOF
 
 fi
 
-
-
-echo $ac_n "checking if signal handlers must be reinstalled when invoked""... $ac_c" 1>&6
-echo "configure:1727: checking if signal handlers must be reinstalled when invoked" >&5
-if eval "test \"`echo '$''{'bash_cv_must_reinstall_sighandlers'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:3361: checking if signal handlers must be reinstalled when invoked" >&5
+echo $ECHO_N "checking if signal handlers must be reinstalled when invoked... $ECHO_C" >&6
+if test "${bash_cv_must_reinstall_sighandlers+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   if test "$cross_compiling" = yes; then
-  echo "configure: warning: cannot check signal handling if cross compiling -- defaulting to no" 1>&2
+  { echo "$as_me:3367: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&5
+echo "$as_me: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&2;}
     bash_cv_must_reinstall_sighandlers=no
 
 else
-  cat > conftest.$ac_ext <<EOF
-#line 1737 "configure"
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3373 "configure"
 #include "confdefs.h"
 
 #include <signal.h>
@@ -1779,43 +3416,51 @@ main()
        exit(nsigint != 2);
 }
 
-EOF
-if { (eval echo configure:1784: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:3421: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3424: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:3426: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3429: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
   bash_cv_must_reinstall_sighandlers=no
 else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  bash_cv_must_reinstall_sighandlers=yes
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+bash_cv_must_reinstall_sighandlers=yes
 fi
-rm -fr conftest*
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
-
 fi
 
-echo "$ac_t""$bash_cv_must_reinstall_sighandlers" 1>&6
+echo "$as_me:3442: result: $bash_cv_must_reinstall_sighandlers" >&5
+echo "${ECHO_T}$bash_cv_must_reinstall_sighandlers" >&6
 if test $bash_cv_must_reinstall_sighandlers = yes; then
-cat >> confdefs.h <<\EOF
+cat >>confdefs.h <<\EOF
 #define MUST_REINSTALL_SIGHANDLERS 1
 EOF
 
 fi
 
-
-
-echo $ac_n "checking for presence of POSIX-style sigsetjmp/siglongjmp""... $ac_c" 1>&6
-echo "configure:1809: checking for presence of POSIX-style sigsetjmp/siglongjmp" >&5
-if eval "test \"`echo '$''{'bash_cv_func_sigsetjmp'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:3451: checking for presence of POSIX-style sigsetjmp/siglongjmp" >&5
+echo $ECHO_N "checking for presence of POSIX-style sigsetjmp/siglongjmp... $ECHO_C" >&6
+if test "${bash_cv_func_sigsetjmp+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   if test "$cross_compiling" = yes; then
-  echo "configure: warning: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing" 1>&2
+  { echo "$as_me:3457: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing" >&5
+echo "$as_me: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing" >&2;}
      bash_cv_func_sigsetjmp=missing
 
 else
-  cat > conftest.$ac_ext <<EOF
-#line 1819 "configure"
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3463 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_UNISTD_H
@@ -1855,114 +3500,100 @@ siglongjmp(xx, 10);
 exit(1);
 #endif
 }
-EOF
-if { (eval echo configure:1860: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:3505: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3508: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:3510: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3513: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
   bash_cv_func_sigsetjmp=present
 else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  bash_cv_func_sigsetjmp=missing
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+bash_cv_func_sigsetjmp=missing
 fi
-rm -fr conftest*
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
-
 fi
 
-echo "$ac_t""$bash_cv_func_sigsetjmp" 1>&6
+echo "$as_me:3526: result: $bash_cv_func_sigsetjmp" >&5
+echo "${ECHO_T}$bash_cv_func_sigsetjmp" >&6
 if test $bash_cv_func_sigsetjmp = present; then
-cat >> confdefs.h <<\EOF
+cat >>confdefs.h <<\EOF
 #define HAVE_POSIX_SIGSETJMP 1
 EOF
 
 fi
 
-echo $ac_n "checking for lstat""... $ac_c" 1>&6
-echo "configure:1883: checking for lstat" >&5
-if eval "test \"`echo '$''{'bash_cv_func_lstat'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:3535: checking for lstat" >&5
+echo $ECHO_N "checking for lstat... $ECHO_C" >&6
+if test "${bash_cv_func_lstat+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  cat > conftest.$ac_ext <<EOF
-#line 1888 "configure"
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3541 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
 #include <sys/stat.h>
 
-int main() {
- lstat(".",(struct stat *)0); 
-; return 0; }
-EOF
-if { (eval echo configure:1898: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
+int
+main ()
+{
+ lstat(".",(struct stat *)0);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:3556: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3559: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:3562: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3565: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
   bash_cv_func_lstat=yes
 else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  bash_cv_func_lstat=no
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+bash_cv_func_lstat=no
 fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
 fi
-
-echo "$ac_t""$bash_cv_func_lstat" 1>&6
+echo "$as_me:3575: result: $bash_cv_func_lstat" >&5
+echo "${ECHO_T}$bash_cv_func_lstat" >&6
 if test $bash_cv_func_lstat = yes; then
-  cat >> confdefs.h <<\EOF
+  cat >>confdefs.h <<\EOF
 #define HAVE_LSTAT 1
 EOF
 
 fi
 
-echo $ac_n "checking whether getpw functions are declared in pwd.h""... $ac_c" 1>&6
-echo "configure:1919: checking whether getpw functions are declared in pwd.h" >&5
-if eval "test \"`echo '$''{'bash_cv_getpw_declared'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1924 "configure"
-#include "confdefs.h"
-
-#include <sys/types.h>
-#ifdef HAVE_UNISTD_H
-#  include <unistd.h>
-#endif
-#include <pwd.h>
-
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "getpwuid" >/dev/null 2>&1; then
-  rm -rf conftest*
-  bash_cv_getpw_declared=yes
-else
-  rm -rf conftest*
-  bash_cv_getpw_declared=no
-fi
-rm -f conftest*
-
-fi
-
-echo "$ac_t""$bash_cv_getpw_declared" 1>&6
-if test $bash_cv_getpw_declared = yes; then
-cat >> confdefs.h <<\EOF
-#define HAVE_GETPW_DECLS 1
-EOF
-
-fi
-
-
-echo $ac_n "checking whether or not strcoll and strcmp differ""... $ac_c" 1>&6
-echo "configure:1956: checking whether or not strcoll and strcmp differ" >&5
-if eval "test \"`echo '$''{'bash_cv_func_strcoll_broken'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:3584: checking whether or not strcoll and strcmp differ" >&5
+echo $ECHO_N "checking whether or not strcoll and strcmp differ... $ECHO_C" >&6
+if test "${bash_cv_func_strcoll_broken+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   if test "$cross_compiling" = yes; then
-  echo "configure: warning: cannot check strcoll if cross compiling -- defaulting to no" 1>&2
+  { echo "$as_me:3590: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&5
+echo "$as_me: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&2;}
     bash_cv_func_strcoll_broken=no
 
 else
-  cat > conftest.$ac_ext <<EOF
-#line 1966 "configure"
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3596 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -2000,274 +3631,476 @@ char    *v[];
        exit (r1 > 0 && r2 > 0);
 }
 
-EOF
-if { (eval echo configure:2005: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:3636: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3639: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:3641: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3644: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
   bash_cv_func_strcoll_broken=yes
 else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  bash_cv_func_strcoll_broken=no
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+bash_cv_func_strcoll_broken=no
 fi
-rm -fr conftest*
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
-
 fi
 
-echo "$ac_t""$bash_cv_func_strcoll_broken" 1>&6
+echo "$as_me:3657: result: $bash_cv_func_strcoll_broken" >&5
+echo "${ECHO_T}$bash_cv_func_strcoll_broken" >&6
 if test $bash_cv_func_strcoll_broken = yes; then
-cat >> confdefs.h <<\EOF
+cat >>confdefs.h <<\EOF
 #define STRCOLL_BROKEN 1
 EOF
 
 fi
 
-
-echo $ac_n "checking whether signal handlers are of type void""... $ac_c" 1>&6
-echo "configure:2029: checking whether signal handlers are of type void" >&5
-if eval "test \"`echo '$''{'bash_cv_void_sighandler'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:3666: checking whether getpw functions are declared in pwd.h" >&5
+echo $ECHO_N "checking whether getpw functions are declared in pwd.h... $ECHO_C" >&6
+if test "${bash_cv_getpw_declared+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  cat > conftest.$ac_ext <<EOF
-#line 2034 "configure"
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3672 "configure"
 #include "confdefs.h"
+
 #include <sys/types.h>
-#include <signal.h>
-#ifdef signal
-#undef signal
-#endif
-#ifdef __cplusplus
-extern "C"
+#ifdef HAVE_UNISTD_H
+#  include <unistd.h>
 #endif
-void (*signal ()) ();
-int main() {
-int i;
-; return 0; }
-EOF
-if { (eval echo configure:2049: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  bash_cv_void_sighandler=yes
+#include <pwd.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "getpwuid" >/dev/null 2>&1; then
+  bash_cv_getpw_declared=yes
 else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  bash_cv_void_sighandler=no
+  bash_cv_getpw_declared=no
 fi
 rm -f conftest*
+
 fi
-echo "$ac_t""$bash_cv_void_sighandler" 1>&6
-if test $bash_cv_void_sighandler = yes; then
-cat >> confdefs.h <<\EOF
-#define VOID_SIGHANDLER 1
+
+echo "$as_me:3692: result: $bash_cv_getpw_declared" >&5
+echo "${ECHO_T}$bash_cv_getpw_declared" >&6
+if test $bash_cv_getpw_declared = yes; then
+cat >>confdefs.h <<\EOF
+#define HAVE_GETPW_DECLS 1
 EOF
 
 fi
 
-echo $ac_n "checking for TIOCGWINSZ in sys/ioctl.h""... $ac_c" 1>&6
-echo "configure:2069: checking for TIOCGWINSZ in sys/ioctl.h" >&5
-if eval "test \"`echo '$''{'bash_cv_tiocgwinsz_in_ioctl'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:3701: checking POSIX termios" >&5
+echo $ECHO_N "checking POSIX termios... $ECHO_C" >&6
+if test "${ac_cv_sys_posix_termios+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3707 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <unistd.h>
+#include <termios.h>
+int
+main ()
+{
+/* SunOS 4.0.3 has termios.h but not the library calls.  */
+   tcgetattr(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:3722: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3725: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:3728: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3731: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sys_posix_termios=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_sys_posix_termios=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:3741: result: $ac_cv_sys_posix_termios" >&5
+echo "${ECHO_T}$ac_cv_sys_posix_termios" >&6
+
+if test $ac_cv_sys_posix_termios = yes; then
+  echo "$as_me:3745: checking whether termios.h defines TIOCGWINSZ" >&5
+echo $ECHO_N "checking whether termios.h defines TIOCGWINSZ... $ECHO_C" >&6
+if test "${ac_cv_sys_tiocgwinsz_in_termios_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3751 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <termios.h>
+#ifdef TIOCGWINSZ
+  yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "yes" >/dev/null 2>&1; then
+  ac_cv_sys_tiocgwinsz_in_termios_h=yes
+else
+  ac_cv_sys_tiocgwinsz_in_termios_h=no
+fi
+rm -f conftest*
+
+fi
+echo "$as_me:3769: result: $ac_cv_sys_tiocgwinsz_in_termios_h" >&5
+echo "${ECHO_T}$ac_cv_sys_tiocgwinsz_in_termios_h" >&6
+
+fi
+if test $ac_cv_sys_tiocgwinsz_in_termios_h != yes; then
+  echo "$as_me:3774: checking whether sys/ioctl.h defines TIOCGWINSZ" >&5
+echo $ECHO_N "checking whether sys/ioctl.h defines TIOCGWINSZ... $ECHO_C" >&6
+if test "${ac_cv_sys_tiocgwinsz_in_sys_ioctl_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  cat > conftest.$ac_ext <<EOF
-#line 2074 "configure"
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3780 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/ioctl.h>
-int main() {
-int x = TIOCGWINSZ;
-; return 0; }
-EOF
-if { (eval echo configure:2082: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  bash_cv_tiocgwinsz_in_ioctl=yes
+#ifdef TIOCGWINSZ
+  yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "yes" >/dev/null 2>&1; then
+  ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=yes
 else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  bash_cv_tiocgwinsz_in_ioctl=no
+  ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=no
 fi
 rm -f conftest*
+
 fi
+echo "$as_me:3798: result: $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&5
+echo "${ECHO_T}$ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&6
+
+  if test $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h = yes; then
 
-echo "$ac_t""$bash_cv_tiocgwinsz_in_ioctl" 1>&6
-if test $bash_cv_tiocgwinsz_in_ioctl = yes; then   
-cat >> confdefs.h <<\EOF
+cat >>confdefs.h <<\EOF
 #define GWINSZ_IN_SYS_IOCTL 1
+EOF
+
+  fi
+fi
+
+echo "$as_me:3810: checking whether signal handlers are of type void" >&5
+echo $ECHO_N "checking whether signal handlers are of type void... $ECHO_C" >&6
+if test "${bash_cv_void_sighandler+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3816 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <signal.h>
+#ifdef signal
+#undef signal
+#endif
+#ifdef __cplusplus
+extern "C"
+#endif
+void (*signal ()) ();
+int
+main ()
+{
+int i;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3836: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:3839: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:3842: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3845: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  bash_cv_void_sighandler=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+bash_cv_void_sighandler=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:3855: result: $bash_cv_void_sighandler" >&5
+echo "${ECHO_T}$bash_cv_void_sighandler" >&6
+if test $bash_cv_void_sighandler = yes; then
+cat >>confdefs.h <<\EOF
+#define VOID_SIGHANDLER 1
 EOF
 
 fi
 
-echo $ac_n "checking for TIOCSTAT in sys/ioctl.h""... $ac_c" 1>&6
-echo "configure:2103: checking for TIOCSTAT in sys/ioctl.h" >&5
-if eval "test \"`echo '$''{'bash_cv_tiocstat_in_ioctl'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:3864: checking for TIOCSTAT in sys/ioctl.h" >&5
+echo $ECHO_N "checking for TIOCSTAT in sys/ioctl.h... $ECHO_C" >&6
+if test "${bash_cv_tiocstat_in_ioctl+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  cat > conftest.$ac_ext <<EOF
-#line 2108 "configure"
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3870 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/ioctl.h>
-int main() {
+int
+main ()
+{
 int x = TIOCSTAT;
-; return 0; }
-EOF
-if { (eval echo configure:2116: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3883: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:3886: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:3889: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3892: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
   bash_cv_tiocstat_in_ioctl=yes
 else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  bash_cv_tiocstat_in_ioctl=no
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+bash_cv_tiocstat_in_ioctl=no
 fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest.$ac_ext
 fi
 
-echo "$ac_t""$bash_cv_tiocstat_in_ioctl" 1>&6
-if test $bash_cv_tiocstat_in_ioctl = yes; then   
-cat >> confdefs.h <<\EOF
+echo "$as_me:3903: result: $bash_cv_tiocstat_in_ioctl" >&5
+echo "${ECHO_T}$bash_cv_tiocstat_in_ioctl" >&6
+if test $bash_cv_tiocstat_in_ioctl = yes; then
+cat >>confdefs.h <<\EOF
 #define TIOCSTAT_IN_SYS_IOCTL 1
 EOF
 
 fi
 
-echo $ac_n "checking for FIONREAD in sys/ioctl.h""... $ac_c" 1>&6
-echo "configure:2137: checking for FIONREAD in sys/ioctl.h" >&5
-if eval "test \"`echo '$''{'bash_cv_fionread_in_ioctl'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:3912: checking for FIONREAD in sys/ioctl.h" >&5
+echo $ECHO_N "checking for FIONREAD in sys/ioctl.h... $ECHO_C" >&6
+if test "${bash_cv_fionread_in_ioctl+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  cat > conftest.$ac_ext <<EOF
-#line 2142 "configure"
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3918 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/ioctl.h>
-int main() {
+int
+main ()
+{
 int x = FIONREAD;
-; return 0; }
-EOF
-if { (eval echo configure:2150: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3931: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:3934: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:3937: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3940: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
   bash_cv_fionread_in_ioctl=yes
 else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  bash_cv_fionread_in_ioctl=no
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+bash_cv_fionread_in_ioctl=no
 fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest.$ac_ext
 fi
 
-echo "$ac_t""$bash_cv_fionread_in_ioctl" 1>&6
-if test $bash_cv_fionread_in_ioctl = yes; then   
-cat >> confdefs.h <<\EOF
+echo "$as_me:3951: result: $bash_cv_fionread_in_ioctl" >&5
+echo "${ECHO_T}$bash_cv_fionread_in_ioctl" >&6
+if test $bash_cv_fionread_in_ioctl = yes; then
+cat >>confdefs.h <<\EOF
 #define FIONREAD_IN_SYS_IOCTL 1
 EOF
 
 fi
 
-echo $ac_n "checking for speed_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:2171: checking for speed_t in sys/types.h" >&5
-if eval "test \"`echo '$''{'bash_cv_speed_t_in_sys_types'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:3960: checking for speed_t in sys/types.h" >&5
+echo $ECHO_N "checking for speed_t in sys/types.h... $ECHO_C" >&6
+if test "${bash_cv_speed_t_in_sys_types+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  cat > conftest.$ac_ext <<EOF
-#line 2176 "configure"
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3966 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
-int main() {
+int
+main ()
+{
 speed_t x;
-; return 0; }
-EOF
-if { (eval echo configure:2183: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3978: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:3981: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:3984: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3987: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
   bash_cv_speed_t_in_sys_types=yes
 else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  bash_cv_speed_t_in_sys_types=no
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+bash_cv_speed_t_in_sys_types=no
 fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest.$ac_ext
 fi
 
-echo "$ac_t""$bash_cv_speed_t_in_sys_types" 1>&6
-if test $bash_cv_speed_t_in_sys_types = yes; then   
-cat >> confdefs.h <<\EOF
+echo "$as_me:3998: result: $bash_cv_speed_t_in_sys_types" >&5
+echo "${ECHO_T}$bash_cv_speed_t_in_sys_types" >&6
+if test $bash_cv_speed_t_in_sys_types = yes; then
+cat >>confdefs.h <<\EOF
 #define SPEED_T_IN_SYS_TYPES 1
 EOF
 
 fi
 
-echo $ac_n "checking for struct winsize in sys/ioctl.h and termios.h""... $ac_c" 1>&6
-echo "configure:2204: checking for struct winsize in sys/ioctl.h and termios.h" >&5
-if eval "test \"`echo '$''{'bash_cv_struct_winsize_header'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:4007: checking for struct winsize in sys/ioctl.h and termios.h" >&5
+echo $ECHO_N "checking for struct winsize in sys/ioctl.h and termios.h... $ECHO_C" >&6
+if test "${bash_cv_struct_winsize_header+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  cat > conftest.$ac_ext <<EOF
-#line 2209 "configure"
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4013 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/ioctl.h>
-int main() {
+int
+main ()
+{
 struct winsize x;
-; return 0; }
-EOF
-if { (eval echo configure:2217: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4026: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:4029: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:4032: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4035: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
   bash_cv_struct_winsize_header=ioctl_h
 else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  cat > conftest.$ac_ext <<EOF
-#line 2225 "configure"
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cat >conftest.$ac_ext <<_ACEOF
+#line 4042 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <termios.h>
-int main() {
+int
+main ()
+{
 struct winsize x;
-; return 0; }
-EOF
-if { (eval echo configure:2233: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4055: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:4058: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:4061: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4064: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
   bash_cv_struct_winsize_header=termios_h
 else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  bash_cv_struct_winsize_header=other
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+bash_cv_struct_winsize_header=other
 fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest.$ac_ext
 
 fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest.$ac_ext
 fi
 
 if test $bash_cv_struct_winsize_header = ioctl_h; then
-  echo "$ac_t""sys/ioctl.h" 1>&6
-  cat >> confdefs.h <<\EOF
+  echo "$as_me:4079: result: sys/ioctl.h" >&5
+echo "${ECHO_T}sys/ioctl.h" >&6
+  cat >>confdefs.h <<\EOF
 #define STRUCT_WINSIZE_IN_SYS_IOCTL 1
 EOF
 
 elif test $bash_cv_struct_winsize_header = termios_h; then
-  echo "$ac_t""termios.h" 1>&6
-  cat >> confdefs.h <<\EOF
+  echo "$as_me:4086: result: termios.h" >&5
+echo "${ECHO_T}termios.h" >&6
+  cat >>confdefs.h <<\EOF
 #define STRUCT_WINSIZE_IN_TERMIOS 1
 EOF
 
 else
-  echo "$ac_t""not found" 1>&6
+  echo "$as_me:4093: result: not found" >&5
+echo "${ECHO_T}not found" >&6
 fi
 
-
-echo $ac_n "checking if struct dirent has a d_ino member""... $ac_c" 1>&6
-echo "configure:2266: checking if struct dirent has a d_ino member" >&5
-if eval "test \"`echo '$''{'bash_cv_dirent_has_dino'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:4097: checking if struct dirent has a d_ino member" >&5
+echo $ECHO_N "checking if struct dirent has a d_ino member... $ECHO_C" >&6
+if test "${bash_cv_dirent_has_dino+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  cat > conftest.$ac_ext <<EOF
-#line 2271 "configure"
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4103 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -2290,40 +4123,53 @@ else
 # endif
 #endif /* HAVE_DIRENT_H */
 
-int main() {
+int
+main ()
+{
 
 struct dirent d; int z; z = d.d_ino;
 
-; return 0; }
-EOF
-if { (eval echo configure:2300: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4137: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:4140: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:4143: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4146: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
   bash_cv_dirent_has_dino=yes
 else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  bash_cv_dirent_has_dino=no
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+bash_cv_dirent_has_dino=no
 fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest.$ac_ext
 fi
 
-echo "$ac_t""$bash_cv_dirent_has_dino" 1>&6
+echo "$as_me:4157: result: $bash_cv_dirent_has_dino" >&5
+echo "${ECHO_T}$bash_cv_dirent_has_dino" >&6
 if test $bash_cv_dirent_has_dino = yes; then
-cat >> confdefs.h <<\EOF
+cat >>confdefs.h <<\EOF
 #define STRUCT_DIRENT_HAS_D_INO 1
 EOF
 
 fi
 
-
-echo $ac_n "checking if struct dirent has a d_fileno member""... $ac_c" 1>&6
-echo "configure:2322: checking if struct dirent has a d_fileno member" >&5
-if eval "test \"`echo '$''{'bash_cv_dirent_has_d_fileno'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:4166: checking if struct dirent has a d_fileno member" >&5
+echo $ECHO_N "checking if struct dirent has a d_fileno member... $ECHO_C" >&6
+if test "${bash_cv_dirent_has_d_fileno+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  cat > conftest.$ac_ext <<EOF
-#line 2327 "configure"
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4172 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -2346,33 +4192,46 @@ else
 # endif
 #endif /* HAVE_DIRENT_H */
 
-int main() {
+int
+main ()
+{
 
 struct dirent d; int z; z = d.d_fileno;
 
-; return 0; }
-EOF
-if { (eval echo configure:2356: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4206: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:4209: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:4212: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4215: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
   bash_cv_dirent_has_d_fileno=yes
 else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  bash_cv_dirent_has_d_fileno=no
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+bash_cv_dirent_has_d_fileno=no
 fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest.$ac_ext
 fi
 
-echo "$ac_t""$bash_cv_dirent_has_d_fileno" 1>&6
+echo "$as_me:4226: result: $bash_cv_dirent_has_d_fileno" >&5
+echo "${ECHO_T}$bash_cv_dirent_has_d_fileno" >&6
 if test $bash_cv_dirent_has_d_fileno = yes; then
-cat >> confdefs.h <<\EOF
+cat >>confdefs.h <<\EOF
 #define STRUCT_DIRENT_HAS_D_FILENO 1
 EOF
 
 fi
 
-
 case "$host_os" in
 aix*)   prefer_curses=yes ;;
 esac
@@ -2380,128 +4239,224 @@ esac
 if test "X$bash_cv_termcap_lib" = "X"; then
 _bash_needmsg=yes
 else
-echo $ac_n "checking which library has the termcap functions""... $ac_c" 1>&6
-echo "configure:2385: checking which library has the termcap functions" >&5
+echo "$as_me:4242: checking which library has the termcap functions" >&5
+echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6
 _bash_needmsg=
 fi
-if eval "test \"`echo '$''{'bash_cv_termcap_lib'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+if test "${bash_cv_termcap_lib+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  echo $ac_n "checking for tgetent in -ltermcap""... $ac_c" 1>&6
-echo "configure:2392: checking for tgetent in -ltermcap" >&5
-ac_lib_var=`echo termcap'_'tgetent | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+  echo "$as_me:4249: checking for tgetent in -ltermcap" >&5
+echo $ECHO_N "checking for tgetent in -ltermcap... $ECHO_C" >&6
+if test "${ac_cv_lib_termcap_tgetent+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  ac_save_LIBS="$LIBS"
+  ac_check_lib_save_LIBS=$LIBS
 LIBS="-ltermcap  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2400 "configure"
+cat >conftest.$ac_ext <<_ACEOF
+#line 4257 "configure"
 #include "confdefs.h"
+
 /* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
 /* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char tgetent();
-
-int main() {
-tgetent()
-; return 0; }
-EOF
-if { (eval echo configure:2411: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
+   builtin and then its argument prototype would still apply.  */
+char tgetent ();
+int
+main ()
+{
+tgetent ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:4276: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:4279: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:4282: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4285: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_termcap_tgetent=yes
 else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_termcap_tgetent=no
 fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
 fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
+echo "$as_me:4296: result: $ac_cv_lib_termcap_tgetent" >&5
+echo "${ECHO_T}$ac_cv_lib_termcap_tgetent" >&6
+if test $ac_cv_lib_termcap_tgetent = yes; then
   bash_cv_termcap_lib=libtermcap
 else
-  echo "$ac_t""no" 1>&6
-echo $ac_n "checking for tgetent in -lcurses""... $ac_c" 1>&6
-echo "configure:2430: checking for tgetent in -lcurses" >&5
-ac_lib_var=`echo curses'_'tgetent | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+  echo "$as_me:4301: checking for tgetent in -ltinfo" >&5
+echo $ECHO_N "checking for tgetent in -ltinfo... $ECHO_C" >&6
+if test "${ac_cv_lib_tinfo_tgetent+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  ac_save_LIBS="$LIBS"
-LIBS="-lcurses  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2438 "configure"
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ltinfo  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 4309 "configure"
 #include "confdefs.h"
+
 /* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
 /* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char tgetent();
-
-int main() {
-tgetent()
-; return 0; }
-EOF
-if { (eval echo configure:2449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
+   builtin and then its argument prototype would still apply.  */
+char tgetent ();
+int
+main ()
+{
+tgetent ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:4328: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:4331: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:4334: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4337: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_tinfo_tgetent=yes
 else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_tinfo_tgetent=no
 fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:4348: result: $ac_cv_lib_tinfo_tgetent" >&5
+echo "${ECHO_T}$ac_cv_lib_tinfo_tgetent" >&6
+if test $ac_cv_lib_tinfo_tgetent = yes; then
+  bash_cv_termcal_lib=libtinfo
+else
+  echo "$as_me:4353: checking for tgetent in -lcurses" >&5
+echo $ECHO_N "checking for tgetent in -lcurses... $ECHO_C" >&6
+if test "${ac_cv_lib_curses_tgetent+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lcurses  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 4361 "configure"
+#include "confdefs.h"
 
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char tgetent ();
+int
+main ()
+{
+tgetent ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:4380: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:4383: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:4386: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4389: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_curses_tgetent=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_curses_tgetent=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
 fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
+echo "$as_me:4400: result: $ac_cv_lib_curses_tgetent" >&5
+echo "${ECHO_T}$ac_cv_lib_curses_tgetent" >&6
+if test $ac_cv_lib_curses_tgetent = yes; then
   bash_cv_termcap_lib=libcurses
 else
-  echo "$ac_t""no" 1>&6
-echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6
-echo "configure:2468: checking for tgetent in -lncurses" >&5
-ac_lib_var=`echo ncurses'_'tgetent | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+  echo "$as_me:4405: checking for tgetent in -lncurses" >&5
+echo $ECHO_N "checking for tgetent in -lncurses... $ECHO_C" >&6
+if test "${ac_cv_lib_ncurses_tgetent+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  ac_save_LIBS="$LIBS"
+  ac_check_lib_save_LIBS=$LIBS
 LIBS="-lncurses  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2476 "configure"
+cat >conftest.$ac_ext <<_ACEOF
+#line 4413 "configure"
 #include "confdefs.h"
+
 /* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
 /* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char tgetent();
-
-int main() {
-tgetent()
-; return 0; }
-EOF
-if { (eval echo configure:2487: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
+   builtin and then its argument prototype would still apply.  */
+char tgetent ();
+int
+main ()
+{
+tgetent ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:4432: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:4435: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:4438: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4441: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_ncurses_tgetent=yes
 else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_ncurses_tgetent=no
 fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
 fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
+echo "$as_me:4452: result: $ac_cv_lib_ncurses_tgetent" >&5
+echo "${ECHO_T}$ac_cv_lib_ncurses_tgetent" >&6
+if test $ac_cv_lib_ncurses_tgetent = yes; then
   bash_cv_termcap_lib=libncurses
 else
-  echo "$ac_t""no" 1>&6
-bash_cv_termcap_lib=gnutermcap
+  bash_cv_termcap_lib=gnutermcap
+fi
+
 fi
 
 fi
@@ -2511,10 +4466,11 @@ fi
 fi
 
 if test "X$_bash_needmsg" = "Xyes"; then
-echo $ac_n "checking which library has the termcap functions""... $ac_c" 1>&6
-echo "configure:2516: checking which library has the termcap functions" >&5
+echo "$as_me:4469: checking which library has the termcap functions" >&5
+echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6
 fi
-echo "$ac_t""using $bash_cv_termcap_lib" 1>&6
+echo "$as_me:4472: result: using $bash_cv_termcap_lib" >&5
+echo "${ECHO_T}using $bash_cv_termcap_lib" >&6
 if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then
 LDFLAGS="$LDFLAGS -L./lib/termcap"
 TERMCAP_LIB="./lib/termcap/libtermcap.a"
@@ -2522,6 +4478,9 @@ TERMCAP_DEP="./lib/termcap/libtermcap.a"
 elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then
 TERMCAP_LIB=-ltermcap
 TERMCAP_DEP=
+elif test $bash_cv_termcap_lib = libtinfo; then
+TERMCAP_LIB=-ltinfo
+TERMCAP_DEP=
 elif test $bash_cv_termcap_lib = libncurses; then
 TERMCAP_LIB=-lncurses
 TERMCAP_DEP=
@@ -2549,29 +4508,18 @@ esac
 # ${srcdir}/support/shobj-conf
 #
 if test -f ${srcdir}/support/shobj-conf; then
-        echo $ac_n "checking configuration for building shared libraries""... $ac_c" 1>&6
-echo "configure:2554: checking configuration for building shared libraries" >&5
+        echo "$as_me:4511: checking configuration for building shared libraries" >&5
+echo $ECHO_N "checking configuration for building shared libraries... $ECHO_C" >&6
         eval `${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c ${host_cpu} -o ${host_os} -v ${host_vendor}`
-        
-        
-        
-        
-       
-        
-        
-       
-       
-       
-       
-       
-        echo "$ac_t""$SHLIB_STATUS" 1>&6
+
+        echo "$as_me:4515: result: $SHLIB_STATUS" >&5
+echo "${ECHO_T}$SHLIB_STATUS" >&6
 
        # shared library versioning
        # quoted for m4 so I can use character classes
        SHLIB_MAJOR=`expr "$LIBVERSION" : '\([0-9]\)\..*'`
        SHLIB_MINOR=`expr "$LIBVERSION" : '[0-9]\.\([0-9]\).*'`
-       
-       
+
 fi
 
 case "$host_os" in
@@ -2579,410 +4527,878 @@ msdosdjgpp*)  BUILD_DIR=`pwd.exe` ;;  # to prevent //d/path/file
 *)             BUILD_DIR=`pwd` ;;
 esac
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-trap '' 1 2 15
-cat > confcache <<\EOF
+ac_config_files="$ac_config_files Makefile doc/Makefile examples/Makefile shlib/Makefile"
+ac_config_commands="$ac_config_commands default"
+cat >confcache <<\_ACEOF
 # 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.
+# scripts and configure runs, see configure's option --config-cache.
+# 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.
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
 #
-EOF
+# `ac_cv_env_foo' variables (set or unset) will be overriden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
 # The following way of writing the cache mishandles newlines in values,
 # but we know of no workaround that is simple, portable, and efficient.
 # So, don't put newlines in cache variables' values.
 # 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 |
-  case `(ac_space=' '; set | grep ac_space) 2>&1` in
-  *ac_space=\ *)
-    # `set' does not quote correctly, so add quotes (double-quote substitution
-    # turns \\\\ into \\, and sed turns \\ into \).
-    sed -n \
-      -e "s/'/'\\\\''/g" \
-      -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
-    ;;
-  *)
-    # `set' quotes correctly as required by POSIX, so do not add quotes.
-    sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
-    ;;
-  esac >> confcache
-if cmp -s $cache_file confcache; then
-  :
-else
+{
+  (set) 2>&1 |
+    case `(ac_space=' '; set | grep ac_space) 2>&1` in
+    *ac_space=\ *)
+      # `set' does not quote correctly, so add quotes (double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \).
+      sed -n \
+        "s/'/'\\\\''/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;;
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n \
+        "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      ;;
+    esac;
+} |
+  sed '
+     t clear
+     : clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     : end' >>confcache
+if cmp -s $cache_file confcache; then :; else
   if test -w $cache_file; then
-    echo "updating cache $cache_file"
-    cat confcache > $cache_file
+    test "x$cache_file" != "x/dev/null" && 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.
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
 if test "x$srcdir" = x.; then
-  ac_vpsub='/^[        ]*VPATH[        ]*=[^:]*$/d'
+  ac_vpsub='/^[        ]*VPATH[        ]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[   ]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[     ]*$//;
+}'
 fi
 
-trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
-
 DEFS=-DHAVE_CONFIG_H
 
-# 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
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:4611: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
 # 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.
+# configure, is in config.log if it exists.
 
-ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
-for ac_option
+debug=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+ac_cs_invocation="\$0 \$@"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+
+# Name of the executable.
+as_me=`echo "$0" |sed 's,.*[\\/],,'`
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+as_executable_p="test -f"
+
+# Support unset when possible.
+if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+# NLS nuisances.
+$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; }
+$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; }
+$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; }
+$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; }
+$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; }
+$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; }
+$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; }
+$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; }
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS="  $as_nl"
+
+# CDPATH.
+$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; }
+
+exec 6>&1
+
+_ACEOF
+
+# Files that config.status was made for.
+if test -n "$ac_config_files"; then
+  echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_headers"; then
+  echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_links"; then
+  echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_commands"; then
+  echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+fi
+
+cat >>$CONFIG_STATUS <<\EOF
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number, then exit
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+  --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+  --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <bug-autoconf@gnu.org>."
+EOF
+
+cat >>$CONFIG_STATUS <<EOF
+ac_cs_version="\\
+readline config.status 4.2a
+configured by $0, generated by GNU Autoconf 2.52,
+  with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=$srcdir
+INSTALL="$INSTALL"
+EOF
+
+cat >>$CONFIG_STATUS <<\EOF
+# If no file are specified by the user, then we need to provide default
+# value.  By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
 do
-  case "\$ac_option" in
+  case $1 in
+  --*=*)
+    ac_option=`expr "x$1" : 'x\([^=]*\)='`
+    ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+    shift
+    set dummy "$ac_option" "$ac_optarg" ${1+"$@"}
+    shift
+    ;;
+  -*);;
+  *) # This is not an option, so the user has probably given explicit
+     # arguments.
+     ac_need_defaults=false;;
+  esac
+
+  case $1 in
+  # Handling of the options.
+EOF
+cat >>$CONFIG_STATUS <<EOF
   -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.13"
-    exit 0 ;;
-  -help | --help | --hel | --he | --h)
-    echo "\$ac_cs_usage"; exit 0 ;;
-  *) echo "\$ac_cs_usage"; exit 1 ;;
+    echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion"
+    exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;;
+EOF
+cat >>$CONFIG_STATUS <<\EOF
+  --version | --vers* | -V )
+    echo "$ac_cs_version"; exit 0 ;;
+  --he | --h)
+    # Conflict between --help and --header
+    { { echo "$as_me:4787: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; };;
+  --help | --hel | -h )
+    echo "$ac_cs_usage"; exit 0 ;;
+  --debug | --d* | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    shift
+    CONFIG_FILES="$CONFIG_FILES $1"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    shift
+    CONFIG_HEADERS="$CONFIG_HEADERS $1"
+    ac_need_defaults=false;;
+
+  # This is an error.
+  -*) { { echo "$as_me:4806: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; } ;;
+
+  *) ac_config_targets="$ac_config_targets $1" ;;
+
   esac
+  shift
 done
 
-ac_given_srcdir=$srcdir
-ac_given_INSTALL="$INSTALL"
+exec 5>>config.log
+cat >&5 << _ACEOF
+
+## ----------------------- ##
+## Running config.status.  ##
+## ----------------------- ##
+
+This file was extended by $as_me (readline 4.2a) 2.52, executed with
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  > $ac_cs_invocation
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
 
-trap 'rm -fr `echo "Makefile doc/Makefile examples/Makefile shlib/Makefile config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+_ACEOF
 EOF
-cat >> $CONFIG_STATUS <<EOF
 
-# 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%@SHELL@%$SHELL%g
-s%@CFLAGS@%$CFLAGS%g
-s%@CPPFLAGS@%$CPPFLAGS%g
-s%@CXXFLAGS@%$CXXFLAGS%g
-s%@FFLAGS@%$FFLAGS%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%@bindir@%$bindir%g
-s%@sbindir@%$sbindir%g
-s%@libexecdir@%$libexecdir%g
-s%@datadir@%$datadir%g
-s%@sysconfdir@%$sysconfdir%g
-s%@sharedstatedir@%$sharedstatedir%g
-s%@localstatedir@%$localstatedir%g
-s%@libdir@%$libdir%g
-s%@includedir@%$includedir%g
-s%@oldincludedir@%$oldincludedir%g
-s%@infodir@%$infodir%g
-s%@mandir@%$mandir%g
-s%@host@%$host%g
-s%@host_alias@%$host_alias%g
-s%@host_cpu@%$host_cpu%g
-s%@host_vendor@%$host_vendor%g
-s%@host_os@%$host_os%g
-s%@SET_MAKE@%$SET_MAKE%g
-s%@CC@%$CC%g
-s%@CPP@%$CPP%g
-s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
-s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
-s%@INSTALL_DATA@%$INSTALL_DATA%g
-s%@AR@%$AR%g
-s%@RANLIB@%$RANLIB%g
-s%@MAKE_SHELL@%$MAKE_SHELL%g
-s%@SHOBJ_CC@%$SHOBJ_CC%g
-s%@SHOBJ_CFLAGS@%$SHOBJ_CFLAGS%g
-s%@SHOBJ_LD@%$SHOBJ_LD%g
-s%@SHOBJ_LDFLAGS@%$SHOBJ_LDFLAGS%g
-s%@SHOBJ_XLDFLAGS@%$SHOBJ_XLDFLAGS%g
-s%@SHOBJ_LIBS@%$SHOBJ_LIBS%g
-s%@SHOBJ_STATUS@%$SHOBJ_STATUS%g
-s%@SHLIB_STATUS@%$SHLIB_STATUS%g
-s%@SHLIB_XLDFLAGS@%$SHLIB_XLDFLAGS%g
-s%@SHLIB_LIBSUFF@%$SHLIB_LIBSUFF%g
-s%@SHLIB_LIBVERSION@%$SHLIB_LIBVERSION%g
-s%@SHLIB_LIBS@%$SHLIB_LIBS%g
-s%@SHLIB_MAJOR@%$SHLIB_MAJOR%g
-s%@SHLIB_MINOR@%$SHLIB_MINOR%g
-s%@BUILD_DIR@%$BUILD_DIR%g
-s%@LOCAL_CFLAGS@%$LOCAL_CFLAGS%g
-s%@LOCAL_LDFLAGS@%$LOCAL_LDFLAGS%g
-s%@LOCAL_DEFS@%$LOCAL_DEFS%g
-s%@ARFLAGS@%$ARFLAGS%g
-s%@LIBVERSION@%$LIBVERSION%g
-s%@TERMCAP_LIB@%$TERMCAP_LIB%g
+cat >>$CONFIG_STATUS <<\EOF
+for ac_config_target in $ac_config_targets
+do
+  case "$ac_config_target" in
+  # Handling of arguments.
+  "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+  "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
+  "examples/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
+  "shlib/Makefile" ) CONFIG_FILES="$CONFIG_FILES shlib/Makefile" ;;
+  "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
+  "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+  *) { { echo "$as_me:4847: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+  trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+: ${TMPDIR=/tmp}
+{
+  tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=$TMPDIR/cs$$-$RANDOM
+  (umask 077 && mkdir $tmp)
+} ||
+{
+   echo "$me: cannot create a temporary directory in $TMPDIR" >&2
+   { (exit 1); exit 1; }
+}
+
+EOF
 
+cat >>$CONFIG_STATUS <<EOF
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "\$CONFIG_FILES"; then
+  # Protect against being on the right side of a sed subst in config.status.
+  sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+   s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+s,@SHELL@,$SHELL,;t t
+s,@exec_prefix@,$exec_prefix,;t t
+s,@prefix@,$prefix,;t t
+s,@program_transform_name@,$program_transform_name,;t t
+s,@bindir@,$bindir,;t t
+s,@sbindir@,$sbindir,;t t
+s,@libexecdir@,$libexecdir,;t t
+s,@datadir@,$datadir,;t t
+s,@sysconfdir@,$sysconfdir,;t t
+s,@sharedstatedir@,$sharedstatedir,;t t
+s,@localstatedir@,$localstatedir,;t t
+s,@libdir@,$libdir,;t t
+s,@includedir@,$includedir,;t t
+s,@oldincludedir@,$oldincludedir,;t t
+s,@infodir@,$infodir,;t t
+s,@mandir@,$mandir,;t t
+s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
+s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
+s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+s,@build_alias@,$build_alias,;t t
+s,@host_alias@,$host_alias,;t t
+s,@target_alias@,$target_alias,;t t
+s,@ECHO_C@,$ECHO_C,;t t
+s,@ECHO_N@,$ECHO_N,;t t
+s,@ECHO_T@,$ECHO_T,;t t
+s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+s,@DEFS@,$DEFS,;t t
+s,@LIBS@,$LIBS,;t t
+s,@build@,$build,;t t
+s,@build_cpu@,$build_cpu,;t t
+s,@build_vendor@,$build_vendor,;t t
+s,@build_os@,$build_os,;t t
+s,@host@,$host,;t t
+s,@host_cpu@,$host_cpu,;t t
+s,@host_vendor@,$host_vendor,;t t
+s,@host_os@,$host_os,;t t
+s,@SET_MAKE@,$SET_MAKE,;t t
+s,@CC@,$CC,;t t
+s,@CFLAGS@,$CFLAGS,;t t
+s,@LDFLAGS@,$LDFLAGS,;t t
+s,@CPPFLAGS@,$CPPFLAGS,;t t
+s,@ac_ct_CC@,$ac_ct_CC,;t t
+s,@EXEEXT@,$EXEEXT,;t t
+s,@OBJEXT@,$OBJEXT,;t t
+s,@CPP@,$CPP,;t t
+s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+s,@INSTALL_DATA@,$INSTALL_DATA,;t t
+s,@AR@,$AR,;t t
+s,@RANLIB@,$RANLIB,;t t
+s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+s,@MAKE_SHELL@,$MAKE_SHELL,;t t
+s,@SHOBJ_CC@,$SHOBJ_CC,;t t
+s,@SHOBJ_CFLAGS@,$SHOBJ_CFLAGS,;t t
+s,@SHOBJ_LD@,$SHOBJ_LD,;t t
+s,@SHOBJ_LDFLAGS@,$SHOBJ_LDFLAGS,;t t
+s,@SHOBJ_XLDFLAGS@,$SHOBJ_XLDFLAGS,;t t
+s,@SHOBJ_LIBS@,$SHOBJ_LIBS,;t t
+s,@SHOBJ_STATUS@,$SHOBJ_STATUS,;t t
+s,@SHLIB_STATUS@,$SHLIB_STATUS,;t t
+s,@SHLIB_XLDFLAGS@,$SHLIB_XLDFLAGS,;t t
+s,@SHLIB_LIBSUFF@,$SHLIB_LIBSUFF,;t t
+s,@SHLIB_LIBVERSION@,$SHLIB_LIBVERSION,;t t
+s,@SHLIB_LIBS@,$SHLIB_LIBS,;t t
+s,@SHLIB_MAJOR@,$SHLIB_MAJOR,;t t
+s,@SHLIB_MINOR@,$SHLIB_MINOR,;t t
+s,@BUILD_DIR@,$BUILD_DIR,;t t
+s,@LOCAL_CFLAGS@,$LOCAL_CFLAGS,;t t
+s,@LOCAL_LDFLAGS@,$LOCAL_LDFLAGS,;t t
+s,@LOCAL_DEFS@,$LOCAL_DEFS,;t t
+s,@ARFLAGS@,$ARFLAGS,;t t
+s,@LIBVERSION@,$LIBVERSION,;t t
+s,@TERMCAP_LIB@,$TERMCAP_LIB,;t t
 CEOF
+
 EOF
 
-cat >> $CONFIG_STATUS <<\EOF
-
-# Split the substitutions into bite-sized pieces for seds with
-# small command number limits, like on Digital OSF/1 and HP-UX.
-ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
-ac_file=1 # Number of current file.
-ac_beg=1 # First line for current file.
-ac_end=$ac_max_sed_cmds # Line after last line for current file.
-ac_more_lines=:
-ac_sed_cmds=""
-while $ac_more_lines; do
-  if test $ac_beg -gt 1; then
-    sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
-  else
-    sed "${ac_end}q" conftest.subs > conftest.s$ac_file
-  fi
-  if test ! -s conftest.s$ac_file; then
-    ac_more_lines=false
-    rm -f conftest.s$ac_file
-  else
-    if test -z "$ac_sed_cmds"; then
-      ac_sed_cmds="sed -f conftest.s$ac_file"
+  cat >>$CONFIG_STATUS <<\EOF
+  # Split the substitutions into bite-sized pieces for seds with
+  # small command number limits, like on Digital OSF/1 and HP-UX.
+  ac_max_sed_lines=48
+  ac_sed_frag=1 # Number of current file.
+  ac_beg=1 # First line for current file.
+  ac_end=$ac_max_sed_lines # Line after last line for current file.
+  ac_more_lines=:
+  ac_sed_cmds=
+  while $ac_more_lines; do
+    if test $ac_beg -gt 1; then
+      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
     else
-      ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
+      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
     fi
-    ac_file=`expr $ac_file + 1`
-    ac_beg=$ac_end
-    ac_end=`expr $ac_end + $ac_max_sed_cmds`
+    if test ! -s $tmp/subs.frag; then
+      ac_more_lines=false
+    else
+      # The purpose of the label and of the branching condition is to
+      # speed up the sed processing (if there are no `@' at all, there
+      # is no need to browse any of the substitutions).
+      # These are the two extra sed commands mentioned above.
+      (echo ':t
+  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+      if test -z "$ac_sed_cmds"; then
+       ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+      else
+       ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+      fi
+      ac_sed_frag=`expr $ac_sed_frag + 1`
+      ac_beg=$ac_end
+      ac_end=`expr $ac_end + $ac_max_sed_lines`
+    fi
+  done
+  if test -z "$ac_sed_cmds"; then
+    ac_sed_cmds=cat
   fi
-done
-if test -z "$ac_sed_cmds"; then
-  ac_sed_cmds=cat
-fi
-EOF
-
-cat >> $CONFIG_STATUS <<EOF
+fi # test -n "$CONFIG_FILES"
 
-CONFIG_FILES=\${CONFIG_FILES-"Makefile doc/Makefile examples/Makefile shlib/Makefile"}
 EOF
-cat >> $CONFIG_STATUS <<\EOF
-for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
+cat >>$CONFIG_STATUS <<\EOF
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
   # Support "outfile[:infile[: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" ;;
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+        cat >$tmp/stdin
+        ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
   esac
 
-  # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
-
-  # Remove last slash and all that follows it.  Not all systems have dirname.
-  ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+  ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$ac_file" : 'X\(//\)[^/]' \| \
+         X"$ac_file" : 'X\(//\)$' \| \
+         X"$ac_file" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+         /^X\(\/\/\)$/{ s//\1/; q; }
+         /^X\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
   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%^\./%%'`"
+    { case "$ac_dir" in
+  [\\/]* | ?:[\\/]* ) as_incr_dir=;;
+  *)                      as_incr_dir=.;;
+esac
+as_dummy="$ac_dir"
+for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do
+  case $as_mkdir_dir in
+    # Skip DOS drivespec
+    ?:) as_incr_dir=$as_mkdir_dir ;;
+    *)
+      as_incr_dir=$as_incr_dir/$as_mkdir_dir
+      test -d "$as_incr_dir" || mkdir "$as_incr_dir"
+    ;;
+  esac
+done; }
+
+    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'`
+    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" ;;
+  case $srcdir in
+  .)  ac_srcdir=.
+      if test -z "$ac_dots"; then
+         ac_top_srcdir=.
+      else
+         ac_top_srcdir=`echo $ac_dots | sed 's,/$,,'`
+      fi ;;
+  [\\/]* | ?:[\\/]* )
+      ac_srcdir=$srcdir$ac_dir_suffix;
+      ac_top_srcdir=$srcdir ;;
   *) # Relative path.
-    srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
-    top_srcdir="$ac_dots$ac_given_srcdir" ;;
+    ac_srcdir=$ac_dots$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_dots$srcdir ;;
   esac
 
-  case "$ac_given_INSTALL" in
-  [/$]*) INSTALL="$ac_given_INSTALL" ;;
-  *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_dots$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
+  if test x"$ac_file" != x-; then
+    { echo "$as_me:5088: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+    rm -f "$ac_file"
+  fi
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated automatically by config.status.  */
+  configure_input="Generated automatically from `echo $ac_file_in |
+                                                 sed 's,.*/,,'` by configure."
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+         # Absolute (can't be DOS-style, as IFS=:)
+         test -f "$f" || { { echo "$as_me:5106: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         echo $f;;
+      *) # Relative
+         if test -f "$f"; then
+           # Build tree
+           echo $f
+         elif test -f "$srcdir/$f"; then
+           # Source tree
+           echo $srcdir/$f
+         else
+           # /dev/null tree
+           { { echo "$as_me:5119: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+EOF
+cat >>$CONFIG_STATUS <<EOF
+  sed "$ac_vpsub
+$extrasub
+EOF
+cat >>$CONFIG_STATUS <<\EOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s,@configure_input@,$configure_input,;t t
+s,@srcdir@,$ac_srcdir,;t t
+s,@top_srcdir@,$ac_top_srcdir,;t t
+s,@INSTALL@,$ac_INSTALL,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+  rm -f $tmp/stdin
+  if test x"$ac_file" != x-; then
+    mv $tmp/out $ac_file
+  else
+    cat $tmp/out
+    rm -f $tmp/out
+  fi
+
+done
+EOF
+cat >>$CONFIG_STATUS <<\EOF
 
-  ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
-  sed -e "$ac_comsub
-s%@configure_input@%$configure_input%g
-s%@srcdir@%$srcdir%g
-s%@top_srcdir@%$top_srcdir%g
-s%@INSTALL@%$INSTALL%g
-" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
-fi; done
-rm -f conftest.s*
+#
+# CONFIG_HEADER section.
+#
 
 # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
 # NAME is the cpp macro being defined and VALUE is the value it is being given.
 #
 # ac_d sets the value in "#define NAME VALUE" lines.
-ac_dA='s%^\([  ]*\)#\([        ]*define[       ][      ]*\)'
-ac_dB='\([     ][      ]*\)[^  ]*%\1#\2'
-ac_dC='\3'
-ac_dD='%g'
-# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
-ac_uA='s%^\([  ]*\)#\([        ]*\)undef\([    ][      ]*\)'
-ac_uB='\([     ]\)%\1#\2define\3'
+ac_dA='s,^\([  ]*\)#\([        ]*define[       ][      ]*\)'
+ac_dB='[       ].*$,\1#\2'
+ac_dC=' '
+ac_dD=',;t'
+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_uA='s,^\([  ]*\)#\([        ]*\)undef\([    ][      ]*\)'
+ac_uB='$,\1#\2define\3'
 ac_uC=' '
-ac_uD='\4%g'
-# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
-ac_eA='s%^\([  ]*\)#\([        ]*\)undef\([    ][      ]*\)'
-ac_eB='$%\1#\2define\3'
-ac_eC=' '
-ac_eD='%g'
-
-if test "${CONFIG_HEADERS+set}" != set; then
-EOF
-cat >> $CONFIG_STATUS <<EOF
-  CONFIG_HEADERS="config.h"
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-fi
-for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
+ac_uD=',;t'
+
+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
   # Support "outfile[:infile[: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" ;;
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+        cat >$tmp/stdin
+        ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
   esac
 
-  echo creating $ac_file
-
-  rm -f conftest.frag conftest.in conftest.out
-  ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
-  cat $ac_file_inputs > conftest.in
+  test x"$ac_file" != x- && { echo "$as_me:5180: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+         # Absolute (can't be DOS-style, as IFS=:)
+         test -f "$f" || { { echo "$as_me:5191: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         echo $f;;
+      *) # Relative
+         if test -f "$f"; then
+           # Build tree
+           echo $f
+         elif test -f "$srcdir/$f"; then
+           # Source tree
+           echo $srcdir/$f
+         else
+           # /dev/null tree
+           { { echo "$as_me:5204: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+  # Remove the trailing spaces.
+  sed 's/[     ]*$//' $ac_file_inputs >$tmp/in
 
 EOF
 
-# Transform confdefs.h into a sed script conftest.vals that substitutes
-# the proper values into config.h.in to produce config.h.  And first:
-# Protect against being on the right side of a sed subst in config.status.
-# Protect against being in an unquoted here document in config.status.
-rm -f conftest.vals
-cat > conftest.hdr <<\EOF
-s/[\\&%]/\\&/g
-s%[\\$`]%\\&%g
-s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp
-s%ac_d%ac_u%gp
-s%ac_u%ac_e%gp
+# Transform confdefs.h into two sed scripts, `conftest.defines' and
+# `conftest.undefs', that substitutes the proper values into
+# config.h.in to produce config.h.  The first handles `#define'
+# templates, and the second `#undef' templates.
+# And first: Protect against being on the right side of a sed subst in
+# config.status.  Protect against being in an unquoted here document
+# in config.status.
+rm -f conftest.defines conftest.undefs
+# Using a here document instead of a string reduces the quoting nightmare.
+# Putting comments in sed scripts is not portable.
+#
+# `end' is used to avoid that the second main sed command (meant for
+# 0-ary CPP macros) applies to n-ary macro definitions.
+# See the Autoconf documentation for `clear'.
+cat >confdef2sed.sed <<\EOF
+s/[\\&,]/\\&/g
+s,[\\$`],\\&,g
+t clear
+: clear
+s,^[   ]*#[    ]*define[       ][      ]*\(\([^        (][^    (]*\)([^)]*)\)[         ]*\(.*\)$,${ac_dA}\2${ac_dB}\1${ac_dC}\3${ac_dD},gp
+t end
+s,^[   ]*#[    ]*define[       ][      ]*\([^  ][^     ]*\)[   ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
+: end
 EOF
-sed -n -f conftest.hdr confdefs.h > conftest.vals
-rm -f conftest.hdr
+# If some macros were called several times there might be several times
+# the same #defines, which is useless.  Nevertheless, we may not want to
+# sort them, since we want the *last* AC-DEFINE to be honored.
+uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
+sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
+rm -f confdef2sed.sed
 
 # This sed command replaces #undef with comments.  This is necessary, for
 # example, in the case of _POSIX_SOURCE, which is predefined and required
 # on some systems where configure will not decide to define it.
-cat >> conftest.vals <<\EOF
-s%^[   ]*#[    ]*undef[        ][      ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */%
+cat >>conftest.undefs <<\EOF
+s,^[   ]*#[    ]*undef[        ][      ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
 EOF
 
-# Break up conftest.vals because some shells have a limit on
-# the size of here documents, and old seds have small limits too.
+# Break up conftest.defines because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo '  # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
+echo '  if egrep "^[   ]*#[    ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
+echo '  # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
+echo '  :' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.defines >/dev/null
+do
+  # Write a limited-size here document to $tmp/defines.sed.
+  echo '  cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
+  # Speed up: don't consider the non `#define' lines.
+  echo '/^[    ]*#[    ]*define/!b' >>$CONFIG_STATUS
+  # Work around the forget-to-reset-the-flag bug.
+  echo 't clr' >>$CONFIG_STATUS
+  echo ': clr' >>$CONFIG_STATUS
+  sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
+  echo 'CEOF
+  sed -f $tmp/defines.sed $tmp/in >$tmp/out
+  rm -f $tmp/in
+  mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+  sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
+  rm -f conftest.defines
+  mv conftest.tail conftest.defines
+done
+rm -f conftest.defines
+echo '  fi # egrep' >>$CONFIG_STATUS
+echo >>$CONFIG_STATUS
 
+# Break up conftest.undefs because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo '  # Handle all the #undef templates' >>$CONFIG_STATUS
 rm -f conftest.tail
-while :
+while grep . conftest.undefs >/dev/null
 do
-  ac_lines=`grep -c . conftest.vals`
-  # grep -c gives empty output for an empty file on some AIX systems.
-  if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi
-  # Write a limited-size here document to conftest.frag.
-  echo '  cat > conftest.frag <<CEOF' >> $CONFIG_STATUS
-  sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS
+  # Write a limited-size here document to $tmp/undefs.sed.
+  echo '  cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
+  # Speed up: don't consider the non `#undef'
+  echo '/^[    ]*#[    ]*undef/!b' >>$CONFIG_STATUS
+  # Work around the forget-to-reset-the-flag bug.
+  echo 't clr' >>$CONFIG_STATUS
+  echo ': clr' >>$CONFIG_STATUS
+  sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
   echo 'CEOF
-  sed -f conftest.frag conftest.in > conftest.out
-  rm -f conftest.in
-  mv conftest.out conftest.in
-' >> $CONFIG_STATUS
-  sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
-  rm -f conftest.vals
-  mv conftest.tail conftest.vals
+  sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+  rm -f $tmp/in
+  mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+  sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
+  rm -f conftest.undefs
+  mv conftest.tail conftest.undefs
 done
-rm -f conftest.vals
-
-cat >> $CONFIG_STATUS <<\EOF
-  rm -f conftest.frag conftest.h
-  echo "/* $ac_file.  Generated automatically by configure.  */" > conftest.h
-  cat conftest.in >> conftest.h
-  rm -f conftest.in
-  if cmp -s $ac_file conftest.h 2>/dev/null; then
-    echo "$ac_file is unchanged"
-    rm -f conftest.h
+rm -f conftest.undefs
+
+cat >>$CONFIG_STATUS <<\EOF
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated automatically by config.status.  */
+  if test x"$ac_file" = x-; then
+    echo "/* Generated automatically by configure.  */" >$tmp/config.h
   else
-    # Remove last slash and all that follows it.  Not all systems have dirname.
-      ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+    echo "/* $ac_file.  Generated automatically by configure.  */" >$tmp/config.h
+  fi
+  cat $tmp/in >>$tmp/config.h
+  rm -f $tmp/in
+  if test x"$ac_file" != x-; then
+    if cmp -s $ac_file $tmp/config.h 2>/dev/null; then
+      { echo "$as_me:5321: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$ac_file" : 'X\(//\)[^/]' \| \
+         X"$ac_file" : 'X\(//\)$' \| \
+         X"$ac_file" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+         /^X\(\/\/\)$/{ s//\1/; q; }
+         /^X\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
       if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
-      # The file is in a subdirectory.
-      test ! -d "$ac_dir" && mkdir "$ac_dir"
+        { case "$ac_dir" in
+  [\\/]* | ?:[\\/]* ) as_incr_dir=;;
+  *)                      as_incr_dir=.;;
+esac
+as_dummy="$ac_dir"
+for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do
+  case $as_mkdir_dir in
+    # Skip DOS drivespec
+    ?:) as_incr_dir=$as_mkdir_dir ;;
+    *)
+      as_incr_dir=$as_incr_dir/$as_mkdir_dir
+      test -d "$as_incr_dir" || mkdir "$as_incr_dir"
+    ;;
+  esac
+done; }
+
+      fi
+      rm -f $ac_file
+      mv $tmp/config.h $ac_file
     fi
-    rm -f $ac_file
-    mv conftest.h $ac_file
+  else
+    cat $tmp/config.h
+    rm -f $tmp/config.h
   fi
-fi; done
-
+done
 EOF
-cat >> $CONFIG_STATUS <<EOF
+cat >>$CONFIG_STATUS <<\EOF
 
-EOF
-cat >> $CONFIG_STATUS <<\EOF
+#
+# CONFIG_COMMANDS section.
+#
+for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
+  ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
+  ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
 
+  case $ac_dest in
+    default )
 # Makefile uses this timestamp file to record whether config.h is up to date.
 echo > stamp-h
+ ;;
+  esac
+done
+EOF
 
-exit 0
+cat >>$CONFIG_STATUS <<\EOF
+
+{ (exit 0); 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
+ac_clean_files=$ac_clean_files_save
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || { (exit 1); exit 1; }
+fi
 
index 0cc53835dce290e088637719ea06c6e30f68cca4..8885a52016171b0000554490957e150f5550c399 100644 (file)
@@ -4,16 +4,19 @@ dnl
 dnl report bugs to chet@po.cwru.edu
 dnl
 dnl Process this file with autoconf to produce a configure script.
-AC_REVISION([for Readline 4.2, version 2.26, from autoconf version] AC_ACVERSION)
-LIBVERSION=4.2
+AC_REVISION([for Readline 4.2a, version 2.40, from autoconf version] AC_ACVERSION)
 
-AC_INIT(readline.h)
-AC_CONFIG_HEADER(config.h)
+AC_INIT(readline, 4.2a, bug-readline@gnu.org)
 
 dnl make sure we are using a recent autoconf version
-AC_PREREQ(2.10)
+AC_PREREQ(2.50)
 
+AC_CONFIG_SRCDIR(readline.h)
 AC_CONFIG_AUX_DIR(./support)
+AC_CONFIG_HEADERS(config.h)
+
+dnl update the value of RL_READLINE_VERSION in readline.h when this changes
+LIBVERSION=4.2a
 
 AC_CANONICAL_HOST
 
@@ -28,6 +31,10 @@ if test "$opt_curses" = "yes"; then
        prefer_curses=yes
 fi
 
+echo ""
+echo "Beginning configuration for readline-$LIBVERSION for ${host_cpu}-${host_vendor}-${host_os}"
+echo ""
+
 # We want these before the checks, so the checks can modify their values.
 test -z "$CFLAGS" && CFLAGS=-g auto_cflags=1
 
@@ -41,7 +48,7 @@ test -n "$GCC" && test -n "$auto_cflags" && CFLAGS="$CFLAGS -O"
 
 AC_PROG_GCC_TRADITIONAL
 AC_PROG_INSTALL
-AC_CHECK_PROG(AR, ar, ar)
+AC_CHECK_PROG(AR, ar, ar)
 dnl Set default for ARFLAGS, since autoconf does not have a macro for it.
 dnl This allows people to set it when running configure or make
 test -n "$ARFLAGS" || ARFLAGS="cr"
@@ -50,33 +57,41 @@ AC_PROG_RANLIB
 MAKE_SHELL=/bin/sh
 AC_SUBST(MAKE_SHELL)
 
-AC_RETSIGTYPE
+AC_C_CONST
+AC_C_PROTOTYPES
+
+AC_TYPE_SIGNAL
+
+AC_TYPE_SIZE_T
+AC_CHECK_TYPE(ssize_t, int)
 
 AC_HEADER_STAT
 AC_HEADER_DIRENT
 
 AC_CHECK_FUNCS(lstat memmove putenv select setenv setlocale \
-               strcasecmp tcgetattr)
+               strcasecmp strpbrk tcgetattr vsnprintf isascii isxdigit)
 
 AC_FUNC_STRCOLL
 
-AC_CHECK_HEADERS(unistd.h stdlib.h varargs.h stdarg.h string.h \
-               sys/ptem.h sys/pte.h sys/stream.h sys/select.h \
-               termcap.h termios.h termio.h sys/file.h locale.h)
+AC_CHECK_HEADERS(unistd.h stdlib.h varargs.h stdarg.h string.h strings.h \
+               limits.h sys/ptem.h sys/pte.h sys/stream.h sys/select.h \
+               termcap.h termios.h termio.h sys/file.h locale.h memory.h )
 
-BASH_SIGNAL_CHECK
-BASH_REINSTALL_SIGHANDLERS
+BASH_SYS_SIGNAL_VINTAGE
+BASH_SYS_REINSTALL_SIGHANDLERS
 
 BASH_FUNC_POSIX_SETJMP
 BASH_FUNC_LSTAT
-BASH_CHECK_GETPW_FUNCS
 BASH_FUNC_STRCOLL
 
+BASH_CHECK_GETPW_FUNCS
+
+AC_HEADER_TIOCGWINSZ
+
 BASH_TYPE_SIGHANDLER
-BASH_HAVE_TIOCGWINSZ
 BASH_HAVE_TIOCSTAT
 BASH_HAVE_FIONREAD
-BASH_MISC_SPEED_T
+BASH_CHECK_SPEED_T
 BASH_STRUCT_WINSIZE
 BASH_STRUCT_DIRENT_D_INO
 BASH_STRUCT_DIRENT_D_FILENO
index cb1c50000a3f9f1ecbff1fc6a66e9a593b63b5f9..4ce7d6bf63849af461fa74e38943360b81de2a47 100644 (file)
--- a/display.c
+++ b/display.c
@@ -62,11 +62,11 @@ extern char *strchr (), *strrchr ();
 extern char *_rl_term_forward_char;
 #endif
 
-static void update_line __P((char *, char *, int, int, int, int));
-static void space_to_eol __P((int));
-static void delete_chars __P((int));
-static void insert_some_chars __P((char *, int));
-static void cr __P((void));
+static void update_line PARAMS((char *, char *, int, int, int, int));
+static void space_to_eol PARAMS((int));
+static void delete_chars PARAMS((int));
+static void insert_some_chars PARAMS((char *, int));
+static void cr PARAMS((void));
 
 static int *inv_lbreaks, *vis_lbreaks;
 static int inv_lbsize, vis_lbsize;
@@ -202,7 +202,7 @@ expand_prompt (pmt, lp, lip, niflp)
     }
 
   l = strlen (pmt);
-  r = ret = xmalloc (l + 1);
+  r = ret = (char *)xmalloc (l + 1);
 
   invfl = 0;   /* invisible chars in first line of prompt */
 
@@ -335,16 +335,16 @@ init_line_structures (minsize)
     {
       if (line_size < minsize)
        line_size = minsize;
-      visible_line = xmalloc (line_size);
-      invisible_line = xmalloc (line_size);
+      visible_line = (char *)xmalloc (line_size);
+      invisible_line = (char *)xmalloc (line_size);
     }
   else if (line_size < minsize)        /* ensure it can hold MINSIZE chars */
     {
       line_size *= 2;
       if (line_size < minsize)
        line_size = minsize;
-      visible_line = xrealloc (visible_line, line_size);
-      invisible_line = xrealloc (invisible_line, line_size);
+      visible_line = (char *)xrealloc (visible_line, line_size);
+      invisible_line = (char *)xrealloc (invisible_line, line_size);
     }
 
   for (n = minsize; n < line_size; n++)
@@ -421,8 +421,8 @@ rl_redisplay ()
          if (temp >= line_size)
            {
              line_size = (temp + 1024) - (temp % 1024);
-             visible_line = xrealloc (visible_line, line_size);
-             line = invisible_line = xrealloc (invisible_line, line_size);
+             visible_line = (char *)xrealloc (visible_line, line_size);
+             line = invisible_line = (char *)xrealloc (invisible_line, line_size);
            }
          strncpy (line + out, local_prompt, local_len);
          out += local_len;
@@ -455,8 +455,8 @@ rl_redisplay ()
       if (temp >= line_size)
        {
          line_size = (temp + 1024) - (temp % 1024);
-         visible_line = xrealloc (visible_line, line_size);
-         line = invisible_line = xrealloc (invisible_line, line_size);
+         visible_line = (char *)xrealloc (visible_line, line_size);
+         line = invisible_line = (char *)xrealloc (invisible_line, line_size);
        }
       strncpy (line + out,  prompt_this_line, pmtlen);
       out += pmtlen;
@@ -530,8 +530,8 @@ rl_redisplay ()
       if (out + 8 >= line_size)                /* XXX - 8 for \t */
        {
          line_size *= 2;
-         visible_line = xrealloc (visible_line, line_size);
-         invisible_line = xrealloc (invisible_line, line_size);
+         visible_line = (char *)xrealloc (visible_line, line_size);
+         invisible_line = (char *)xrealloc (invisible_line, line_size);
          line = invisible_line;
        }
 
@@ -1330,7 +1330,7 @@ rl_character_len (c, pos)
   if (CTRL_CHAR (c) || c == RUBOUT)
     return (2);
 
-  return ((isprint (uc)) ? 1 : 2);
+  return ((ISPRINT (uc)) ? 1 : 2);
 }
 
 /* How to print things in the "echo-area".  The prompt is treated as a
@@ -1357,7 +1357,12 @@ rl_message (va_alist)
   format = va_arg (args, char *);
 #endif
 
+#if defined (HAVE_VSNPRINTF)
+  vsnprintf (msg_buf, sizeof (msg_buf) - 1, format, args);
+#else
   vsprintf (msg_buf, format, args);
+  msg_buf[sizeof(msg_buf) - 1] = '\0'; /* overflow? */
+#endif
   va_end (args);
 
   rl_display_prompt = msg_buf;
@@ -1370,6 +1375,7 @@ rl_message (format, arg1, arg2)
      char *format;
 {
   sprintf (msg_buf, format, arg1, arg2);
+  msg_buf[sizeof(msg_buf) - 1] = '\0'; /* overflow? */
   rl_display_prompt = msg_buf;
   (*rl_redisplay_function) ();
   return 0;
@@ -1436,7 +1442,7 @@ _rl_make_prompt_for_search (pchar)
   if (saved_local_prompt == 0)
     {
       len = (rl_prompt && *rl_prompt) ? strlen (rl_prompt) : 0;
-      pmt = xmalloc (len + 2);
+      pmt = (char *)xmalloc (len + 2);
       if (len)
        strcpy (pmt, rl_prompt);
       pmt[len] = pchar;
@@ -1445,7 +1451,7 @@ _rl_make_prompt_for_search (pchar)
   else
     {
       len = *saved_local_prompt ? strlen (saved_local_prompt) : 0;
-      pmt = xmalloc (len + 2);
+      pmt = (char *)xmalloc (len + 2);
       if (len)
        strcpy (pmt, saved_local_prompt);
       pmt[len] = pchar;
index bf3a5a3db53e53d2c58c6fa0c4c726599cb846f8..78a83deacb7bed918c915950534f8ded13ed1e88 100644 (file)
@@ -27,10 +27,16 @@ infodir = @infodir@
 mandir = @mandir@
 manpfx = man
 
-man1ext = 1
-man1dir = $(mandir)/$(manpfx)$(man1ext)
-man3ext = 3
-man3dir = $(mandir)/$(manpfx)$(man3ext)
+man1ext = .1
+man1dir = $(mandir)/$(manpfx)1
+man3ext = .3
+man3dir = $(mandir)/$(manpfx)3
+
+# set this to a value to have the HTML documentation installed
+htmldir =
+
+# Support an alternate destination root directory for package building
+DESTDIR =
 
 SHELL = @MAKE_SHELL@
 RM = rm -f
@@ -159,34 +165,63 @@ maintainer-clean: clean
        $(RM) Makefile
 
 installdirs:   $(topdir)/support/mkdirs
-       -$(SHELL) $(topdir)/support/mkdirs $(infodir) $(man3dir)
+       -$(SHELL) $(topdir)/support/mkdirs $(DESTDIR)$(infodir) $(DESTDIR)$(man3dir)
+       -if test -n "${htmldir}" ; then \
+               $(SHELL) $(topdir)/support/mkdirs $(DESTDIR)$(htmldir) ; \
+       fi
 
 install:       installdirs
        if test -f readline.info; then \
-               ${INSTALL_DATA} readline.info $(infodir)/readline.info; \
+               ${INSTALL_DATA} readline.info $(DESTDIR)$(infodir)/readline.info; \
        else \
-               ${INSTALL_DATA} $(srcdir)/readline.info $(infodir)/readline.info; \
+               ${INSTALL_DATA} $(srcdir)/readline.info $(DESTDIR)$(infodir)/readline.info; \
        fi
        if test -f rluserman.info; then \
-               ${INSTALL_DATA} rluserman.info $(infodir)/rluserman.info; \
+               ${INSTALL_DATA} rluserman.info $(DESTDIR)$(infodir)/rluserman.info; \
        else \
-               ${INSTALL_DATA} $(srcdir)/rluserman.info $(infodir)/rluserman.info; \
+               ${INSTALL_DATA} $(srcdir)/rluserman.info $(DESTDIR)$(infodir)/rluserman.info; \
        fi
        if test -f history.info; then \
-               ${INSTALL_DATA} history.info $(infodir)/history.info; \
+               ${INSTALL_DATA} history.info $(DESTDIR)$(infodir)/history.info; \
        else \
-               ${INSTALL_DATA} $(srcdir)/history.info $(infodir)/history.info; \
+               ${INSTALL_DATA} $(srcdir)/history.info $(DESTDIR)$(infodir)/history.info; \
        fi
        -if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \
-               install-info --dir-file=$(infodir)/dir $(infodir)/readline.info ; \
-               install-info --dir-file=$(infodir)/dir $(infodir)/history.info ; \
+               install-info --dir-file=$(DESTDIR)$(infodir)/dir \
+                       $(DESTDIR)$(infodir)/readline.info ; \
+               install-info --dir-file=$(DESTDIR)$(infodir)/dir \
+                       $(DESTDIR)$(infodir)/history.info ; \
+               install-info --dir-file=$(DESTDIR)$(infodir)/dir \
+                       $(DESTDIR)$(infodir)/rluserman.info ; \
        else true; fi
-       -${INSTALL_DATA} $(srcdir)/readline.3 $(man3dir)/readline.3
-       -${INSTALL_DATA} $(srcdir)/history.3 $(man3dir)/history.3
+       -${INSTALL_DATA} $(srcdir)/readline.3 $(DESTDIR)$(man3dir)/readline$(man3ext)
+       -${INSTALL_DATA} $(srcdir)/history.3 $(DESTDIR)$(man3dir)/history$(man3ext)
+       -if test -n "${htmldir}" ; then \
+               if test -f readline.html; then \
+                       ${INSTALL_DATA} readline.html $(DESTDIR)$(htmldir)/readline.html; \
+               else \
+                       ${INSTALL_DATA} $(srcdir)/readline.html $(DESTDIR)$(htmldir)/readline.html; \
+               fi ; \
+               if test -f history.html; then \
+                       ${INSTALL_DATA} history.html $(DESTDIR)$(htmldir)/history.html; \
+               else \
+                       ${INSTALL_DATA} $(srcdir)/history.html $(DESTDIR)$(htmldir)/history.html; \
+               fi ; \
+               if test -f rluserman.html; then \
+                       ${INSTALL_DATA} rluserman.html $(DESTDIR)$(htmldir)/rluserman.html; \
+               else \
+                       ${INSTALL_DATA} $(srcdir)/rluserman.html $(DESTDIR)$(htmldir)/rluserman.html; \
+               fi ; \
+       fi
 
 uninstall:
-       $(RM) $(infodir)/readline.info
-       $(RM) $(infodir)/rluserman.info
-       $(RM) $(infodir)/history.info
-       $(RM) $(man3dir)/readline.3
-       $(RM) $(man3dir)/history.3
+       $(RM) $(DESTDIR)$(infodir)/readline.info
+       $(RM) $(DESTDIR)$(infodir)/rluserman.info
+       $(RM) $(DESTDIR)$(infodir)/history.info
+       $(RM) $(DESTDIR)$(man3dir)/readline$(man3ext)
+       $(RM) $(DESTDIR)$(man3dir)/history$(man3ext)
+       -if test -n "${htmldir}" ; then \
+               $(RM) $(DESTDIR)$(htmldir)/readline.html ; \
+               $(RM) $(DESTDIR)$(htmldir)/rluserman.html ; \
+               $(RM) $(DESTDIR)$(htmldir)/history.html ; \
+       fi
index 0b6a726fc5e44154f529ee4b2831f6a03b6a5564..93fc2118bfa61db37d144554b33b07b18d602119 100644 (file)
Binary files a/doc/history.dvi and b/doc/history.dvi differ
index 9cf15fdb48251743fe14734afebfab41e697afd9..9155c1697f9f81b3971df9dc7a5f868352443e06 100644 (file)
 <HTML>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!-- Created on October, 9  2001 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>
-<!-- This HTML file has been created by texi2html 1.52
-     from /usr/homes/chet/src/bash/readline-src/doc/hist.texinfo on 16 April 2001 -->
+<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">
 
-<TITLE>GNU History Library</TITLE>
 </HEAD>
-<BODY>
-<H1>GNU History Library</H1>
-<H2>Edition 4.2, for <CODE>History Library</CODE> Version 4.2.</H2>
-<H2>Apr 2001</H2>
-<ADDRESS>Brian Fox, Free Software Foundation</ADDRESS>
-<ADDRESS>Chet Ramey, Case Western Reserve University</ADDRESS>
-<P>
-<P><HR><P>
-<H1>Table of Contents</H1>
-<UL>
-<LI><A NAME="TOC1" HREF="history.html#SEC1">Using History Interactively</A>
-<UL>
-<LI><A NAME="TOC2" HREF="history.html#SEC2">History Expansion</A>
-<UL>
-<LI><A NAME="TOC3" HREF="history.html#SEC3">Event Designators</A>
-<LI><A NAME="TOC4" HREF="history.html#SEC4">Word Designators</A>
-<LI><A NAME="TOC5" HREF="history.html#SEC5">Modifiers</A>
-</UL>
-</UL>
-<LI><A NAME="TOC6" HREF="history.html#SEC6">Programming with GNU History</A>
-<UL>
-<LI><A NAME="TOC7" HREF="history.html#SEC7">Introduction to History</A>
-<LI><A NAME="TOC8" HREF="history.html#SEC8">History Storage</A>
-<LI><A NAME="TOC9" HREF="history.html#SEC9">History Functions</A>
-<UL>
-<LI><A NAME="TOC10" HREF="history.html#SEC10">Initializing History and State Management</A>
-<LI><A NAME="TOC11" HREF="history.html#SEC11">History List Management</A>
-<LI><A NAME="TOC12" HREF="history.html#SEC12">Information About the History List</A>
-<LI><A NAME="TOC13" HREF="history.html#SEC13">Moving Around the History List</A>
-<LI><A NAME="TOC14" HREF="history.html#SEC14">Searching the History List</A>
-<LI><A NAME="TOC15" HREF="history.html#SEC15">Managing the History File</A>
-<LI><A NAME="TOC16" HREF="history.html#SEC16">History Expansion</A>
-</UL>
-<LI><A NAME="TOC17" HREF="history.html#SEC17">History Variables</A>
-<LI><A NAME="TOC18" HREF="history.html#SEC18">History Programming Example</A>
-</UL>
-<LI><A NAME="TOC19" HREF="history.html#SEC19">Concept Index</A>
-<LI><A NAME="TOC20" HREF="history.html#SEC20">Function and Variable Index</A>
-</UL>
-<P><HR><P>
 
-<P>
+<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#SEC19">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>
-Published by the Free Software Foundation <BR>
-59 Temple Place, Suite 330, <BR>
-Boston, MA 02111 USA
-
-</P>
-<P>
-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.
-
-</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><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. 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#SEC20">B. 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#SEC19">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>
-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.
 
-</P>
-<P>
-Copyright (C) 1988-2001 Free Software Foundation, Inc.
-
-</P>
-
-
-
-<H1><A NAME="SEC1" HREF="history.html#TOC1">Using History Interactively</A></H1>
-
-<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">Programming with GNU History</A>.
-
-</P>
-
-<UL>
-<LI><A HREF="history.html#SEC2">History Interaction</A>: What it feels like using History as a user.
-</UL>
-
-
-
-<H2><A NAME="SEC2" HREF="history.html#TOC2">History Expansion</A></H2>
+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#SEC19">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>
-<A NAME="IDX1"></A>
 
-</P>
-<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>
 
-</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>
 
-</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
@@ -131,241 +115,300 @@ 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>
-
-
-<UL>
-<LI><A HREF="history.html#SEC3">Event Designators</A>: How to specify which history line to use.
-<LI><A HREF="history.html#SEC4">Word Designators</A>: Specifying which words are of interest.
-<LI><A HREF="history.html#SEC5">Modifiers</A>: Modifying the results of substitution.
-</UL>
-
-
-
-<H3><A NAME="SEC3" HREF="history.html#TOC3">Event Designators</A></H3>
+</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#SEC19">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>
-<A NAME="IDX2"></A>
 
-</P>
-<P>
 An event designator is a reference to a command line entry in the
 history list.
-<A NAME="IDX3"></A>
+<A NAME="IDX1"></A>
+</P><P>
 
-</P>
 <DL COMPACT>
 
 <DT><CODE>!</CODE>
-<DD>
-Start a history substitution, except when followed by a space, tab,
+<DD>Start a history substitution, except when followed by a space, tab,
 the end of the line, <SAMP>`='</SAMP> or <SAMP>`('</SAMP>.
+<P>
 
 <DT><CODE>!<VAR>n</VAR></CODE>
-<DD>
-Refer to command line <VAR>n</VAR>.
+<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.
+<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>.
+<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 starting with <VAR>string</VAR>.
+<DD>Refer to the most recent command starting with <VAR>string</VAR>.
+<P>
 
 <DT><CODE>!?<VAR>string</VAR>[?]</CODE>
-<DD>
-Refer to the most recent command containing <VAR>string</VAR>.  The trailing
+<DD>Refer to the most recent command 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>
+<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.
+<DD>The entire command line typed so far.
+<P>
 
 </DL>
+<P>
 
-
-
-<H3><A NAME="SEC4" HREF="history.html#TOC4">Word Designators</A></H3>
-
+<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#SEC19">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>
 
-</P>
-<P>
 For example,
+</P><P>
 
-</P>
 <DL COMPACT>
-
 <DT><CODE>!!</CODE>
-<DD>
-designates the preceding command.  When you type this, the preceding
+<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
+<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
+<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.
+<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.
+<DD>The <VAR>n</VAR>th word.
+<P>
 
 <DT><CODE>^</CODE>
-<DD>
-The first argument; that is, word 1.
+<DD>The first argument; that is, word 1.
+<P>
 
 <DT><CODE>$</CODE>
-<DD>
-The last argument.
+<DD>The last argument.
+<P>
 
 <DT><CODE>%</CODE>
-<DD>
-The word matched by the most recent <SAMP>`?<VAR>string</VAR>?'</SAMP> search.
+<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>.
+<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>.
+<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>
+<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.
+<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>
-
-
-<H3><A NAME="SEC5" HREF="history.html#TOC5">Modifiers</A></H3>
-
+</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#SEC19">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>
 
-</P>
 <DL COMPACT>
 
 <DT><CODE>h</CODE>
-<DD>
-Remove a trailing pathname component, leaving only the head.
+<DD>Remove a trailing pathname component, leaving only the head.
+<P>
 
 <DT><CODE>t</CODE>
-<DD>
-Remove all leading  pathname  components, leaving the tail.
+<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
+<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.
+<DD>Remove all but the trailing suffix.
+<P>
 
 <DT><CODE>p</CODE>
-<DD>
-Print the new command but do not execute it.
+<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
+<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.
+<DD>Repeat the previous substitution.
+<P>
 
 <DT><CODE>g</CODE>
-<DD>
-Cause changes to be applied over the entire event line.  Used in
+<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>
 
 </DL>
+<P>
 
-
-
-<H1><A NAME="SEC6" HREF="history.html#TOC6">Programming with GNU History</A></H1>
-
+<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#SEC19">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">Using History Interactively</A>.
-
-</P>
-
-<UL>
-<LI><A HREF="history.html#SEC7">Introduction to History</A>: What is the GNU History library for?
-<LI><A HREF="history.html#SEC8">History Storage</A>: How information is stored.
-<LI><A HREF="history.html#SEC9">History Functions</A>: Functions that you can use.
-<LI><A HREF="history.html#SEC17">History Variables</A>: Variables that control behaviour.
-<LI><A HREF="history.html#SEC18">History Programming Example</A>: Example of using the GNU History Library.
-</UL>
-
-
-
-<H2><A NAME="SEC7" HREF="history.html#TOC7">Introduction to History</A></H2>
-
+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#SEC19">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>
 
-</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
@@ -373,66 +416,68 @@ 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>
 
-</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>
 
-</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>
 
-</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>
-
-
-<H2><A NAME="SEC8" HREF="history.html#TOC8">History Storage</A></H2>
-
+</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#SEC19">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>
 
-</P>
-
-<PRE>
-typedef void *histdata_t;
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>typedef void *histdata_t;
 
 typedef struct _hist_entry {
   char *line;
   histdata_t data;
 } HIST_ENTRY;
-</PRE>
+</pre></td></tr></table></P><P>
 
-<P>
 The history list itself might therefore be declared as
+</P><P>
 
-</P>
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>HIST_ENTRY **the_history_list;
+</pre></td></tr></table></P><P>
 
-<PRE>
-HIST_ENTRY **the_history_list;
-</PRE>
-
-<P>
 The state of the History library is encapsulated into a single structure:
+</P><P>
 
-</P>
-
-<PRE>
-/*
+<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 {
@@ -442,266 +487,321 @@ typedef struct _hist_state {
   int size;             /* Number of slots allocated to this array. */
   int flags;
 } HISTORY_STATE;
-</PRE>
+</pre></td></tr></table></P><P>
 
-<P>
 If the flags member includes <CODE>HS_STIFLED</CODE>, the history has been
 stifled.
-
-</P>
-
-
-<H2><A NAME="SEC9" HREF="history.html#TOC9">History Functions</A></H2>
-
+</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#SEC19">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>
 
-</P>
-
-<UL>
-<LI><A HREF="history.html#SEC10">Initializing History and State Management</A>: Functions to call when you
+<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.
-<LI><A HREF="history.html#SEC11">History List Management</A>: Functions used to manage the list
-                                       of history entries.
-<LI><A HREF="history.html#SEC12">Information About the History List</A>: Functions returning information about
-                                       the history list.
-<LI><A HREF="history.html#SEC13">Moving Around the History List</A>: Functions used to change the position
-                                       in the history list.
-<LI><A HREF="history.html#SEC14">Searching the History List</A>: Functions to search the history list
-                                       for entries containing a string.
-<LI><A HREF="history.html#SEC15">Managing the History File</A>: Functions that read and write a file
-                                       containing the history list.
-<LI><A HREF="history.html#SEC16">History Expansion</A>: Functions to perform csh-like history
-                                       expansion.
-</UL>
-
-
-
-<H3><A NAME="SEC10" HREF="history.html#TOC10">Initializing History and State Management</A></H3>
-
+                                               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#SEC19">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>
 
-</P>
-<P>
+<A NAME="IDX2"></A>
 <DL>
 <DT><U>Function:</U> void <B>using_history</B> <I>(void)</I>
-<DD><A NAME="IDX4"></A>
-Begin a session in which the history functions might be used.  This
+<DD>Begin a session in which the history functions might be used.  This
 initializes the interactive variables.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX3"></A>
 <DL>
 <DT><U>Function:</U> HISTORY_STATE * <B>history_get_history_state</B> <I>(void)</I>
-<DD><A NAME="IDX5"></A>
-Return a structure describing the current state of the input history.
+<DD>Return a structure describing the current state of the input history.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX4"></A>
 <DL>
 <DT><U>Function:</U> void <B>history_set_history_state</B> <I>(HISTORY_STATE *state)</I>
-<DD><A NAME="IDX6"></A>
-Set the state of the history list according to <VAR>state</VAR>.
+<DD>Set the state of the history list according to <VAR>state</VAR>.
 </DL>
-
-</P>
-
-
-<H3><A NAME="SEC11" HREF="history.html#TOC11">History List Management</A></H3>
-
+</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#SEC19">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>
 
-</P>
-<P>
+<A NAME="IDX5"></A>
 <DL>
 <DT><U>Function:</U> void <B>add_history</B> <I>(const char *string)</I>
-<DD><A NAME="IDX7"></A>
-Place <VAR>string</VAR> at the end of the history list.  The associated data
+<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>
 
-</P>
-<P>
+<A NAME="IDX6"></A>
 <DL>
 <DT><U>Function:</U> HIST_ENTRY * <B>remove_history</B> <I>(int which)</I>
-<DD><A NAME="IDX8"></A>
-Remove history entry at offset <VAR>which</VAR> from the history.  The
+<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>
 
-</P>
-<P>
+<A NAME="IDX7"></A>
 <DL>
 <DT><U>Function:</U> HIST_ENTRY * <B>replace_history_entry</B> <I>(int which, const char *line, histdata_t data)</I>
-<DD><A NAME="IDX9"></A>
-Make the history entry at offset <VAR>which</VAR> have <VAR>line</VAR> and <VAR>data</VAR>.
+<DD>Make the history entry at offset <VAR>which</VAR> have <VAR>line</VAR> and <VAR>data</VAR>.
 This returns the old entry so you can dispose of the data.  In the case
 of an invalid <VAR>which</VAR>, a <CODE>NULL</CODE> pointer is returned.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX8"></A>
 <DL>
 <DT><U>Function:</U> void <B>clear_history</B> <I>(void)</I>
-<DD><A NAME="IDX10"></A>
-Clear the history list by deleting all the entries.
+<DD>Clear the history list by deleting all the entries.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX9"></A>
 <DL>
 <DT><U>Function:</U> void <B>stifle_history</B> <I>(int max)</I>
-<DD><A NAME="IDX11"></A>
-Stifle the history list, remembering only the last <VAR>max</VAR> entries.
+<DD>Stifle the history list, remembering only the last <VAR>max</VAR> entries.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX10"></A>
 <DL>
 <DT><U>Function:</U> int <B>unstifle_history</B> <I>(void)</I>
-<DD><A NAME="IDX12"></A>
-Stop stifling the history.  This returns the previous amount the
+<DD>Stop stifling the history.  This returns the previous amount the
 history was stifled.  The value is positive if the history was
 stifled, negative if it wasn't.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX11"></A>
 <DL>
 <DT><U>Function:</U> int <B>history_is_stifled</B> <I>(void)</I>
-<DD><A NAME="IDX13"></A>
-Returns non-zero if the history is stifled, zero if it is not.
+<DD>Returns non-zero if the history is stifled, zero if it is not.
 </DL>
-
-</P>
-
-
-<H3><A NAME="SEC12" HREF="history.html#TOC12">Information About the History List</A></H3>
-
+</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#SEC19">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>
 
-</P>
-<P>
+<A NAME="IDX12"></A>
 <DL>
 <DT><U>Function:</U> HIST_ENTRY ** <B>history_list</B> <I>(void)</I>
-<DD><A NAME="IDX14"></A>
-Return a <CODE>NULL</CODE> terminated array of <CODE>HIST_ENTRY *</CODE> which is the
+<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>
 
-</P>
-<P>
+<A NAME="IDX13"></A>
 <DL>
 <DT><U>Function:</U> int <B>where_history</B> <I>(void)</I>
-<DD><A NAME="IDX15"></A>
-Returns the offset of the current history element.
+<DD>Returns the offset of the current history element.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX14"></A>
 <DL>
 <DT><U>Function:</U> HIST_ENTRY * <B>current_history</B> <I>(void)</I>
-<DD><A NAME="IDX16"></A>
-Return the history entry at the current position, as determined by
+<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>
 
-</P>
-<P>
+<A NAME="IDX15"></A>
 <DL>
 <DT><U>Function:</U> HIST_ENTRY * <B>history_get</B> <I>(int offset)</I>
-<DD><A NAME="IDX17"></A>
-Return the history entry at position <VAR>offset</VAR>, starting from
-<CODE>history_base</CODE> (see section <A HREF="history.html#SEC17">History Variables</A>).
+<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>
 
-</P>
-<P>
+<A NAME="IDX16"></A>
 <DL>
 <DT><U>Function:</U> int <B>history_total_bytes</B> <I>(void)</I>
-<DD><A NAME="IDX18"></A>
-Return the number of bytes that the primary history entries are using.
+<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>
-
-
-<H3><A NAME="SEC13" HREF="history.html#TOC13">Moving Around the History List</A></H3>
-
+</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#SEC19">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>
 
-</P>
-<P>
+<A NAME="IDX17"></A>
 <DL>
 <DT><U>Function:</U> int <B>history_set_pos</B> <I>(int pos)</I>
-<DD><A NAME="IDX19"></A>
-Set the current history offset to <VAR>pos</VAR>, an absolute index
+<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>
 
-</P>
-<P>
+<A NAME="IDX18"></A>
 <DL>
 <DT><U>Function:</U> HIST_ENTRY * <B>previous_history</B> <I>(void)</I>
-<DD><A NAME="IDX20"></A>
-Back up the current history offset to the previous history entry, and
+<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>
 
-</P>
-<P>
+<A NAME="IDX19"></A>
 <DL>
 <DT><U>Function:</U> HIST_ENTRY * <B>next_history</B> <I>(void)</I>
-<DD><A NAME="IDX21"></A>
-Move the current history offset forward to the next history entry, and
+<DD>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</CODE> pointer.
 </DL>
-
-</P>
-
-
-<H3><A NAME="SEC14" HREF="history.html#TOC14">Searching the History List</A></H3>
+</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#SEC19">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>
-<A NAME="IDX22"></A>
 
-</P>
-<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>
+<A NAME="IDX20"></A>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX21"></A>
 <DL>
 <DT><U>Function:</U> int <B>history_search</B> <I>(const char *string, int direction)</I>
-<DD><A NAME="IDX24"></A>
-Search the history for <VAR>string</VAR>, starting at the current history offset.
+<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
@@ -710,13 +810,12 @@ 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>
 
-</P>
-<P>
+<A NAME="IDX22"></A>
 <DL>
 <DT><U>Function:</U> int <B>history_search_prefix</B> <I>(const char *string, int direction)</I>
-<DD><A NAME="IDX25"></A>
-Search the history for <VAR>string</VAR>, starting at the current history
+<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.
@@ -724,263 +823,276 @@ 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>
 
-</P>
-<P>
+<A NAME="IDX23"></A>
 <DL>
 <DT><U>Function:</U> int <B>history_search_pos</B> <I>(const char *string, int direction, int pos)</I>
-<DD><A NAME="IDX26"></A>
-Search for <VAR>string</VAR> in the history list, starting at <VAR>pos</VAR>, an
+<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>
-
-
-<H3><A NAME="SEC15" HREF="history.html#TOC15">Managing the History File</A></H3>
-
+</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#SEC19">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>
 
-</P>
-<P>
+<A NAME="IDX24"></A>
 <DL>
 <DT><U>Function:</U> int <B>read_history</B> <I>(const char *filename)</I>
-<DD><A NAME="IDX27"></A>
-Add the contents of <VAR>filename</VAR> to the history list, a line at a time.
+<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>
 
-</P>
-<P>
+<A NAME="IDX25"></A>
 <DL>
 <DT><U>Function:</U> int <B>read_history_range</B> <I>(const char *filename, int from, int to)</I>
-<DD><A NAME="IDX28"></A>
-Read a range of lines from <VAR>filename</VAR>, adding them to the history list.
+<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>
 
-</P>
-<P>
+<A NAME="IDX26"></A>
 <DL>
 <DT><U>Function:</U> int <B>write_history</B> <I>(const char *filename)</I>
-<DD><A NAME="IDX29"></A>
-Write the current history to <VAR>filename</VAR>, overwriting <VAR>filename</VAR>
+<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>
 
-</P>
-<P>
+<A NAME="IDX27"></A>
 <DL>
 <DT><U>Function:</U> int <B>append_history</B> <I>(int nelements, const char *filename)</I>
-<DD><A NAME="IDX30"></A>
-Append the last <VAR>nelements</VAR> of the history list to <VAR>filename</VAR>.
+<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>
 
-</P>
-<P>
+<A NAME="IDX28"></A>
 <DL>
 <DT><U>Function:</U> int <B>history_truncate_file</B> <I>(const char *filename, int nlines)</I>
-<DD><A NAME="IDX31"></A>
-Truncate the history file <VAR>filename</VAR>, leaving only the last
+<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>
-
-
-<H3><A NAME="SEC16" HREF="history.html#TOC16">History Expansion</A></H3>
-
+</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#SEC19">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>
 
-</P>
-<P>
+<A NAME="IDX29"></A>
 <DL>
 <DT><U>Function:</U> int <B>history_expand</B> <I>(char *string, char **output)</I>
-<DD><A NAME="IDX32"></A>
-Expand <VAR>string</VAR>, placing the result into <VAR>output</VAR>, a pointer
-to a string (see section <A HREF="history.html#SEC2">History Expansion</A>).  Returns:
+<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
+<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;
+<DD>if expansions did take place;
 <DT><CODE>-1</CODE>
-<DD>
-if there was an error in expansion;
+<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">Modifiers</A>).
+<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 ocurred in expansion, then <VAR>output</VAR> contains a descriptive
 error message.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX30"></A>
 <DL>
 <DT><U>Function:</U> char * <B>get_history_event</B> <I>(const char *string, int *cindex, int qchar)</I>
-<DD><A NAME="IDX33"></A>
-Returns the text of the history event beginning at <VAR>string</VAR> +
+<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>
 
-</P>
-<P>
+<A NAME="IDX31"></A>
 <DL>
 <DT><U>Function:</U> char ** <B>history_tokenize</B> <I>(const char *string)</I>
-<DD><A NAME="IDX34"></A>
-Return an array of tokens parsed out of <VAR>string</VAR>, much as the
+<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>
 
-</P>
-<P>
+<A NAME="IDX32"></A>
 <DL>
 <DT><U>Function:</U> char * <B>history_arg_extract</B> <I>(int first, int last, const char *string)</I>
-<DD><A NAME="IDX35"></A>
-Extract a string segment consisting of the <VAR>first</VAR> through <VAR>last</VAR>
+<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>
-
-
-<H2><A NAME="SEC17" HREF="history.html#TOC17">History Variables</A></H2>
-
+</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#SEC19">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>
 
-</P>
-<P>
+<A NAME="IDX33"></A>
 <DL>
 <DT><U>Variable:</U> int <B>history_base</B>
-<DD><A NAME="IDX36"></A>
-The logical offset of the first entry in the history list.
+<DD>The logical offset of the first entry in the history list.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX34"></A>
 <DL>
 <DT><U>Variable:</U> int <B>history_length</B>
-<DD><A NAME="IDX37"></A>
-The number of entries currently stored in the history list.
+<DD>The number of entries currently stored in the history list.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX35"></A>
 <DL>
 <DT><U>Variable:</U> int <B>history_max_entries</B>
-<DD><A NAME="IDX38"></A>
-The maximum number of history entries.  This must be changed using
+<DD>The maximum number of history entries.  This must be changed using
 <CODE>stifle_history()</CODE>.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX36"></A>
 <DL>
 <DT><U>Variable:</U> char <B>history_expansion_char</B>
-<DD><A NAME="IDX39"></A>
-The character that introduces a history event.  The default is <SAMP>`!'</SAMP>.
+<DD>The character that introduces a history event.  The default is <SAMP>`!'</SAMP>.
 Setting this to 0 inhibits history expansion.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX37"></A>
 <DL>
 <DT><U>Variable:</U> char <B>history_subst_char</B>
-<DD><A NAME="IDX40"></A>
-The character that invokes word substitution if found at the start of
+<DD>The character that invokes word substitution if found at the start of
 a line.  The default is <SAMP>`^'</SAMP>.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX38"></A>
 <DL>
 <DT><U>Variable:</U> char <B>history_comment_char</B>
-<DD><A NAME="IDX41"></A>
-During tokenization, if this character is seen as the first character
+<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>
 
-</P>
-<P>
+<A NAME="IDX39"></A>
 <DL>
 <DT><U>Variable:</U> char * <B>history_word_delimiters</B>
-<DD><A NAME="IDX42"></A>
-The characters that separate tokens for \fBhistory_tokenize()\fP.
-The default value is <CODE>" \t\n()&#60;&#62;;&#38;|"</CODE>.
+<DD>The characters that separate tokens for <CODE>history_tokenize()</CODE>.
+The default value is <CODE>" \t\n()<>;&|"</CODE>.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX40"></A>
 <DL>
 <DT><U>Variable:</U> char * <B>history_no_expand_chars</B>
-<DD><A NAME="IDX43"></A>
-The list of characters which inhibit history expansion if found immediately
+<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>
 
-</P>
-<P>
+<A NAME="IDX41"></A>
 <DL>
 <DT><U>Variable:</U> char * <B>history_search_delimiter_chars</B>
-<DD><A NAME="IDX44"></A>
-The list of additional characters which can delimit a history search
+<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>
 
-</P>
-<P>
+<A NAME="IDX42"></A>
 <DL>
 <DT><U>Variable:</U> int <B>history_quotes_inhibit_expansion</B>
-<DD><A NAME="IDX45"></A>
-If non-zero, single-quoted words are not scanned for the history expansion
+<DD>If non-zero, single-quoted words are not scanned for the history expansion
 character.  The default value is 0.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX43"></A>
 <DL>
 <DT><U>Variable:</U> rl_linebuf_func_t * <B>history_inhibit_expansion_function</B>
-<DD><A NAME="IDX46"></A>
-This should be set to the address of a function that takes two arguments:
+<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
@@ -990,19 +1102,30 @@ 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>
-
-
-<H2><A NAME="SEC18" HREF="history.html#TOC18">History Programming Example</A></H2>
-
+</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#SEC19">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>
+The following program demonstrates simple use of the GNU History Library.
+</P><P>
 
-<PRE>
-#include &#60;stdio.h&#62;
+<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)
@@ -1087,136 +1210,429 @@ main (argc, argv)
         }
     }
 }
-</PRE>
-
+</FONT></pre></td></tr></table></P><P>
+
+<A NAME="Concept Index"></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#SEC20"> &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#SEC20"> &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#SEC19">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1> A. Concept Index </H1>
+<!--docid::SEC19::-->
+<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#IDX20">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="SEC20"></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">[ &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#SEC19">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1> B. Function and Variable Index </H1>
+<!--docid::SEC20::-->
+<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_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#IDX27"><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#IDX8"><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#IDX14"><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_G"></A>G</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX30"><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#IDX32"><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#IDX33"><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#IDX38"><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#IDX29"><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#IDX36"><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#IDX15"><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#IDX43"><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#IDX11"><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#IDX34"><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#IDX12"><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#IDX35"><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#IDX40"><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#IDX42"><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#IDX21"><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#IDX41"><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#IDX23"><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#IDX22"><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#IDX17"><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#IDX37"><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#IDX31"><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#IDX16"><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#IDX28"><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#IDX39"><CODE>history_word_delimiters</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#IDX19"><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#IDX18"><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#IDX24"><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#IDX25"><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#IDX6"><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#IDX7"><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#IDX9"><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#IDX10"><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#IDX13"><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#IDX26"><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_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#SEC19">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. Concept Index</A>
+<BR>
+<A NAME="TOC20" HREF="history.html#SEC20">B. 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#SEC19">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. Concept Index</A>
+<BR>
+<A NAME="TOC20" HREF="history.html#SEC20">B. 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#SEC19">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>October, 9  2001</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>October, 9  2001</I>
+using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
+"><I>texi2html</I></A>
 
-<H1><A NAME="SEC19" HREF="history.html#TOC19">Concept Index</A></H1>
-<P>
-Jump to:
-<A HREF="#cindex_a">a</A>
--
-<A HREF="#cindex_e">e</A>
--
-<A HREF="#cindex_h">h</A>
-<P>
-<H2><A NAME="cindex_a">a</A></H2>
-<DIR>
-<LI><A HREF="history.html#IDX23">anchored search</A>
-</DIR>
-<H2><A NAME="cindex_e">e</A></H2>
-<DIR>
-<LI><A HREF="history.html#IDX2">event designators</A>
-</DIR>
-<H2><A NAME="cindex_h">h</A></H2>
-<DIR>
-<LI><A HREF="history.html#IDX3">history events</A>
-<LI><A HREF="history.html#IDX1">history expansion</A>
-<LI><A HREF="history.html#IDX22">History Searching</A>
-</DIR>
-
-</P>
-
-
-<H1><A NAME="SEC20" HREF="history.html#TOC20">Function and Variable Index</A></H1>
-<P>
-Jump to:
-<A HREF="#vindex_a">a</A>
--
-<A HREF="#vindex_c">c</A>
--
-<A HREF="#vindex_g">g</A>
--
-<A HREF="#vindex_h">h</A>
--
-<A HREF="#vindex_n">n</A>
--
-<A HREF="#vindex_p">p</A>
--
-<A HREF="#vindex_r">r</A>
--
-<A HREF="#vindex_s">s</A>
--
-<A HREF="#vindex_u">u</A>
--
-<A HREF="#vindex_w">w</A>
-<P>
-<H2><A NAME="vindex_a">a</A></H2>
-<DIR>
-<LI><A HREF="history.html#IDX7">add_history</A>
-<LI><A HREF="history.html#IDX30">append_history</A>
-</DIR>
-<H2><A NAME="vindex_c">c</A></H2>
-<DIR>
-<LI><A HREF="history.html#IDX10">clear_history</A>
-<LI><A HREF="history.html#IDX16">current_history</A>
-</DIR>
-<H2><A NAME="vindex_g">g</A></H2>
-<DIR>
-<LI><A HREF="history.html#IDX33">get_history_event</A>
-</DIR>
-<H2><A NAME="vindex_h">h</A></H2>
-<DIR>
-<LI><A HREF="history.html#IDX35">history_arg_extract</A>
-<LI><A HREF="history.html#IDX36">history_base</A>
-<LI><A HREF="history.html#IDX41">history_comment_char</A>
-<LI><A HREF="history.html#IDX32">history_expand</A>
-<LI><A HREF="history.html#IDX39">history_expansion_char</A>
-<LI><A HREF="history.html#IDX17">history_get</A>
-<LI><A HREF="history.html#IDX5">history_get_history_state</A>
-<LI><A HREF="history.html#IDX46">history_inhibit_expansion_function</A>
-<LI><A HREF="history.html#IDX13">history_is_stifled</A>
-<LI><A HREF="history.html#IDX37">history_length</A>
-<LI><A HREF="history.html#IDX14">history_list</A>
-<LI><A HREF="history.html#IDX38">history_max_entries</A>
-<LI><A HREF="history.html#IDX43">history_no_expand_chars</A>
-<LI><A HREF="history.html#IDX45">history_quotes_inhibit_expansion</A>
-<LI><A HREF="history.html#IDX24">history_search</A>
-<LI><A HREF="history.html#IDX44">history_search_delimiter_chars</A>
-<LI><A HREF="history.html#IDX26">history_search_pos</A>
-<LI><A HREF="history.html#IDX25">history_search_prefix</A>
-<LI><A HREF="history.html#IDX6">history_set_history_state</A>
-<LI><A HREF="history.html#IDX19">history_set_pos</A>
-<LI><A HREF="history.html#IDX40">history_subst_char</A>
-<LI><A HREF="history.html#IDX34">history_tokenize</A>
-<LI><A HREF="history.html#IDX18">history_total_bytes</A>
-<LI><A HREF="history.html#IDX31">history_truncate_file</A>
-<LI><A HREF="history.html#IDX42">history_word_delimiters</A>
-</DIR>
-<H2><A NAME="vindex_n">n</A></H2>
-<DIR>
-<LI><A HREF="history.html#IDX21">next_history</A>
-</DIR>
-<H2><A NAME="vindex_p">p</A></H2>
-<DIR>
-<LI><A HREF="history.html#IDX20">previous_history</A>
-</DIR>
-<H2><A NAME="vindex_r">r</A></H2>
-<DIR>
-<LI><A HREF="history.html#IDX27">read_history</A>
-<LI><A HREF="history.html#IDX28">read_history_range</A>
-<LI><A HREF="history.html#IDX8">remove_history</A>
-<LI><A HREF="history.html#IDX9">replace_history_entry</A>
-</DIR>
-<H2><A NAME="vindex_s">s</A></H2>
-<DIR>
-<LI><A HREF="history.html#IDX11">stifle_history</A>
-</DIR>
-<H2><A NAME="vindex_u">u</A></H2>
-<DIR>
-<LI><A HREF="history.html#IDX12">unstifle_history</A>
-<LI><A HREF="history.html#IDX4">using_history</A>
-</DIR>
-<H2><A NAME="vindex_w">w</A></H2>
-<DIR>
-<LI><A HREF="history.html#IDX15">where_history</A>
-<LI><A HREF="history.html#IDX29">write_history</A>
-</DIR>
-
-</P>
-<P><HR><P>
-This document was generated on 16 April 2001 using the
-<A HREF="http://wwwinfo.cern.ch/dis/texi2html/">texi2html</A>
-translator version 1.52.</P>
 </BODY>
 </HTML>
index 5db15f6a767e320b67941c79d348bd513f1690dd..143fba4fd43d3755dfa3882deec1f787d4bae69e 100644 (file)
@@ -626,8 +626,8 @@ the GNU History Library.
      remainder of the line.  This is disabled by default.
 
  - Variable: char * history_word_delimiters
-     The characters that separate tokens for \fBhistory_tokenize()\fP.
-     The default value is `" \t\n()<>;&|"'.
+     The characters that separate tokens for `history_tokenize()'.  The
+     default value is `" \t\n()<>;&|"'.
 
  - Variable: char * history_no_expand_chars
      The list of characters which inhibit history expansion if found
@@ -832,8 +832,8 @@ Node: Searching the History List\7f16536
 Node: Managing the History File\7f18454
 Node: History Expansion\7f20260
 Node: History Variables\7f22155
-Node: History Programming Example\7f24725
-Node: Concept Index\7f27447
-Node: Function and Variable Index\7f27933
+Node: History Programming Example\7f24722
+Node: Concept Index\7f27444
+Node: Function and Variable Index\7f27930
 \1f
 End Tag Table
index 4532736d81a2083357059d94401b451b6f835ff4..df0139618ba98143a13d5c8f0a512c2fd63b88db 100644 (file)
@@ -8,7 +8,7 @@
 %DVIPSWebPage: (www.radicaleye.com)
 %DVIPSCommandLine: dvips -D 300 -t letter -o history.ps history.dvi
 %DVIPSParameters: dpi=300, compressed
-%DVIPSSource:  TeX output 2001.04.16:1105
+%DVIPSSource:  TeX output 2001.10.09:1508
 %%BeginProcSet: texc.pro
 %!
 /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -820,12 +820,12 @@ letter
 %%EndSetup
 %%Page: 1 1
 1 0 bop 75 659 a Fq(GNU)33 b(History)f(Library)p 75 709
-1800 17 v 960 757 a Fp(Edition)16 b(4.2,)e(for)h Fo(History)f(Library)g
-Fp(V)l(ersion)i(4.2.)1692 811 y(Apr)f(2001)75 2467 y
-Fn(Brian)23 b(F)-6 b(o)n(x,)23 b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)-6
-b(oundation)75 2534 y(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)p 75 2570
-1800 9 v eop
+1800 17 v 915 757 a Fp(Edition)16 b(4.2a,)e(for)g Fo(History)g(Library)
+h Fp(V)l(ersion)h(4.2a.)1608 811 y(Octob)q(er)g(2001)75
+2467 y Fn(Brian)23 b(F)-6 b(o)n(x,)23 b(F)-6 b(ree)23
+b(Soft)n(w)n(are)f(F)-6 b(oundation)75 2534 y(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)p 75 2570 1800 9 v eop
 %%Page: 2 2
 2 1 bop 75 217 a Fp(This)21 b(do)q(cumen)o(t)g(describ)q(es)h(the)f
 (GNU)f(History)g(library)l(,)j(a)d(programming)g(to)q(ol)g(that)g(pro)o
@@ -1372,11 +1372,10 @@ o(haracter)e(is)h(seen)h(as)e(the)h(\014rst)g(c)o(haracter)f(of)g(a)h
 (line.)21 b(This)16 b(is)g(disabled)h(b)o(y)e(default.)1773
 1835 y(V)l(ariable)-1861 b Fh(char)20 b(*)f Fg(history)p
 422 1835 V 21 w(w)n(ord)p 567 1835 V 20 w(delimiters)195
-1889 y Fp(The)e(c)o(haracters)g(that)f(separate)h(tok)o(ens)g(for)f
-Fo(\\)p Fp(fBhistory)p 1217 1889 14 2 v 17 w(tok)o(enize\(\))p
-Fo(\\)p Fp(fP)l(.)g(The)i(default)g(v)m(alue)195 1944
-y(is)e Fo(")f(\\t\\n\(\)<>;&|")p Fp(.)1773 2077 y(V)l(ariable)-1861
-b Fh(char)20 b(*)f Fg(history)p 422 2077 18 3 v 21 w(no)p
+1889 y Fp(The)14 b(c)o(haracters)f(that)g(separate)g(tok)o(ens)h(for)f
+Fo(history_tokenize\(\))p Fp(.)k(The)d(default)g(v)m(alue)h(is)f
+Fo(")195 1944 y(\\t\\n\(\)<>;&|")p Fp(.)1773 2077 y(V)l(ariable)-1861
+b Fh(char)20 b(*)f Fg(history)p 422 2077 V 21 w(no)p
 504 2077 V 20 w(expand)p 704 2077 V 20 w(c)n(hars)195
 2131 y Fp(The)c(list)h(of)e(c)o(haracters)g(whic)o(h)i(inhibit)h
 (history)e(expansion)h(if)f(found)h(immediately)g(follo)o(wing)195
index e4ac50cb69a4a0eb68d0ee6e21863afcb73339ae..003721a7003c2721fe2fc820edc2d95d84a6dbcd 100644 (file)
@@ -422,7 +422,7 @@ This is disabled by default.
 @end deftypevar
 
 @deftypevar {char *} history_word_delimiters
-The characters that separate tokens for \fBhistory_tokenize()\fP.
+The characters that separate tokens for @code{history_tokenize()}.
 The default value is @code{" \t\n()<>;&|"}.
 @end deftypevar
 
index 07fb02adc013a21bab7097757228320d23431d53..859afc1e4e7a5ac710d5e7633a3cd31e29612db8 100644 (file)
@@ -1,6 +1,6 @@
-@set EDITION 4.2
-@set VERSION 4.2
-@set UPDATED 2001 Apr 16
-@set UPDATE-MONTH Apr 2001
+@set EDITION 4.2a
+@set VERSION 4.2a
+@set UPDATED 2001 October 9
+@set UPDATE-MONTH October 2001
 
-@set LASTCHANGE Mon Apr 16 10:53:58 EDT 2001
+@set LASTCHANGE Tue Oct  9 15:03:34 EDT 2001
index 398132daff0dc03e430df7223747a2f4b4fb4cba..af2efae9a5e075c7e13282373e5ae82d21d7ca95 100644 (file)
@@ -61,7 +61,7 @@ N\bNO\bOT\bTA\bAT\bTI\bIO\bON\bN
 
 
 
-GNU Readline 4.2            2001 Mar 5                          1
+GNU Readline 4.2a         2001 October 9                        1
 
 
 
@@ -127,7 +127,7 @@ I\bIN\bNI\bIT\bTI\bIA\bAL\bLI\bIZ\bZA\bAT\bTI\bIO\bON\bN F\bFI\bIL\bLE\bE
 
 
 
-GNU Readline 4.2            2001 Mar 5                          2
+GNU Readline 4.2a         2001 October 9                        2
 
 
 
@@ -181,19 +181,19 @@ READLINE(3)                                           READLINE(3)
               \\b\r\br     carriage return
               \\b\t\bt     horizontal tab
               \\b\v\bv     vertical tab
-              \\b\_\bn_\bn_\bn   the character whose ASCII code is the  octal
-                     value _\bn_\bn_\bn (one to three digits)
-              \\b\x\bx_\bn_\bn_\bn  the  character  whose ASCII code is the hex-
-                     adecimal value _\bn_\bn_\bn (one to three digits)
+              \\b\_\bn_\bn_\bn   the eight-bit character whose value  is  the
+                     octal value _\bn_\bn_\bn (one to three digits)
+              \\b\x\bx_\bH_\bH   the  eight-bit  character whose value is the
+                     hexadecimal value _\bH_\bH (one or two hex digits)
 
        When entering the text of a macro, single or double quotes
-       should  be  used to indicate a macro definition.  Unquoted
+       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.
+       the  backslash  escapes  described  above  are   expanded.
 
 
 
-GNU Readline 4.2            2001 Mar 5                          3
+GNU Readline 4.2a         2001 October 9                        3
 
 
 
@@ -202,64 +202,64 @@ GNU Readline 4.2            2001 Mar 5                          3
 READLINE(3)                                           READLINE(3)
 
 
-       Backslash will quote any  other  character  in  the  macro
+       Backslash  will  quote  any  other  character in the macro
        text, including " and '.
 
-       B\bBa\bas\bsh\b allows  the current readline key bindings to be dis-
-       played or modified with the  b\bbi\bin\bnd\bd  builtin  command.   The
-       editing  mode  may  be  switched during interactive use by
-       using the -\b-o\bo option to the  s\bse\bet\bt  builtin  command.   Other
-       programs  using  this  library provide similar mechanisms.
-       The _\bi_\bn_\bp_\bu_\bt_\br_\bc file may be edited and re-read  if  a  program
-       does  not provide any other means to incorporate new bind-
+       B\bBa\bas\bsh\ballows the current readline key bindings to  be  dis-
+       played  or  modified  with  the b\bbi\bin\bnd\bd builtin command.  The
+       editing mode may be switched  during  interactive  use  by
+       using  the  -\b-o\bo  option  to the s\bse\bet\bt builtin command.  Other
+       programs using this library  provide  similar  mechanisms.
+       The  _\bi_\bn_\bp_\bu_\bt_\br_\bc  file  may be edited and re-read if a program
+       does not provide any other means to incorporate new  bind-
        ings.
 
    V\bVa\bar\bri\bia\bab\bbl\ble\bes\bs
-       Readline has variables that can be used  to  further  cus-
+       Readline  has  variables  that can be used to further cus-
        tomize its behavior.  A variable may be set in the _\bi_\bn_\bp_\bu_\bt_\br_\bc
        file with a statement of the form
 
               s\bse\bet\bt _\bv_\ba_\br_\bi_\ba_\bb_\bl_\be_\b-_\bn_\ba_\bm_\be _\bv_\ba_\bl_\bu_\be
 
        Except where noted, readline variables can take the values
-       O\bOn\b or  O\bOf\bff\bf  (without  regard to case).  The variables and
+       O\bOn\bor O\bOf\bff\bf (without regard to  case).   The  variables  and
        their default values are:
 
        b\bbe\bel\bll\bl-\b-s\bst\bty\byl\ble\be (\b(a\bau\bud\bdi\bib\bbl\ble\be)\b)
-              Controls what happens when readline wants  to  ring
-              the  terminal bell.  If set to n\bno\bon\bne\be, readline never
+              Controls  what  happens when readline wants to ring
+              the terminal bell.  If set to n\bno\bon\bne\be, readline  never
               rings the bell.  If set to v\bvi\bis\bsi\bib\bbl\ble\be, readline uses a
-              visible  bell if one is available.  If set to a\bau\bud\bdi\bi-\b-
+              visible bell if one is available.  If set to  a\bau\bud\bdi\bi-\b-
               b\bbl\ble\be, readline attempts to ring the terminal's bell.
        c\bco\bom\bmm\bme\ben\bnt\bt-\b-b\bbe\beg\bgi\bin\bn (\b(`\b``\b`#\b#'\b''\b')\b)
-              The  string  that  is  inserted in v\bvi\bi mode when the
-              i\bin\bns\bse\ber\brt\bt-\b-c\bco\bom\bmm\bme\ben\bnt\bcommand is executed.   This  command
-              is  bound  to M\bM-\b-#\b# in emacs mode and to #\b# in vi com-
+              The string that is inserted in  v\bvi\bi  mode  when  the
+              i\bin\bns\bse\ber\brt\bt-\b-c\bco\bom\bmm\bme\ben\bnt\b command  is executed.  This command
+              is bound to M\bM-\b-#\b# in emacs mode and to #\b# in  vi  com-
               mand mode.
        c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bn-\b-i\big\bgn\bno\bor\bre\be-\b-c\bca\bas\bse\be (\b(O\bOf\bff\bf)\b)
-              If set to O\bOn\bn, readline performs  filename  matching
+              If  set  to O\bOn\bn, readline performs filename matching
               and completion in a case-insensitive fashion.
        c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bn-\b-q\bqu\bue\ber\bry\by-\b-i\bit\bte\bem\bms\bs (\b(1\b10\b00\b0)\b)
-              This  determines  when  the  user  is queried about
-              viewing the number of possible  completions  gener-
-              ated  by  the p\bpo\bos\bss\bsi\bib\bbl\ble\be-\b-c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bns\bs 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  vari-
+              This determines when  the  user  is  queried  about
+              viewing  the  number of possible completions gener-
+              ated by the p\bpo\bos\bss\bsi\bib\bbl\ble\be-\b-c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bns\bs 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 vari-
               able, the user is asked whether or not he wishes to
-              view them; otherwise they are simply listed on  the
+              view  them; otherwise they are simply listed on the
               terminal.
        c\bco\bon\bnv\bve\ber\brt\bt-\b-m\bme\bet\bta\ba (\b(O\bOn\bn)\b)
               If set to O\bOn\bn, 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
+              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
               _\bm_\be_\bt_\ba _\bp_\br_\be_\bf_\bi_\bx).
 
 
 
 
-GNU Readline 4.2            2001 Mar 5                          4
+GNU Readline 4.2a         2001 October 9                        4
 
 
 
@@ -269,63 +269,63 @@ READLINE(3)                                           READLINE(3)
 
 
        d\bdi\bis\bsa\bab\bbl\ble\be-\b-c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bn (\b(O\bOf\bff\bf)\b)
-              If  set  to  O\bOn\bn, readline will inhibit word comple-
-              tion.  Completion characters will be inserted  into
+              If set to O\bOn\bn, readline will  inhibit  word  comple-
+              tion.   Completion characters will be inserted into
               the line as if they had been mapped to s\bse\bel\blf\bf-\b-i\bin\bns\bse\ber\brt\bt.
        e\bed\bdi\bit\bti\bin\bng\bg-\b-m\bmo\bod\bde\be (\b(e\bem\bma\bac\bcs\bs)\b)
-              Controls whether readline begins with a set of  key
-              bindings  similar to emacs or vi.  e\bed\bdi\bit\bti\bin\bng\bg-\b-m\bmo\bod\bde\be can
+              Controls  whether readline begins with a set of key
+              bindings similar to emacs or vi.  e\bed\bdi\bit\bti\bin\bng\bg-\b-m\bmo\bod\bde\b can
               be set to either e\bem\bma\bac\bcs\bs or v\bvi\bi.
        e\ben\bna\bab\bbl\ble\be-\b-k\bke\bey\byp\bpa\bad\bd (\b(O\bOf\bff\bf)\b)
-              When set to O\bOn\bn, readline will  try  to  enable  the
+              When  set  to  O\bOn\bn,  readline will try to enable the
               application keypad when it is called.  Some systems
               need this to enable the arrow keys.
        e\bex\bxp\bpa\ban\bnd\bd-\b-t\bti\bil\bld\bde\be (\b(O\bOf\bff\bf)\b)
-              If set to o\bon\bn, tilde  expansion  is  performed  when
+              If  set  to  o\bon\bn,  tilde expansion is performed when
               readline attempts word completion.
+       h\bhi\bis\bst\bto\bor\bry\by-\b-p\bpr\bre\bes\bse\ber\brv\bve\be-\b-p\bpo\boi\bin\bnt\bt
+              If set to o\bon\bn, the history code  attempts  to  place
+              point  at  the  same  location on each history line
+              retrived with p\bpr\bre\bev\bvi\bio\bou\bus\bs-\b-h\bhi\bis\bst\bto\bor\bry\by or n\bne\bex\bxt\bt-\b-h\bhi\bis\bst\bto\bor\bry\by.
        h\bho\bor\bri\biz\bzo\bon\bnt\bta\bal\bl-\b-s\bsc\bcr\bro\bol\bll\bl-\b-m\bmo\bod\bde\be (\b(O\bOf\bff\bf)\b)
-              When  set  to  O\bOn\bn, makes readline use a single line
-              for display, scrolling the input horizontally on  a
-              single  screen line when it becomes longer than the
+              When set to O\bOn\bn, 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.
        i\bin\bnp\bpu\but\bt-\b-m\bme\bet\bta\ba (\b(O\bOf\bff\bf)\b)
-              If set to O\bOn\bn, readline will enable eight-bit  input
-              (that  is,  it will not clear the eighth bit in the
+              If  set to O\bOn\bn, readline will enable eight-bit input
+              (that is, it will not clear the eighth bit  in  the
               characters it reads), regardless of what the termi-
               nal claims it can support.  The name m\bme\bet\bta\ba-\b-f\bfl\bla\bag\bg is a
               synonym for this variable.
        i\bis\bse\bea\bar\brc\bch\bh-\b-t\bte\ber\brm\bmi\bin\bna\bat\bto\bor\brs\bs (\b(`\b``\b`C\bC-\b-[\b[ C\bC-\b-J\bJ'\b''\b')\b)
-              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 _\bE_\bS_\bC and _\bC_\b-_\bJ
+              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 _\bE_\bS_\bC and  _\bC_\b-_\bJ
               will terminate an incremental search.
        k\bke\bey\bym\bma\bap\bp (\b(e\bem\bma\bac\bcs\bs)\b)
-              Set the current readline keymap.  The set of  legal
-              keymap  names is _\be_\bm_\ba_\bc_\bs_\b, _\be_\bm_\ba_\bc_\bs_\b-_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd_\b, _\be_\bm_\ba_\bc_\bs_\b-_\bm_\be_\bt_\ba_\b,
+              Set  the current readline keymap.  The set of legal
+              keymap names is _\be_\bm_\ba_\bc_\bs_\b, _\be_\bm_\ba_\bc_\bs_\b-_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd_\b _\be_\bm_\ba_\bc_\bs_\b-_\bm_\be_\bt_\ba_\b,
               _\be_\bm_\ba_\bc_\bs_\b-_\bc_\bt_\bl_\bx_\b, _\bv_\bi_\b, _\bv_\bi_\b-_\bm_\bo_\bv_\be_\b, _\bv_\bi_\b-_\bc_\bo_\bm_\bm_\ba_\bn_\bd, and _\bv_\bi_\b-_\bi_\bn_\bs_\be_\br_\bt.
               _\bv_\bi is equivalent to _\bv_\bi_\b-_\bc_\bo_\bm_\bm_\ba_\bn_\bd; _\be_\bm_\ba_\bc_\bs is equivalent
-              to _\be_\bm_\ba_\bc_\bs_\b-_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd.  The  default  value  is  _\be_\bm_\ba_\bc_\bs.
-              The  value of e\bed\bdi\bit\bti\bin\bng\bg-\b-m\bmo\bod\bde\be also affects the default
+              to  _\be_\bm_\ba_\bc_\bs_\b-_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd.   The  default  value is _\be_\bm_\ba_\bc_\bs.
+              The value of e\bed\bdi\bit\bti\bin\bng\bg-\b-m\bmo\bod\bde\be also affects the  default
               keymap.
        m\bma\bar\brk\bk-\b-d\bdi\bir\bre\bec\bct\bto\bor\bri\bie\bes\bs (\b(O\bOn\bn)\b)
-              If set to O\bOn\bn,  completed  directory  names  have  a
+              If  set  to  O\bOn\bn,  completed  directory names have a
               slash appended.
        m\bma\bar\brk\bk-\b-m\bmo\bod\bdi\bif\bfi\bie\bed\bd-\b-l\bli\bin\bne\bes\bs (\b(O\bOf\bff\bf)\b)
               If set to O\bOn\bn, history lines that have been modified
               are displayed with a preceding asterisk (*\b*).
-       o\bou\but\btp\bpu\but\bt-\b-m\bme\bet\bta\ba (\b(O\bOf\bff\bf)\b)
-              If set to O\bOn\bn, readline will display characters with
-              the  eighth bit set directly rather than as a meta-
-              prefixed escape sequence.
-       p\bpr\bri\bin\bnt\bt-\b-c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bns\bs-\b-h\bho\bor\bri\biz\bzo\bon\bnt\bta\bal\bll\bly\by (\b(O\bOf\bff\bf)\b)
-              If set to O\bOn\bn,  readline  will  display  completions
-              with  matches  sorted  horizontally in alphabetical
-              order, rather than down the screen.
+       m\bma\bat\btc\bch\bh-\b-h\bhi\bid\bdd\bde\ben\bn-\b-f\bfi\bil\ble\bes\bs (\b(O\bOn\bn)\b)
+              This  variable,  when set to O\bOn\bn, causes readline to
+              match files whose names begin with  a  `.'  (hidden
+              files)  when performing filename completion, unless
 
 
 
-GNU Readline 4.2            2001 Mar 5                          5
+GNU Readline 4.2a         2001 October 9                        5
 
 
 
@@ -334,42 +334,52 @@ GNU Readline 4.2            2001 Mar 5                          5
 READLINE(3)                                           READLINE(3)
 
 
+              the leading `.' is supplied  by  the  user  in  the
+              filename to be completed.
+       o\bou\but\btp\bpu\but\bt-\b-m\bme\bet\bta\ba (\b(O\bOf\bff\bf)\b)
+              If set to O\bOn\bn, readline will display characters with
+              the eighth bit set directly rather than as a  meta-
+              prefixed escape sequence.
+       p\bpr\bri\bin\bnt\bt-\b-c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bns\bs-\b-h\bho\bor\bri\biz\bzo\bon\bnt\bta\bal\bll\bly\by (\b(O\bOf\bff\bf)\b)
+              If  set  to  O\bOn\bn,  readline will display completions
+              with matches sorted  horizontally  in  alphabetical
+              order, rather than down the screen.
        s\bsh\bho\bow\bw-\b-a\bal\bll\bl-\b-i\bif\bf-\b-a\bam\bmb\bbi\big\bgu\buo\bou\bus\bs (\b(O\bOf\bff\bf)\b)
-              This alters the default behavior of the  completion
-              functions.   If  set  to  o\bon\bn, words which have more
-              than one possible completion cause the  matches  to
-              be  listed immediately instead of ringing the bell.
+              This  alters the default behavior of the completion
+              functions.  If set to o\bon\bn,  words  which  have  more
+              than  one  possible completion cause the matches to
+              be listed immediately instead of ringing the  bell.
        v\bvi\bis\bsi\bib\bbl\ble\be-\b-s\bst\bta\bat\bts\bs (\b(O\bOf\bff\bf)\b)
               If set to O\bOn\bn, a character denoting a file's type as
-              reported  by  _\bs_\bt_\ba_\bt(2)  is  appended to the filename
+              reported by _\bs_\bt_\ba_\bt(2) is  appended  to  the  filename
               when listing possible completions.
 
    C\bCo\bon\bnd\bdi\bit\bti\bio\bon\bna\bal\bl C\bCo\bon\bns\bst\btr\bru\buc\bct\bts\bs
-       Readline implements a facility similar in  spirit  to  the
-       conditional  compilation  features  of  the C preprocessor
+       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 per-
-       formed  as  the  result  of  tests.  There are four parser
+       formed as the result of  tests.   There  are  four  parser
        directives used.
 
-       $\b$i\bif\bf    The $\b$i\bif\bf 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
+       $\b$i\bif\bf    The  $\b$i\bif\bf 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.
 
-              m\bmo\bod\bde\be   The m\bmo\bod\bde\be=\b= form of the $\b$i\bif\bf directive is  used
-                     to  test  whether readline is in emacs or vi
-                     mode.  This may be used in conjunction  with
+              m\bmo\bod\bde\be   The  m\bmo\bod\bde\be=\b= form of the $\b$i\bif\bf directive is used
+                     to test whether readline is in emacs  or  vi
+                     mode.   This may be used in conjunction with
                      the s\bse\bet\bt k\bke\bey\bym\bma\bap\bp command, for instance, to set
-                     bindings in the  _\be_\bm_\ba_\bc_\bs_\b-_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd  and  _\be_\bm_\ba_\bc_\bs_\b-
-                     _\bc_\bt_\bl_\b keymaps  only  if readline is starting
+                     bindings  in  the  _\be_\bm_\ba_\bc_\bs_\b-_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd and _\be_\bm_\ba_\bc_\bs_\b-
+                     _\bc_\bt_\bl_\bkeymaps only if  readline  is  starting
                      out in emacs mode.
 
               t\bte\ber\brm\bm   The t\bte\ber\brm\bm=\b= form may be used to include termi-
-                     nal-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
+                     nal-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 -\b-.  This allows _\bs_\bu_\bn to
                      match both _\bs_\bu_\bn and _\bs_\bu_\bn_\b-_\bc_\bm_\bd, for instance.
@@ -377,21 +387,11 @@ READLINE(3)                                           READLINE(3)
               a\bap\bpp\bpl\bli\bic\bca\bat\bti\bio\bon\bn
                      The a\bap\bpp\bpl\bli\bic\bca\bat\bti\bio\bon\bn construct is used to include
                      application-specific settings.  Each program
-                     using the readline library sets the _\ba_\bp_\bp_\bl_\bi_\bc_\ba_\b-
-                     _\bt_\bi_\bo_\bn _\bn_\ba_\bm_\be, and an  initialization  file  can
-                     test  for a particular value.  This could be
-                     used to bind key sequences to functions use-
-                     ful  for  a specific program.  For instance,
-                     the following command adds  a  key  sequence
-                     that  quotes the current or previous word in
-                     Bash:
+                     using  the   readline   library   sets   the
 
-                     $\b$i\bif\bf Bash
-                     # Quote the current or previous word
 
 
-
-GNU Readline 4.2            2001 Mar 5                          6
+GNU Readline 4.2a         2001 October 9                        6
 
 
 
@@ -400,64 +400,64 @@ GNU Readline 4.2            2001 Mar 5                          6
 READLINE(3)                                           READLINE(3)
 
 
+                     _\ba_\bp_\bp_\bl_\bi_\bc_\ba_\bt_\bi_\bo_\bn _\bn_\ba_\bm_\be, 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 Bash:
+
+                     $\b$i\bif\bf Bash
+                     # Quote the current or previous word
                      "\C-xq": "\eb\"\ef\""
                      $\b$e\ben\bnd\bdi\bif\bf
 
        $\b$e\ben\bnd\bdi\bif\bf This command, as seen in the previous example, ter-
               minates an $\b$i\bif\bf command.
 
-       $\b$e\bel\bls\bse\be  Commands  in  this  branch of the $\b$i\bif\bf directive are
+       $\b$e\bel\bls\bse\be  Commands in this branch of the  $\b$i\bif\bf  directive  are
               executed if the test fails.
 
        $\b$i\bin\bnc\bcl\blu\bud\bde\be
-              This directive takes a single filename as an  argu-
-              ment  and  reads  commands  and  bindings from that
-              file.  For example, the following  directive  would
+              This  directive takes a single filename as an argu-
+              ment and reads  commands  and  bindings  from  that
+              file.   For  example, the following directive would
               read _\b/_\be_\bt_\bc_\b/_\bi_\bn_\bp_\bu_\bt_\br_\bc:
 
               $\b$i\bin\bnc\bcl\blu\bud\bde\be  _\b/_\be_\bt_\bc_\b/_\bi_\bn_\bp_\bu_\bt_\br_\bc
 
 S\bSE\bEA\bAR\bRC\bCH\bHI\bIN\bNG\bG
-       Readline  provides commands for searching through the com-
-       mand history for  lines  containing  a  specified  string.
-       There  are two search modes: _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt_\ba_\bl and _\bn_\bo_\bn_\b-_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\b-
+       Readline provides commands for searching through the  com-
+       mand  history  for  lines  containing  a specified string.
+       There are two search modes: _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt_\ba_\bl and  _\bn_\bo_\bn_\b-_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\b-
        _\bt_\ba_\bl.
 
-       Incremental searches begin before the  user  has  finished
+       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
+       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 his-
-       tory for  a  particular  string,  type  C\bC-\b-r\br.   Typing  C\bC-\b-s\bs
+       tory  for  a  particular  string,  type  C\bC-\b-r\br.   Typing C\bC-\b-s\bs
        searches forward through the history.  The characters pre-
-       sent in the value of the i\bis\bse\bea\bar\brc\bch\bh-\b-t\bte\ber\brm\bmi\bin\bna\bat\bto\bor\brs\bs variable  are
+       sent  in the value of the i\bis\bse\bea\bar\brc\bch\bh-\b-t\bte\ber\brm\bmi\bin\bna\bat\bto\bor\brs\bs variable are
        used to terminate an incremental search.  If that variable
-       has not been assigned a value the _\bE_\bs_\bc_\ba_\bp_\be and  C\bC-\b-J\b charac-
+       has  not  been assigned a value the _\bE_\bs_\bc_\ba_\bp_\be and C\bC-\b-J\bJ charac-
        ters will terminate an incremental search.  C\bC-\b-G\bG 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\bC-\b-s\bs  or  C\bC-\b-r\br 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  exe-
-       cute that command.  For instance, a newline will terminate
-       the search and accept the line, thereby executing the com-
-       mand  from the history list.  A movement command will ter-
-       minate the search, make the last line  found  the  current
-       line, and begin editing.
+       To  find  other matching entries in the history list, type
+       C\bC-\b-s\bs or C\bC-\b-r\br 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
 
-       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.
 
 
-
-GNU Readline 4.2            2001 Mar 5                          7
+GNU Readline 4.2a         2001 October 9                        7
 
 
 
@@ -466,14 +466,25 @@ GNU Readline 4.2            2001 Mar 5                          7
 READLINE(3)                                           READLINE(3)
 
 
+       execute that command.  For instance, a newline will termi-
+       nate 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.
+
+       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.
+
 E\bED\bDI\bIT\bTI\bIN\bNG\bG C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
-       The following is a list of the names of the  commands  and
-       the  default  key sequences to which they are bound.  Com-
+       The  following  is a list of the names of the commands and
+       the default key sequences to which they are  bound.   Com-
        mand  names  without  an  accompanying  key  sequence  are
        unbound by default.
 
        In the following descriptions, _\bp_\bo_\bi_\bn_\bt refers to the current
-       cursor position, and _\bm_\ba_\br_\bk  refers  to  a  cursor  position
+       cursor  position,  and  _\bm_\ba_\br_\bk  refers  to a cursor position
        saved by the s\bse\bet\bt-\b-m\bma\bar\brk\bk command.  The text between the point
        and mark is referred to as the _\br_\be_\bg_\bi_\bo_\bn.
 
@@ -487,43 +498,32 @@ E\bED\bDI\bIT\bTI\bIN\bNG\bG C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
        b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-c\bch\bha\bar\br (\b(C\bC-\b-b\bb)\b)
               Move back a character.
        f\bfo\bor\brw\bwa\bar\brd\bd-\b-w\bwo\bor\brd\bd (\b(M\bM-\b-f\bf)\b)
-              Move forward to the end of the  next  word.   Words
-              are  composed  of  alphanumeric characters (letters
+              Move  forward  to  the end of the next word.  Words
+              are composed of  alphanumeric  characters  (letters
               and digits).
        b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-w\bwo\bor\brd\bd (\b(M\bM-\b-b\bb)\b)
-              Move back to the start of the current  or  previous
-              word.   Words  are composed of alphanumeric charac-
+              Move  back  to the start of the current or previous
+              word.  Words are composed of  alphanumeric  charac-
               ters (letters and digits).
        c\bcl\ble\bea\bar\br-\b-s\bsc\bcr\bre\bee\ben\bn (\b(C\bC-\b-l\bl)\b)
-              Clear the screen leaving the current  line  at  the
-              top  of  the screen.  With an argument, refresh the
+              Clear  the  screen  leaving the current line at the
+              top of the screen.  With an argument,  refresh  the
               current line without clearing the screen.
        r\bre\bed\bdr\bra\baw\bw-\b-c\bcu\bur\brr\bre\ben\bnt\bt-\b-l\bli\bin\bne\be
               Refresh the current line.
 
    C\bCo\bom\bmm\bma\ban\bnd\bds\bs f\bfo\bor\br M\bMa\ban\bni\bip\bpu\bul\bla\bat\bti\bin\bng\bg t\bth\bhe\be H\bHi\bis\bst\bto\bor\bry\by
        a\bac\bcc\bce\bep\bpt\bt-\b-l\bli\bin\bne\be (\b(N\bNe\bew\bwl\bli\bin\bne\be,\b, R\bRe\bet\btu\bur\brn\bn)\b)
-              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  a\bad\bdd\bd_\b_h\bhi\bis\bst\bto\bor\bry\by(\b()\b).
+              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 a\bad\bdd\bd_\b_h\bhi\bis\bst\bto\bor\bry\by(\b()\b).
               If the line is a modified history line, the history
               line is restored to its original state.
-       p\bpr\bre\bev\bvi\bio\bou\bus\bs-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(C\bC-\b-p\bp)\b)
-              Fetch the previous command from the  history  list,
-              moving back in the list.
-       n\bne\bex\bxt\bt-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(C\bC-\b-n\bn)\b)
-              Fetch  the next command from the history list, mov-
-              ing forward in the list.
-       b\bbe\beg\bgi\bin\bnn\bni\bin\bng\bg-\b-o\bof\bf-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(M\bM-\b-<\b<)\b)
-              Move to the first line in the history.
-       e\ben\bnd\bd-\b-o\bof\bf-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(M\bM-\b->\b>)\b)
-              Move to the end of the  input  history,  i.e.,  the
-              line currently being entered.
 
 
 
 
-GNU Readline 4.2            2001 Mar 5                          8
+GNU Readline 4.2a         2001 October 9                        8
 
 
 
@@ -532,64 +532,64 @@ GNU Readline 4.2            2001 Mar 5                          8
 READLINE(3)                                           READLINE(3)
 
 
+       p\bpr\bre\bev\bvi\bio\bou\bus\bs-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(C\bC-\b-p\bp)\b)
+              Fetch  the  previous command from the history list,
+              moving back in the list.
+       n\bne\bex\bxt\bt-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(C\bC-\b-n\bn)\b)
+              Fetch the next command from the history list,  mov-
+              ing forward in the list.
+       b\bbe\beg\bgi\bin\bnn\bni\bin\bng\bg-\b-o\bof\bf-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(M\bM-\b-<\b<)\b)
+              Move to the first line in the history.
+       e\ben\bnd\bd-\b-o\bof\bf-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(M\bM-\b->\b>)\b)
+              Move  to  the  end  of the input history, i.e., the
+              line currently being entered.
        r\bre\bev\bve\ber\brs\bse\be-\b-s\bse\bea\bar\brc\bch\bh-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(C\bC-\b-r\br)\b)
-              Search  backward  starting  at the current line and
+              Search backward starting at the  current  line  and
               moving `up' through the history as necessary.  This
               is an incremental search.
        f\bfo\bor\brw\bwa\bar\brd\bd-\b-s\bse\bea\bar\brc\bch\bh-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(C\bC-\b-s\bs)\b)
-              Search  forward  starting  at  the current line and
-              moving `down' through  the  history  as  necessary.
+              Search forward starting at  the  current  line  and
+              moving  `down'  through  the  history as necessary.
               This is an incremental search.
        n\bno\bon\bn-\b-i\bin\bnc\bcr\bre\bem\bme\ben\bnt\bta\bal\bl-\b-r\bre\bev\bve\ber\brs\bse\be-\b-s\bse\bea\bar\brc\bch\bh-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(M\bM-\b-p\bp)\b)
               Search backward through the history starting at the
-              current line using a non-incremental search  for  a
+              current  line  using a non-incremental search for a
               string supplied by the user.
        n\bno\bon\bn-\b-i\bin\bnc\bcr\bre\bem\bme\ben\bnt\bta\bal\bl-\b-f\bfo\bor\brw\bwa\bar\brd\bd-\b-s\bse\bea\bar\brc\bch\bh-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(M\bM-\b-n\bn)\b)
-              Search  forward  through  the  history using a non-
-              incremental search for a  string  supplied  by  the
+              Search forward through the  history  using  a  non-
+              incremental  search  for  a  string supplied by the
               user.
        h\bhi\bis\bst\bto\bor\bry\by-\b-s\bse\bea\bar\brc\bch\bh-\b-f\bfo\bor\brw\bwa\bar\brd\bd
-              Search  forward  through the history for the string
+              Search forward through the history for  the  string
               of characters between the start of the current line
-              and  the current cursor position (the _\bp_\bo_\bi_\bn_\bt).  This
+              and the current cursor position (the _\bp_\bo_\bi_\bn_\bt).   This
               is a non-incremental search.
        h\bhi\bis\bst\bto\bor\bry\by-\b-s\bse\bea\bar\brc\bch\bh-\b-b\bba\bac\bck\bkw\bwa\bar\brd\bd
-              Search backward through the history for the  string
+              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.
        y\bya\ban\bnk\bk-\b-n\bnt\bth\bh-\b-a\bar\brg\bg (\b(M\bM-\b-C\bC-\b-y\by)\b)
-              Insert the first argument to the  previous  command
-              (usually  the  second word on the previous line) at
-              point.  With an argument _\bn,  insert  the  _\bnth  word
-              from  the previous command (the words in the previ-
-              ous command begin with word 0).  A  negative  argu-
-              ment  inserts the _\bnth word from the end of the pre-
+              Insert  the  first argument to the previous command
+              (usually the second word on the previous  line)  at
+              point.   With  an  argument  _\bn, insert the _\bnth word
+              from the previous command (the words in the  previ-
+              ous  command  begin with word 0).  A negative argu-
+              ment inserts the _\bnth word from the end of the  pre-
               vious command.
        y\bya\ban\bnk\bk-\b-l\bla\bas\bst\bt-\b-a\bar\brg\bg (\b(M\bM-\b-.\b.,\b, M\bM-\b-_\b_)\b)
-              Insert the last argument to  the  previous  command
-              (the  last  word  of  the  previous history entry).
+              Insert  the  last  argument to the previous command
+              (the last word  of  the  previous  history  entry).
               With an argument, behave exactly like y\bya\ban\bnk\bk-\b-n\bnt\bth\bh-\b-a\bar\brg\bg.
               Successive calls to y\bya\ban\bnk\bk-\b-l\bla\bas\bst\bt-\b-a\bar\brg\bg move back through
-              the history list, inserting the  last  argument  of
+              the  history  list,  inserting the last argument of
               each line in turn.
 
    C\bCo\bom\bmm\bma\ban\bnd\bds\bs f\bfo\bor\br C\bCh\bha\ban\bng\bgi\bin\bng\bg T\bTe\bex\bxt\bt
-       d\bde\bel\ble\bet\bte\be-\b-c\bch\bha\bar\br (\b(C\bC-\b-d\bd)\b)
-              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 d\bde\bel\ble\bet\bte\be-\b-c\bch\bha\bar\br, then return E\bEO\bOF\bF.
-       b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-d\bde\bel\ble\bet\bte\be-\b-c\bch\bha\bar\br (\b(R\bRu\bub\bbo\bou\but\bt)\b)
-              Delete the character behind the cursor.  When given
-              a  numeric  argument,  save the deleted text on the
-              kill ring.
-       f\bfo\bor\brw\bwa\bar\brd\bd-\b-b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-d\bde\bel\ble\bet\bte\be-\b-c\bch\bha\bar\br
-              Delete the character under the cursor,  unless  the
-              cursor is at the end of the line, in which case the
 
 
 
-GNU Readline 4.2            2001 Mar 5                          9
+
+GNU Readline 4.2a         2001 October 9                        9
 
 
 
@@ -598,35 +598,49 @@ GNU Readline 4.2            2001 Mar 5                          9
 READLINE(3)                                           READLINE(3)
 
 
+       d\bde\bel\ble\bet\bte\be-\b-c\bch\bha\bar\br (\b(C\bC-\b-d\bd)\b)
+              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 d\bde\bel\ble\bet\bte\be-\b-c\bch\bha\bar\br, then return E\bEO\bOF\bF.
+       b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-d\bde\bel\ble\bet\bte\be-\b-c\bch\bha\bar\br (\b(R\bRu\bub\bbo\bou\but\bt)\b)
+              Delete the character behind the cursor.  When given
+              a numeric argument, save the deleted  text  on  the
+              kill ring.
+       f\bfo\bor\brw\bwa\bar\brd\bd-\b-b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-d\bde\bel\ble\bet\bte\be-\b-c\bch\bha\bar\br
+              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.
        q\bqu\buo\bot\bte\bed\bd-\b-i\bin\bns\bse\ber\brt\bt (\b(C\bC-\b-q\bq,\b, C\bC-\b-v\bv)\b)
-              Add the next character that you type  to  the  line
-              verbatim.   This  is  how to insert characters like
+              Add  the  next  character that you type to the line
+              verbatim.  This is how to  insert  characters  like
               C\bC-\b-q\bq, for example.
        t\bta\bab\bb-\b-i\bin\bns\bse\ber\brt\bt (\b(M\bM-\b-T\bTA\bAB\bB)\b)
               Insert a tab character.
        s\bse\bel\blf\bf-\b-i\bin\bns\bse\ber\brt\bt (\b(a\ba,\b, b\bb,\b, A\bA,\b, 1\b1,\b, !\b!,\b, .\b..\b..\b.)\b)
               Insert the character typed.
        t\btr\bra\ban\bns\bsp\bpo\bos\bse\be-\b-c\bch\bha\bar\brs\bs (\b(C\bC-\b-t\bt)\b)
-              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.  Nega-
+              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.   Nega-
               tive arguments have no effect.
        t\btr\bra\ban\bns\bsp\bpo\bos\bse\be-\b-w\bwo\bor\brd\bds\bs (\b(M\bM-\b-t\bt)\b)
-              Drag the word before  point  past  the  word  after
-              point, moving point over that word as well.
+              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.
        u\bup\bpc\bca\bas\bse\be-\b-w\bwo\bor\brd\bd (\b(M\bM-\b-u\bu)\b)
-              Uppercase  the current (or following) word.  With a
+              Uppercase the current (or following) word.  With  a
               negative argument, uppercase the previous word, but
               do not move point.
        d\bdo\bow\bwn\bnc\bca\bas\bse\be-\b-w\bwo\bor\brd\bd (\b(M\bM-\b-l\bl)\b)
-              Lowercase  the current (or following) word.  With a
+              Lowercase the current (or following) word.  With  a
               negative argument, lowercase the previous word, but
               do not move point.
        c\bca\bap\bpi\bit\bta\bal\bli\biz\bze\be-\b-w\bwo\bor\brd\bd (\b(M\bM-\b-c\bc)\b)
               Capitalize the current (or following) word.  With a
-              negative argument, capitalize  the  previous  word,
+              negative  argument,  capitalize  the previous word,
               but do not move point.
 
    K\bKi\bil\bll\bli\bin\bng\bg a\ban\bnd\bd Y\bYa\ban\bnk\bki\bin\bng\bg
@@ -635,27 +649,13 @@ READLINE(3)                                           READLINE(3)
        b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-k\bki\bil\bll\bl-\b-l\bli\bin\bne\be (\b(C\bC-\b-x\bx R\bRu\bub\bbo\bou\but\bt)\b)
               Kill backward to the beginning of the line.
        u\bun\bni\bix\bx-\b-l\bli\bin\bne\be-\b-d\bdi\bis\bsc\bca\bar\brd\bd (\b(C\bC-\b-u\bu)\b)
-              Kill  backward  from  point to the beginning of the
+              Kill backward from point to the  beginning  of  the
               line.  The killed text is saved on the kill-ring.
-       k\bki\bil\bll\bl-\b-w\bwh\bho\bol\ble\be-\b-l\bli\bin\bne\be
-              Kill all characters on the current line, no  matter
-              where point is.
-       k\bki\bil\bll\bl-\b-w\bwo\bor\brd\bd (\b(M\bM-\b-d\bd)\b)
-              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 f\bfo\bor\br-\b-
-              w\bwa\bar\brd\bd-\b-w\bwo\bor\brd\bd.
-       b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-k\bki\bil\bll\bl-\b-w\bwo\bor\brd\bd (\b(M\bM-\b-R\bRu\bub\bbo\bou\but\bt)\b)
-              Kill the word behind point.   Word  boundaries  are
-              the same as those used by b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-w\bwo\bor\brd\bd.
-       u\bun\bni\bix\bx-\b-w\bwo\bor\brd\bd-\b-r\bru\bub\bbo\bou\but\bt (\b(C\bC-\b-w\bw)\b)
-              Kill  the word behind point, using white space as a
-              word boundary.  The killed text  is  saved  on  the
-              kill-ring.
 
 
 
-GNU Readline 4.2            2001 Mar 5                         10
+
+GNU Readline 4.2a         2001 October 9                       10
 
 
 
@@ -664,11 +664,26 @@ GNU Readline 4.2            2001 Mar 5                         10
 READLINE(3)                                           READLINE(3)
 
 
+       k\bki\bil\bll\bl-\b-w\bwh\bho\bol\ble\be-\b-l\bli\bin\bne\be
+              Kill  all characters on the current line, no matter
+              where point is.
+       k\bki\bil\bll\bl-\b-w\bwo\bor\brd\bd (\b(M\bM-\b-d\bd)\b)
+              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  f\bfo\bor\br-\b-
+              w\bwa\bar\brd\bd-\b-w\bwo\bor\brd\bd.
+       b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-k\bki\bil\bll\bl-\b-w\bwo\bor\brd\bd (\b(M\bM-\b-R\bRu\bub\bbo\bou\but\bt)\b)
+              Kill  the  word  behind point.  Word boundaries are
+              the same as those used by b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-w\bwo\bor\brd\bd.
+       u\bun\bni\bix\bx-\b-w\bwo\bor\brd\bd-\b-r\bru\bub\bbo\bou\but\bt (\b(C\bC-\b-w\bw)\b)
+              Kill the word behind point, using white space as  a
+              word  boundary.   The  killed  text is saved on the
+              kill-ring.
        d\bde\bel\ble\bet\bte\be-\b-h\bho\bor\bri\biz\bzo\bon\bnt\bta\bal\bl-\b-s\bsp\bpa\bac\bce\be (\b(M\bM-\b-\\b\)\b)
               Delete all spaces and tabs around point.
        k\bki\bil\bll\bl-\b-r\bre\beg\bgi\bio\bon\bn
-              Kill  the  text  between  the point and _\bm_\ba_\br_\bk (saved
-              cursor position).  This text is referred to as  the
+              Kill the text between the  point  and  _\bm_\ba_\br_\b (saved
+              cursor  position).  This text is referred to as the
               _\br_\be_\bg_\bi_\bo_\bn.
        c\bco\bop\bpy\by-\b-r\bre\beg\bgi\bio\bon\bn-\b-a\bas\bs-\b-k\bki\bil\bll\bl
               Copy the text in the region to the kill buffer.
@@ -676,52 +691,37 @@ READLINE(3)                                           READLINE(3)
               Copy the word before point to the kill buffer.  The
               word boundaries are the same as b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-w\bwo\bor\brd\bd.
        c\bco\bop\bpy\by-\b-f\bfo\bor\brw\bwa\bar\brd\bd-\b-w\bwo\bor\brd\bd
-              Copy the word following point to the  kill  buffer.
+              Copy  the  word following point to the kill buffer.
               The word boundaries are the same as f\bfo\bor\brw\bwa\bar\brd\bd-\b-w\bwo\bor\brd\bd.
        y\bya\ban\bnk\bk (\b(C\bC-\b-y\by)\b)
-              Yank  the  top  of the kill ring into the buffer at
+              Yank the top of the kill ring into  the  buffer  at
               point.
        y\bya\ban\bnk\bk-\b-p\bpo\bop\bp (\b(M\bM-\b-y\by)\b)
-              Rotate the kill ring, and yank the new  top.   Only
+              Rotate  the  kill ring, and yank the new top.  Only
               works following y\bya\ban\bnk\bk or y\bya\ban\bnk\bk-\b-p\bpo\bop\bp.
 
    N\bNu\bum\bme\ber\bri\bic\bc A\bAr\brg\bgu\bum\bme\ben\bnt\bts\bs
        d\bdi\big\bgi\bit\bt-\b-a\bar\brg\bgu\bum\bme\ben\bnt\bt (\b(M\bM-\b-0\b0,\b, M\bM-\b-1\b1,\b, .\b..\b..\b.,\b, M\bM-\b--\b-)\b)
-              Add  this  digit to the argument already accumulat-
-              ing, or start a new argument.  M-- starts  a  nega-
+              Add this digit to the argument  already  accumulat-
+              ing,  or  start a new argument.  M-- starts a nega-
               tive argument.
        u\bun\bni\biv\bve\ber\brs\bsa\bal\bl-\b-a\bar\brg\bgu\bum\bme\ben\bnt\bt
-              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
+              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 u\bun\bni\biv\bve\ber\brs\bsa\bal\bl-\b-a\bar\brg\bgu\bum\bme\ben\bnt\bt again ends the
-              numeric argument, but is otherwise ignored.   As  a
-              special  case,  if this command is immediately fol-
-              lowed by a character that is  neither  a  digit  or
+              numeric  argument,  but is otherwise ignored.  As a
+              special case, if this command is  immediately  fol-
+              lowed  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  ini-
-              tially  one,  so  executing this function the first
-              time makes the argument count four, a  second  time
-              makes the argument count sixteen, and so on.
-
-   C\bCo\bom\bmp\bpl\ble\bet\bti\bin\bng\bg
-       c\bco\bom\bmp\bpl\ble\bet\bte\be (\b(T\bTA\bAB\bB)\b)
-              Attempt  to  perform  completion on the text before
-              point.  The actual completion performed is applica-
-              tion-specific.   B\bBa\bas\bsh\bh,  for instance, attempts com-
-              pletion treating the text as  a  variable  (if  the
-              text  begins  with $\b$), username (if the text begins
-              with ~\b~), hostname (if the text begins with  @\b@),  or
-              command  (including aliases and functions) in turn.
-              If none of these produces a match, filename comple-
-              tion  is attempted.  G\bGd\bdb\bb, on the other hand, allows
-              completion of program functions and variables,  and
-              only  attempts  filename  completion  under certain
+              is  multiplied by four.  The argument count is ini-
+              tially one, so executing this  function  the  first
+              time  makes  the argument count four, a second time
 
 
 
-GNU Readline 4.2            2001 Mar 5                         11
+GNU Readline 4.2a         2001 October 9                       11
 
 
 
@@ -730,64 +730,64 @@ GNU Readline 4.2            2001 Mar 5                         11
 READLINE(3)                                           READLINE(3)
 
 
+              makes the argument count sixteen, and so on.
+
+   C\bCo\bom\bmp\bpl\ble\bet\bti\bin\bng\bg
+       c\bco\bom\bmp\bpl\ble\bet\bte\be (\b(T\bTA\bAB\bB)\b)
+              Attempt to perform completion on  the  text  before
+              point.  The actual completion performed is applica-
+              tion-specific.  B\bBa\bas\bsh\bh, for instance,  attempts  com-
+              pletion  treating  the  text  as a variable (if the
+              text begins with $\b$), username (if the  text  begins
+              with  ~\b~),  hostname (if the text begins with @\b@), or
+              command (including aliases and functions) in  turn.
+              If none of these produces a match, filename comple-
+              tion is attempted.  G\bGd\bdb\bb, on the other hand,  allows
+              completion  of program functions and variables, and
+              only attempts  filename  completion  under  certain
               circumstances.
        p\bpo\bos\bss\bsi\bib\bbl\ble\be-\b-c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bns\bs (\b(M\bM-\b-?\b?)\b)
-              List the possible completions of  the  text  before
+              List  the  possible  completions of the text before
               point.
        i\bin\bns\bse\ber\brt\bt-\b-c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bns\bs (\b(M\bM-\b-*\b*)\b)
-              Insert  all  completions  of  the text before point
-              that would have been generated by  p\bpo\bos\bss\bsi\bib\bbl\ble\be-\b-c\bco\bom\bmp\bpl\ble\be-\b-
+              Insert all completions of  the  text  before  point
+              that  would have been generated by p\bpo\bos\bss\bsi\bib\bbl\ble\be-\b-c\bco\bom\bmp\bpl\ble\be-\b-
               t\bti\bio\bon\bns\bs.
        m\bme\ben\bnu\bu-\b-c\bco\bom\bmp\bpl\ble\bet\bte\be
-              Similar  to  c\bco\bom\bmp\bpl\ble\bet\bte\be,  but replaces the word to be
+              Similar to c\bco\bom\bmp\bpl\ble\bet\bte\be, but replaces the  word  to  be
               completed with a single match from the list of pos-
               sible completions.  Repeated execution of m\bme\ben\bnu\bu-\b-c\bco\bom\bm-\b-
-              p\bpl\ble\bet\bte\bsteps through the list  of  possible  comple-
+              p\bpl\ble\bet\bte\b steps  through  the list of possible comple-
               tions, inserting each match in turn.  At the end of
-              the list of completions, the bell is rung  (subject
-              to  the  setting  of  Bbell-style)\b) a\ban\bnd\bd t\bth\bhe\be o\bor\bri\big\bgi\bin\bna\bal\bl
-              t\bte\bex\bxt\bi\bis\bs r\bre\bes\bst\bto\bor\bre\bed\bd.\b.  A\bAn\bn a\bar\brg\bgu\bum\bme\ben\bnt\bt o\bof\bf _\bn m\bmo\bov\bve\bes\bs  _\b p\bpo\bos\bsi\bi-\b-
-              t\bti\bio\bon\bns\b f\bfo\bor\brw\bwa\bar\brd\bd  i\bin\bn  t\bth\bhe\be l\bli\bis\bst\bt o\bof\bf m\bma\bat\btc\bch\bhe\bes\bs;\b; a\ba n\bne\beg\bga\bat\bti\biv\bve\be
-              a\bar\brg\bgu\bum\bme\ben\bnt\bm\bma\bay\by b\bbe\be u\bus\bse\bed\bd t\bto\bo m\bmo\bov\bve\be b\bba\bac\bck\bkw\bwa\bar\brd\bd  t\bth\bhr\bro\bou\bug\bgh\b t\bth\bhe\be
+              the  list of completions, the bell is rung (subject
+              to the setting of  Bbell-style)\b)  a\ban\bnd\bd  t\bth\bhe\b o\bor\bri\big\bgi\bin\bna\bal\bl
+              t\bte\bex\bxt\b i\bis\bs  r\bre\bes\bst\bto\bor\bre\bed\bd.\b.  A\bAn\bn a\bar\brg\bgu\bum\bme\ben\bnt\bt o\bof\bf _\bn m\bmo\bov\bve\bes\bs _\bn p\bpo\bos\bsi\bi-\b-
+              t\bti\bio\bon\bns\bf\bfo\bor\brw\bwa\bar\brd\bd i\bin\bn t\bth\bhe\be l\bli\bis\bst\bt o\bof\bf  m\bma\bat\btc\bch\bhe\bes\bs;\b;  a\b n\bne\beg\bga\bat\bti\biv\bve\be
+              a\bar\brg\bgu\bum\bme\ben\bnt\b m\bma\bay\by  b\bbe\be u\bus\bse\bed\bd t\bto\bo m\bmo\bov\bve\be b\bba\bac\bck\bkw\bwa\bar\brd\bd t\bth\bhr\bro\bou\bug\bgh\bh t\bth\bhe\be
               l\bli\bis\bst\bt.\b.  T\bTh\bhi\bis\bs c\bco\bom\bmm\bma\ban\bnd\bd i\bis\bs i\bin\bnt\bte\ben\bnd\bde\bed\bd t\bto\bo b\bbe\be b\bbo\bou\bun\bnd\bd t\bto\bo T\bTA\bAB\bB,\b,
               b\bbu\but\bt i\bis\bs u\bun\bnb\bbo\bou\bun\bnd\bd b\bby\by d\bde\bef\bfa\bau\bul\blt\bt.\b.
        d\bde\bel\ble\bet\bte\be-\b-c\bch\bha\bar\br-\b-o\bor\br-\b-l\bli\bis\bst\bt
-              Deletes the character under the cursor  if  not  at
-              the  beginning  or  end  of  the line (like d\bde\bel\ble\bet\bte\be-\b-
-              c\bch\bha\bar\br).  If at the end of the line, behaves  identi-
+              Deletes  the  character  under the cursor if not at
+              the beginning or end  of  the  line  (like  d\bde\bel\ble\bet\bte\be-\b-
+              c\bch\bha\bar\br).   If at the end of the line, behaves identi-
               cally to p\bpo\bos\bss\bsi\bib\bbl\ble\be-\b-c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bns\bs.
 
    K\bKe\bey\byb\bbo\boa\bar\brd\bd M\bMa\bac\bcr\bro\bos\bs
        s\bst\bta\bar\brt\bt-\b-k\bkb\bbd\bd-\b-m\bma\bac\bcr\bro\bo (\b(C\bC-\b-x\bx (\b()\b)
-              Begin  saving the characters typed into the current
+              Begin saving the characters typed into the  current
               keyboard macro.
        e\ben\bnd\bd-\b-k\bkb\bbd\bd-\b-m\bma\bac\bcr\bro\bo (\b(C\bC-\b-x\bx )\b))\b)
-              Stop saving the characters typed into  the  current
+              Stop  saving  the characters typed into the current
               keyboard macro and store the definition.
        c\bca\bal\bll\bl-\b-l\bla\bas\bst\bt-\b-k\bkb\bbd\bd-\b-m\bma\bac\bcr\bro\bo (\b(C\bC-\b-x\bx e\be)\b)
               Re-execute the last keyboard macro defined, by mak-
-              ing the characters in the macro appear as if  typed
+              ing  the characters in the macro appear as if typed
               at the keyboard.
 
-   M\bMi\bis\bsc\bce\bel\bll\bla\ban\bne\beo\bou\bus\bs
-       r\bre\be-\b-r\bre\bea\bad\bd-\b-i\bin\bni\bit\bt-\b-f\bfi\bil\ble\be (\b(C\bC-\b-x\bx C\bC-\b-r\br)\b)
-              Read  in  the  contents  of  the  _\bi_\bn_\bp_\bu_\bt_\br_\bc file, and
-              incorporate any bindings  or  variable  assignments
-              found there.
-       a\bab\bbo\bor\brt\bt (\b(C\bC-\b-g\bg)\b)
-              Abort the current editing command and ring the ter-
-              minal's   bell   (subject   to   the   setting   of
-              b\bbe\bel\bll\bl-\b-s\bst\bty\byl\ble\be).
-       d\bdo\bo-\b-u\bup\bpp\bpe\ber\brc\bca\bas\bse\be-\b-v\bve\ber\brs\bsi\bio\bon\bn (\b(M\bM-\b-a\ba,\b, M\bM-\b-b\bb,\b, M\bM-\b-_\bx,\b, .\b..\b..\b.)\b)
-              If  the  metafied character _\bx is lowercase, run the
-              command that is bound to the  corresponding  upper-
-              case character.
-       p\bpr\bre\bef\bfi\bix\bx-\b-m\bme\bet\bta\ba (\b(E\bES\bSC\bC)\b)
-              Metafy   the   next  character  typed.   E\bES\bSC\bC  f\bf  is
 
 
 
-GNU Readline 4.2            2001 Mar 5                         12
+GNU Readline 4.2a         2001 October 9                       12
 
 
 
@@ -796,64 +796,64 @@ GNU Readline 4.2            2001 Mar 5                         12
 READLINE(3)                                           READLINE(3)
 
 
-              equivalent to M\bMe\bet\bta\ba-\b-f\bf.
+   M\bMi\bis\bsc\bce\bel\bll\bla\ban\bne\beo\bou\bus\bs
+       r\bre\be-\b-r\bre\bea\bad\bd-\b-i\bin\bni\bit\bt-\b-f\bfi\bil\ble\be (\b(C\bC-\b-x\bx C\bC-\b-r\br)\b)
+              Read in the  contents  of  the  _\bi_\bn_\bp_\bu_\bt_\br_\bc  file,  and
+              incorporate  any  bindings  or variable assignments
+              found there.
+       a\bab\bbo\bor\brt\bt (\b(C\bC-\b-g\bg)\b)
+              Abort the current editing command and ring the ter-
+              minal's   bell   (subject   to   the   setting   of
+              b\bbe\bel\bll\bl-\b-s\bst\bty\byl\ble\be).
+       d\bdo\bo-\b-u\bup\bpp\bpe\ber\brc\bca\bas\bse\be-\b-v\bve\ber\brs\bsi\bio\bon\bn (\b(M\bM-\b-a\ba,\b, M\bM-\b-b\bb,\b, M\bM-\b-_\bx,\b, .\b..\b..\b.)\b)
+              If the metafied character _\bx is lowercase,  run  the
+              command  that  is bound to the corresponding upper-
+              case character.
+       p\bpr\bre\bef\bfi\bix\bx-\b-m\bme\bet\bta\ba (\b(E\bES\bSC\bC)\b)
+              Metafy the next character typed.  E\bES\bSC\bC f\bf is  equiva-
+              lent to M\bMe\bet\bta\ba-\b-f\bf.
        u\bun\bnd\bdo\bo (\b(C\bC-\b-_\b_,\b, C\bC-\b-x\bx C\bC-\b-u\bu)\b)
-              Incremental undo, separately  remembered  for  each
+              Incremental  undo,  separately  remembered for each
               line.
        r\bre\bev\bve\ber\brt\bt-\b-l\bli\bin\bne\be (\b(M\bM-\b-r\br)\b)
-              Undo  all  changes made to this line.  This is like
-              executing the u\bun\bnd\bdo\bo command enough times  to  return
+              Undo all changes made to this line.  This  is  like
+              executing  the  u\bun\bnd\bdo\bo command enough times to return
               the line to its initial state.
        t\bti\bil\bld\bde\be-\b-e\bex\bxp\bpa\ban\bnd\bd (\b(M\bM-\b-&\b&)\b)
               Perform tilde expansion on the current word.
        s\bse\bet\bt-\b-m\bma\bar\brk\bk (\b(C\bC-\b-@\b@,\b, M\bM-\b-<\b<s\bsp\bpa\bac\bce\be>\b>)\b)
-              Set  the  mark to the point.  If a numeric argument
+              Set the mark to the point.  If a  numeric  argument
               is supplied, the mark is set to that position.
        e\bex\bxc\bch\bha\ban\bng\bge\be-\b-p\bpo\boi\bin\bnt\bt-\b-a\ban\bnd\bd-\b-m\bma\bar\brk\bk (\b(C\bC-\b-x\bx C\bC-\b-x\bx)\b)
-              Swap the point with the mark.  The  current  cursor
-              position  is set to the saved position, and the old
+              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.
        c\bch\bha\bar\bra\bac\bct\bte\ber\br-\b-s\bse\bea\bar\brc\bch\bh (\b(C\bC-\b-]\b])\b)
-              A character is read and point is moved to the  next
-              occurrence  of  that  character.   A negative count
+              A  character is read and point is moved to the next
+              occurrence of that  character.   A  negative  count
               searches for previous occurrences.
        c\bch\bha\bar\bra\bac\bct\bte\ber\br-\b-s\bse\bea\bar\brc\bch\bh-\b-b\bba\bac\bck\bkw\bwa\bar\brd\bd (\b(M\bM-\b-C\bC-\b-]\b])\b)
-              A character is read and point is moved to the  pre-
-              vious  occurrence  of  that  character.  A negative
+              A  character is read and point is moved to the pre-
+              vious occurrence of  that  character.   A  negative
               count searches for subsequent occurrences.
        i\bin\bns\bse\ber\brt\bt-\b-c\bco\bom\bmm\bme\ben\bnt\bt (\b(M\bM-\b-#\b#)\b)
               The value of the readline c\bco\bom\bmm\bme\ben\bnt\bt-\b-b\bbe\beg\bgi\bin\bn variable is
-              inserted  at the beginning of the current line, and
-              the line is accepted  as  if  a  newline  had  been
-              typed.   The  default  value of c\bco\bom\bmm\bme\ben\bnt\bt-\b-b\bbe\beg\bgi\bin\bn makes
+              inserted at the beginning of the current line,  and
+              the  line  is  accepted  as  if  a newline had been
+              typed.  The default value  of  c\bco\bom\bmm\bme\ben\bnt\bt-\b-b\bbe\beg\bgi\bin\b makes
               the current line a shell comment.
        d\bdu\bum\bmp\bp-\b-f\bfu\bun\bnc\bct\bti\bio\bon\bns\bs
-              Print all of the functions and their  key  bindings
-              to  the readline output stream.  If a numeric argu-
+              Print  all  of the functions and their key bindings
+              to the readline output stream.  If a numeric  argu-
               ment is supplied, the output is formatted in such a
               way that it can be made part of an _\bi_\bn_\bp_\bu_\bt_\br_\bc file.
        d\bdu\bum\bmp\bp-\b-v\bva\bar\bri\bia\bab\bbl\ble\bes\bs
-              Print  all of the settable variables and their val-
-              ues 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  _\bi_\bn_\bp_\bu_\bt_\br_\bc
-              file.
-       d\bdu\bum\bmp\bp-\b-m\bma\bac\bcr\bro\bos\bs
-              Print  all  of  the readline key sequences bound to
-              macros and the strings they ouput.   If  a  numeric
-              argument  is  supplied,  the output is formatted in
-              such a way that it can be made part of  an  _\bi_\bn_\bp_\bu_\bt_\br_\bc
-              file.
-       e\bem\bma\bac\bcs\bs-\b-e\bed\bdi\bit\bti\bin\bng\bg-\b-m\bmo\bod\bde\be (\b(C\bC-\b-e\be)\b)
-              When  in  v\bvi\bi  editing mode, this causes a switch to
-              e\bem\bma\bac\bcs\bs editing mode.
-       v\bvi\bi-\b-e\bed\bdi\bit\bti\bin\bng\bg-\b-m\bmo\bod\bde\be (\b(M\bM-\b-C\bC-\b-j\bj)\b)
-              When in e\bem\bma\bac\bcs\bs editing mode, this causes a switch to
-              v\bvi\bi editing mode.
+              Print all of the settable variables and their  val-
+              ues  to  the  readline output stream.  If a numeric
 
 
 
-GNU Readline 4.2            2001 Mar 5                         13
+GNU Readline 4.2a         2001 October 9                       13
 
 
 
@@ -862,21 +862,37 @@ GNU Readline 4.2            2001 Mar 5                         13
 READLINE(3)                                           READLINE(3)
 
 
+              argument is supplied, the output  is  formatted  in
+              such  a  way that it can be made part of an _\bi_\bn_\bp_\bu_\bt_\br_\bc
+              file.
+       d\bdu\bum\bmp\bp-\b-m\bma\bac\bcr\bro\bos\bs
+              Print all of the readline key  sequences  bound  to
+              macros  and  the  strings they ouput.  If a numeric
+              argument is supplied, the output  is  formatted  in
+              such  a  way that it can be made part of an _\bi_\bn_\bp_\bu_\bt_\br_\bc
+              file.
+       e\bem\bma\bac\bcs\bs-\b-e\bed\bdi\bit\bti\bin\bng\bg-\b-m\bmo\bod\bde\be (\b(C\bC-\b-e\be)\b)
+              When in v\bvi\bi editing mode, this causes  a  switch  to
+              e\bem\bma\bac\bcs\bs editing mode.
+       v\bvi\bi-\b-e\bed\bdi\bit\bti\bin\bng\bg-\b-m\bmo\bod\bde\be (\b(M\bM-\b-C\bC-\b-j\bj)\b)
+              When in e\bem\bma\bac\bcs\bs editing mode, this causes a switch to
+              v\bvi\bi editing mode.
+
 D\bDE\bEF\bFA\bAU\bUL\bLT\bT K\bKE\bEY\bY B\bBI\bIN\bND\bDI\bIN\bNG\bGS\bS
-       The  following is a list of the default emacs and vi bind-
-       ings.  Characters with the eighth bit set are  written  as
+       The following is a list of the default emacs and vi  bind-
+       ings.   Characters  with the eighth bit set are written as
        M-<character>, and are referred to as _\bm_\be_\bt_\ba_\bf_\bi_\be_\bd characters.
-       The printable ASCII characters not mentioned in  the  list
-       of  emacs  standard  bindings are bound to the s\bse\bel\blf\bf-\b-i\bin\bns\bse\ber\brt\bt
-       function, which just inserts the given character into  the
-       input  line.   In  vi  insertion  mode, all characters not
-       specifically mentioned are bound to s\bse\bel\blf\bf-\b-i\bin\bns\bse\ber\brt\bt.   Charac-
-       ters  assigned to signal generation by _\bs_\bt_\bt_\by(1) or the ter-
-       minal 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  remain-
-       ing  characters are unbound, which causes readline to ring
-       the bell (subject to the setting of the  b\bbe\bel\bll\bl-\b-s\bst\bty\byl\ble\b vari-
+       The  printable  ASCII characters not mentioned in the list
+       of emacs standard bindings are bound  to  the  s\bse\bel\blf\bf-\b-i\bin\bns\bse\ber\brt\bt
+       function,  which just inserts the given character into the
+       input line.  In vi  insertion  mode,  all  characters  not
+       specifically  mentioned are bound to s\bse\bel\blf\bf-\b-i\bin\bns\bse\ber\brt\bt.  Charac-
+       ters assigned to signal generation by _\bs_\bt_\bt_\by(1) or the  ter-
+       minal  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 remain-
+       ing characters are unbound, which causes readline to  ring
+       the  bell  (subject to the setting of the b\bbe\bel\bll\bl-\b-s\bst\bty\byl\ble\be vari-
        able).
 
    E\bEm\bma\bac\bcs\bs M\bMo\bod\bde\be
@@ -900,6 +916,18 @@ D\bDE\bEF\bFA\bAU\bUL\bLT\bT K\bKE\bEY\bY B\bBI\bIN\bND\bDI\bIN\bNG\bGS\bS
              "C-Q"  quoted-insert
              "C-R"  reverse-search-history
              "C-S"  forward-search-history
+
+
+
+GNU Readline 4.2a         2001 October 9                       14
+
+
+
+
+
+READLINE(3)                                           READLINE(3)
+
+
              "C-T"  transpose-chars
              "C-U"  unix-line-discard
              "C-V"  quoted-insert
@@ -916,18 +944,6 @@ D\bDE\bEF\bFA\bAU\bUL\bLT\bT K\bKE\bEY\bY B\bBI\bIN\bND\bDI\bIN\bNG\bGS\bS
 
              "M-C-G"  abort
              "M-C-H"  backward-kill-word
-
-
-
-GNU Readline 4.2            2001 Mar 5                         14
-
-
-
-
-
-READLINE(3)                                           READLINE(3)
-
-
              "M-C-I"  tab-insert
              "M-C-J"  vi-editing-mode
              "M-C-M"  vi-editing-mode
@@ -966,6 +982,18 @@ READLINE(3)                                           READLINE(3)
              "M-T"  transpose-words
              "M-U"  upcase-word
              "M-Y"  yank-pop
+
+
+
+GNU Readline 4.2a         2001 October 9                       15
+
+
+
+
+
+READLINE(3)                                           READLINE(3)
+
+
              "M-\"  delete-horizontal-space
              "M-~"  tilde-expand
              "M-C-?"  backward-kill-word
@@ -983,17 +1011,6 @@ READLINE(3)                                           READLINE(3)
              "C-XC-?"  backward-kill-line
 
 
-
-
-GNU Readline 4.2            2001 Mar 5                         15
-
-
-
-
-
-READLINE(3)                                           READLINE(3)
-
-
    V\bVI\bI M\bMo\bod\bde\be b\bbi\bin\bnd\bdi\bin\bng\bgs\bs
              VI Insert Mode functions
 
@@ -1031,6 +1048,18 @@ READLINE(3)                                           READLINE(3)
              "C-S"  forward-search-history
              "C-T"  transpose-chars
              "C-U"  unix-line-discard
+
+
+
+GNU Readline 4.2a         2001 October 9                       16
+
+
+
+
+
+READLINE(3)                                           READLINE(3)
+
+
              "C-V"  quoted-insert
              "C-W"  unix-word-rubout
              "C-Y"  yank
@@ -1048,18 +1077,6 @@ READLINE(3)                                           READLINE(3)
              "/"  vi-search
              "0"  beginning-of-line
              "1" to "9"  vi-arg-digit
-
-
-
-GNU Readline 4.2            2001 Mar 5                         16
-
-
-
-
-
-READLINE(3)                                           READLINE(3)
-
-
              ";"  vi-char-search
              "="  vi-complete
              "?"  vi-search
@@ -1097,6 +1114,18 @@ READLINE(3)                                           READLINE(3)
              "l"  forward-char
              "m"  vi-set-mark
              "n"  vi-search-again
+
+
+
+GNU Readline 4.2a         2001 October 9                       17
+
+
+
+
+
+READLINE(3)                                           READLINE(3)
+
+
              "p"  vi-put
              "r"  vi-change-char
              "s"  vi-subst
@@ -1113,19 +1142,6 @@ S\bSE\bEE\bE A\bAL\bLS\bSO\bO
        _\bT_\bh_\be _\bG_\bn_\bu _\bH_\bi_\bs_\bt_\bo_\br_\by _\bL_\bi_\bb_\br_\ba_\br_\by, Brian Fox and Chet Ramey
        _\bb_\ba_\bs_\bh(1)
 
-
-
-
-
-GNU Readline 4.2            2001 Mar 5                         17
-
-
-
-
-
-READLINE(3)                                           READLINE(3)
-
-
 F\bFI\bIL\bLE\bES\bS
        _\b~_\b/_\b._\bi_\bn_\bp_\bu_\bt_\br_\bc
               Individual r\bre\bea\bad\bdl\bli\bin\bne\be initialization file
@@ -1138,19 +1154,19 @@ A\bAU\bUT\bTH\bHO\bOR\bRS\bS
        chet@ins.CWRU.Edu
 
 B\bBU\bUG\bG R\bRE\bEP\bPO\bOR\bRT\bTS\bS
-       If  you find a bug in r\bre\bea\bad\bdl\bli\bin\bne\be,\b, 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 r\bre\bea\bad\bdl\bli\bin\bne\be
+       If you find a bug in r\bre\bea\bad\bdl\bli\bin\bne\be,\b, 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  r\bre\bea\bad\bdl\bli\bin\bne\be
        library that you have.
 
-       Once you have determined that a bug actually exists,  mail
-       a  bug report to _\bb_\bu_\bg_\b-_\br_\be_\ba_\bd_\bl_\bi_\bn_\be@_\bg_\bn_\bu_\b._\bo_\br_\bg.  If you have a fix,
-       you are welcome to mail that  as  well!   Suggestions  and
-       `philosophical'  bug  reports  may  be mailed to _\bb_\bu_\bg_\b-_\br_\be_\ba_\bd_\b-
+       Once  you have determined that a bug actually exists, mail
+       a bug report to _\bb_\bu_\bg_\b-_\br_\be_\ba_\bd_\bl_\bi_\bn_\be@_\bg_\bn_\bu_\b._\bo_\br_\bg.  If you have a  fix,
+       you  are  welcome  to  mail that as well!  Suggestions and
+       `philosophical' bug reports may  be  mailed  to  _\bb_\bu_\bg_\b-_\br_\be_\ba_\bd_\b-
        _\bl_\bi_\bn_\be@_\bg_\bn_\bu_\b._\bo_\br_\bg   or   posted   to   the   Usenet   newsgroup
        g\bgn\bnu\bu.\b.b\bba\bas\bsh\bh.\b.b\bbu\bug\bg.
 
-       Comments  and  bug  reports  concerning  this  manual page
+       Comments and  bug  reports  concerning  this  manual  page
        should be directed to _\bc_\bh_\be_\bt_\b@_\bi_\bn_\bs_\b._\bC_\bW_\bR_\bU_\b._\bE_\bd_\bu.
 
 B\bBU\bUG\bGS\bS
@@ -1167,22 +1183,6 @@ B\bBU\bUG\bGS\bS
 
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-GNU Readline 4.2            2001 Mar 5                         18
+GNU Readline 4.2a         2001 October 9                       18
 
 
index 037b1bb1c2915234d269a2cf69a081e580b6150e..41cc20ccda1c5c7c0e717673407c385e57a9f072 100644 (file)
@@ -6,9 +6,9 @@
 .\"    Case Western Reserve University
 .\"    chet@ins.CWRU.Edu
 .\"
-.\"    Last Change: Mon Mar  5 09:58:38 EST 2001
+.\"    Last Change: Tue Oct  9 15:06:03 EDT 2001
 .\"
-.TH READLINE 3 "2001 Mar 5" "GNU Readline 4.2"
+.TH READLINE 3 "2001 October 9" "GNU Readline 4.2a"
 .\"
 .\" File Name macro.  This used to be `.PN', for Path Name,
 .\" but Sun doesn't seem to like that very much.
@@ -282,12 +282,12 @@ horizontal tab
 vertical tab
 .TP
 .B \e\fInnn\fP
-the character whose ASCII code is the octal value \fInnn\fP
+the eight-bit character whose value is the octal value \fInnn\fP
 (one to three digits)
 .TP
-.B \ex\fInnn\fP
-the character whose ASCII code is the hexadecimal value \fInnn\fP
-(one to three digits)
+.B \ex\fIHH\fP
+the eight-bit character whose value is the hexadecimal value \fIHH\fP
+(one or two hex digits)
 .RE
 .PD
 .PP
@@ -391,6 +391,11 @@ arrow keys.
 If set to \fBon\fP, tilde expansion is performed when readline
 attempts word completion.
 .TP
+.B history-preserve-point     
+If set to \fBon\fP, the history code attempts to place point at the 
+same location on each history line retrived with \fBprevious-history\fP 
+or \fBnext-history\fP.
+.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
@@ -429,6 +434,12 @@ appended.
 If set to \fBOn\fP, history lines that have been modified are displayed
 with a preceding asterisk (\fB*\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, unless the leading `.' is     
+supplied by the user in the filename to be completed.
+.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
@@ -710,6 +721,8 @@ Negative arguments have no effect.
 .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,
index 516c43c1006d96018d4441ad1e2aae012ccda462..6c4cb4fb9bc53c52a196f3649b9c1721d592f9e2 100644 (file)
Binary files a/doc/readline.dvi and b/doc/readline.dvi differ
index 8822671c734deb669edc0f825799b75b881d80bb..82a5a7c1cc59e80e1443f24b4b8197efe5c9a445 100644 (file)
 <HTML>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!-- Created on October, 9  2001 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>
-<!-- This HTML file has been created by texi2html 1.52
-     from /usr/homes/chet/src/bash/readline-src/doc/rlman.texinfo on 16 April 2001 -->
+<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">
 
-<TITLE>GNU Readline Library</TITLE>
 </HEAD>
-<BODY>
-<H1>GNU Readline Library</H1>
-<H2>Edition 4.2, for <CODE>Readline Library</CODE> Version 4.2.</H2>
-<H2>Apr 2001</H2>
-<ADDRESS>Brian Fox, Free Software Foundation</ADDRESS>
-<ADDRESS>Chet Ramey, Case Western Reserve University</ADDRESS>
-<P>
-<P><HR><P>
-<H1>Table of Contents</H1>
-<UL>
-<LI><A NAME="TOC1" HREF="readline.html#SEC1">Command Line Editing</A>
-<UL>
-<LI><A NAME="TOC2" HREF="readline.html#SEC2">Introduction to Line Editing</A>
-<LI><A NAME="TOC3" HREF="readline.html#SEC3">Readline Interaction</A>
-<UL>
-<LI><A NAME="TOC4" HREF="readline.html#SEC4">Readline Bare Essentials</A>
-<LI><A NAME="TOC5" HREF="readline.html#SEC5">Readline Movement Commands</A>
-<LI><A NAME="TOC6" HREF="readline.html#SEC6">Readline Killing Commands</A>
-<LI><A NAME="TOC7" HREF="readline.html#SEC7">Readline Arguments</A>
-<LI><A NAME="TOC8" HREF="readline.html#SEC8">Searching for Commands in the History</A>
-</UL>
-<LI><A NAME="TOC9" HREF="readline.html#SEC9">Readline Init File</A>
-<UL>
-<LI><A NAME="TOC10" HREF="readline.html#SEC10">Readline Init File Syntax</A>
-<LI><A NAME="TOC11" HREF="readline.html#SEC11">Conditional Init Constructs</A>
-<LI><A NAME="TOC12" HREF="readline.html#SEC12">Sample Init File</A>
-</UL>
-<LI><A NAME="TOC13" HREF="readline.html#SEC13">Bindable Readline Commands</A>
-<UL>
-<LI><A NAME="TOC14" HREF="readline.html#SEC14">Commands For Moving</A>
-<LI><A NAME="TOC15" HREF="readline.html#SEC15">Commands For Manipulating The History</A>
-<LI><A NAME="TOC16" HREF="readline.html#SEC16">Commands For Changing Text</A>
-<LI><A NAME="TOC17" HREF="readline.html#SEC17">Killing And Yanking</A>
-<LI><A NAME="TOC18" HREF="readline.html#SEC18">Specifying Numeric Arguments</A>
-<LI><A NAME="TOC19" HREF="readline.html#SEC19">Letting Readline Type For You</A>
-<LI><A NAME="TOC20" HREF="readline.html#SEC20">Keyboard Macros</A>
-<LI><A NAME="TOC21" HREF="readline.html#SEC21">Some Miscellaneous Commands</A>
-</UL>
-<LI><A NAME="TOC22" HREF="readline.html#SEC22">Readline vi Mode</A>
-</UL>
-<LI><A NAME="TOC23" HREF="readline.html#SEC23">Programming with GNU Readline</A>
-<UL>
-<LI><A NAME="TOC24" HREF="readline.html#SEC24">Basic Behavior</A>
-<LI><A NAME="TOC25" HREF="readline.html#SEC25">Custom Functions</A>
-<UL>
-<LI><A NAME="TOC26" HREF="readline.html#SEC26">Readline Typedefs</A>
-<LI><A NAME="TOC27" HREF="readline.html#SEC27">Writing a New Function</A>
-</UL>
-<LI><A NAME="TOC28" HREF="readline.html#SEC28">Readline Variables</A>
-<LI><A NAME="TOC29" HREF="readline.html#SEC29">Readline Convenience Functions</A>
-<UL>
-<LI><A NAME="TOC30" HREF="readline.html#SEC30">Naming a Function</A>
-<LI><A NAME="TOC31" HREF="readline.html#SEC31">Selecting a Keymap</A>
-<LI><A NAME="TOC32" HREF="readline.html#SEC32">Binding Keys</A>
-<LI><A NAME="TOC33" HREF="readline.html#SEC33">Associating Function Names and Bindings</A>
-<LI><A NAME="TOC34" HREF="readline.html#SEC34">Allowing Undoing</A>
-<LI><A NAME="TOC35" HREF="readline.html#SEC35">Redisplay</A>
-<LI><A NAME="TOC36" HREF="readline.html#SEC36">Modifying Text</A>
-<LI><A NAME="TOC37" HREF="readline.html#SEC37">Character Input</A>
-<LI><A NAME="TOC38" HREF="readline.html#SEC38">Terminal Management</A>
-<LI><A NAME="TOC39" HREF="readline.html#SEC39">Utility Functions</A>
-<LI><A NAME="TOC40" HREF="readline.html#SEC40">Miscellaneous Functions</A>
-<LI><A NAME="TOC41" HREF="readline.html#SEC41">Alternate Interface</A>
-<LI><A NAME="TOC42" HREF="readline.html#SEC42">A Readline Example</A>
-</UL>
-<LI><A NAME="TOC43" HREF="readline.html#SEC43">Readline Signal Handling</A>
-<LI><A NAME="TOC44" HREF="readline.html#SEC44">Custom Completers</A>
-<UL>
-<LI><A NAME="TOC45" HREF="readline.html#SEC45">How Completing Works</A>
-<LI><A NAME="TOC46" HREF="readline.html#SEC46">Completion Functions</A>
-<LI><A NAME="TOC47" HREF="readline.html#SEC47">Completion Variables</A>
-<LI><A NAME="TOC48" HREF="readline.html#SEC48">A Short Completion Example</A>
-</UL>
-</UL>
-<LI><A NAME="TOC49" HREF="readline.html#SEC49">Concept Index</A>
-<LI><A NAME="TOC50" HREF="readline.html#SEC50">Function and Variable Index</A>
-</UL>
-<P><HR><P>
 
-<P>
+<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#SEC49">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 that need
 to provide a command line interface.
-
-</P>
-<P>
-Published by the Free Software Foundation <BR>
-59 Temple Place, Suite 330, <BR>
-Boston, MA 02111 USA
-
-</P>
-<P>
-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.
-
-</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 Free Software Foundation.
-
-</P>
+</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#SEC49">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#SEC50">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#SEC49">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>
-Copyright (C) 1988-2001 Free Software Foundation, Inc.
-
-</P>
-
 
-
-<H1><A NAME="SEC1" HREF="readline.html#TOC1">Command Line Editing</A></H1>
-
-<P>
 This chapter describes the basic features of the GNU
 command line editing interface.
-
-</P>
-
-<UL>
-<LI><A HREF="readline.html#SEC2">Introduction and Notation</A>: Notation used in this text.
-<LI><A HREF="readline.html#SEC3">Readline Interaction</A>: The minimum set of commands for editing a line.
-<LI><A HREF="readline.html#SEC9">Readline Init File</A>: Customizing Readline from a user's view.
-<LI><A HREF="readline.html#SEC13">Bindable Readline Commands</A>: A description of most of the Readline commands
-                               available for binding
-<LI><A HREF="readline.html#SEC22">Readline vi Mode</A>: A short description of how to make Readline
-                               behave like the vi editor.
-</UL>
-
-
-
-<H2><A NAME="SEC2" HREF="readline.html#TOC2">Introduction to Line Editing</A></H2>
-
+</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#SEC49">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>
 
-</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>
 
-</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.
@@ -167,39 +116,46 @@ 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>
 
-</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>
 
-</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>
 
-</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">Readline Init File</A>).
+(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>
-
-
-<H2><A NAME="SEC3" HREF="readline.html#TOC3">Readline Interaction</A></H2>
+</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#SEC49">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>
-<A NAME="IDX1"></A>
 
-</P>
-<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
@@ -210,209 +166,234 @@ 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>
-
-<UL>
-<LI><A HREF="readline.html#SEC4">Readline Bare Essentials</A>: The least you need to know about Readline.
-<LI><A HREF="readline.html#SEC5">Readline Movement Commands</A>: Moving about the input line.
-<LI><A HREF="readline.html#SEC6">Readline Killing Commands</A>: How to delete text, and how to get it back!
-<LI><A HREF="readline.html#SEC7">Readline Arguments</A>: Giving numeric arguments to commands.
-<LI><A HREF="readline.html#SEC8">Searching</A>: Searching through previous lines.
-</UL>
-
-
-
-<H3><A NAME="SEC4" HREF="readline.html#TOC4">Readline Bare Essentials</A></H3>
+</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#SEC49">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>
-<A NAME="IDX2"></A>
-<A NAME="IDX3"></A>
-<A NAME="IDX4"></A>
 
-</P>
-<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>
 
-</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>
 
-</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>
 
-</P>
 <DL COMPACT>
-
 <DT><KBD>C-b</KBD>
-<DD>
-Move back one character.
+<DD>Move back one character.
 <DT><KBD>C-f</KBD>
-<DD>
-Move forward one character.
+<DD>Move forward one character.
 <DT><KBD>DEL</KBD> or <KBD>Backspace</KBD>
-<DD>
-Delete the character to the left of the cursor.
+<DD>Delete the character to the left of the cursor.
 <DT><KBD>C-d</KBD>
-<DD>
-Delete the character underneath the cursor.
+<DD>Delete the character underneath the cursor.
 <DT>Printing characters
-<DD>
-Insert the character into the line at the cursor.
+<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
+<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>
-
-
-<H3><A NAME="SEC5" HREF="readline.html#TOC5">Readline Movement Commands</A></H3>
-
+</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#SEC49">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>
 
-</P>
 <DL COMPACT>
-
 <DT><KBD>C-a</KBD>
-<DD>
-Move to the start of the line.
+<DD>Move to the start of the line.
 <DT><KBD>C-e</KBD>
-<DD>
-Move to the end of the line.
+<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.
+<DD>Move forward a word, where a word is composed of letters and digits.
 <DT><KBD>M-b</KBD>
-<DD>
-Move backward a word.
+<DD>Move backward a word.
 <DT><KBD>C-l</KBD>
-<DD>
-Clear the screen, reprinting the current line at the top.
+<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>
-
-
-<H3><A NAME="SEC6" HREF="readline.html#TOC6">Readline Killing Commands</A></H3>
-
+</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#SEC49">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="IDX5"></A>
-<A NAME="IDX6"></A>
 
-</P>
-<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>
 
-</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>
 
-</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="IDX7"></A>
+<A NAME="IDX3"></A>
+</P><P>
 
-</P>
-<P>
 Here is the list of commands for killing text.
+</P><P>
 
-</P>
 <DL COMPACT>
-
 <DT><KBD>C-k</KBD>
-<DD>
-Kill the text from the current cursor position to the end of the line.
+<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
+<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 previous word, or, if between
+<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
+<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>
 
-</P>
 <DL COMPACT>
-
 <DT><KBD>C-y</KBD>
-<DD>
-Yank the most recently killed text back into the buffer at the cursor.
+<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
+<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>
 
-
-
-<H3><A NAME="SEC7" HREF="readline.html#TOC7">Readline Arguments</A></H3>
-
+<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#SEC49">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>
 
-</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
@@ -420,19 +401,31 @@ 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>
-
-
-<H3><A NAME="SEC8" HREF="readline.html#TOC8">Searching for Commands in the History</A></H3>
-
+</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#SEC49">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>
 
-</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
@@ -448,9 +441,8 @@ If that variable has not been assigned a value, the <KBD>ESC</KBD> and
 <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>
 
-</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
@@ -461,121 +453,149 @@ 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>
 
-</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>
-
-
-<H2><A NAME="SEC9" HREF="readline.html#TOC9">Readline Init File</A></H2>
+</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#SEC49">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>
-<A NAME="IDX8"></A>
 
-</P>
-<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 @env{INPUTRC}.  If
+file is taken from the value of the environment variable <CODE>INPUTRC</CODE>.  If
 that variable is unset, the default is <TT>`~/.inputrc'</TT>.
+</P><P>
 
-</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>
 
-</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>
-
-<UL>
-<LI><A HREF="readline.html#SEC10">Readline Init File Syntax</A>: Syntax for the commands in the inputrc file.
-
-<LI><A HREF="readline.html#SEC11">Conditional Init Constructs</A>: Conditional key bindings in the inputrc file.
-
-<LI><A HREF="readline.html#SEC12">Sample Init File</A>: An example inputrc file.
-</UL>
-
-
-
-<H3><A NAME="SEC10" HREF="readline.html#TOC10">Readline Init File Syntax</A></H3>
-
+</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#SEC49">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">Conditional Init Constructs</A>).  Other lines
+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>
 
-</P>
 <DL COMPACT>
-
 <DT>Variable Settings
-<DD>
-You can modify the run-time behavior of Readline by
+<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>
 
-
-<PRE>
-set <VAR>variable</VAR> <VAR>value</VAR>
-</PRE>
+<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>
 
-
-<PRE>
-set editing-mode vi
-</PRE>
+<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. 
+</P><P>
 
 A great deal of run-time behavior is changeable with the following
 variables.
+</P><P>
 
-<A NAME="IDX9"></A>
+<A NAME="IDX4"></A>
 <DL COMPACT>
 
 <DT><CODE>bell-style</CODE>
-<DD>
-<A NAME="IDX10"></A>
+<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>comment-begin</CODE>
-<DD>
-<A NAME="IDX11"></A>
+<DD><A NAME="IDX6"></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-ignore-case</CODE>
-<DD>
-If set to <SAMP>`on'</SAMP>, Readline performs filename matching and completion
+<DD>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-query-items</CODE>
-<DD>
-<A NAME="IDX12"></A>
+<DD><A NAME="IDX7"></A>
 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,
@@ -583,73 +603,79 @@ 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</CODE>.
+<P>
 
 <DT><CODE>convert-meta</CODE>
-<DD>
-<A NAME="IDX13"></A>
+<DD><A NAME="IDX8"></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="IDX14"></A>
+<DD><A NAME="IDX9"></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="IDX15"></A>
+<DD><A NAME="IDX10"></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>enable-keypad</CODE>
-<DD>
-<A NAME="IDX16"></A>
+<DD><A NAME="IDX11"></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>expand-tilde</CODE>
-<DD>
-<A NAME="IDX17"></A>
+<DD><A NAME="IDX12"></A>
 If set to <SAMP>`on'</SAMP>, tilde expansion is performed when Readline
 attempts word completion.  The default is <SAMP>`off'</SAMP>.
+<P>
+
+<A NAME="IDX13"></A>
+If set to <SAMP>`on'</SAMP>, the history code attempts to place point at the
+same location on each history line retrived with <CODE>previous-history</CODE>
+or <CODE>next-history</CODE>.
+</P><P>
 
 <DT><CODE>horizontal-scroll-mode</CODE>
-<DD>
-<A NAME="IDX18"></A>
+<DD><A NAME="IDX14"></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="IDX19"></A>
-<A NAME="IDX20"></A>
+<DD><A NAME="IDX15"></A>
+<A NAME="IDX16"></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="IDX21"></A>
+<DD><A NAME="IDX17"></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">Searching for Commands in the History</A>).
+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="IDX22"></A>
+<DD><A NAME="IDX18"></A>
 Sets Readline's idea of the current keymap for key binding commands.
 Acceptable <CODE>keymap</CODE> names are
 <CODE>emacs</CODE>,
@@ -664,57 +690,68 @@ Acceptable <CODE>keymap</CODE> names are
 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>mark-directories</CODE>
-<DD>
-If set to <SAMP>`on'</SAMP>, completed directory names have a slash
+<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="IDX23"></A>
+<DD><A NAME="IDX19"></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>match-hidden-files</CODE>
+<DD><A NAME="IDX20"></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, unless the leading <SAMP>`.'</SAMP> is
+supplied by the user in the filename to be completed.
+This variable is <SAMP>`on'</SAMP> by default.
+<P>
 
 <DT><CODE>output-meta</CODE>
-<DD>
-<A NAME="IDX24"></A>
+<DD><A NAME="IDX21"></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>print-completions-horizontally</CODE>
-<DD>
-If set to <SAMP>`on'</SAMP>, Readline will display completions with matches
+<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>show-all-if-ambiguous</CODE>
-<DD>
-<A NAME="IDX25"></A>
+<DD><A NAME="IDX22"></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>visible-stats</CODE>
-<DD>
-<A NAME="IDX26"></A>
+<DD><A NAME="IDX23"></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
+<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
@@ -722,21 +759,19 @@ 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.
+</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:
-
-<PRE>
-Control-u: universal-argument
+<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>
+</pre></td></tr></table><P>
 
 In the above example, <KBD>C-u</KBD> is bound to the function
 <CODE>universal-argument</CODE>,
@@ -744,6 +779,7 @@ In the above example, <KBD>C-u</KBD> is bound to the function
 <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:
@@ -759,93 +795,80 @@ processing this key binding syntax:
 <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
+<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>
 
-
-<PRE>
-"\C-u": universal-argument
+<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>
+</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
+<DD>control prefix
 <DT><CODE><KBD>\M-</KBD></CODE>
-<DD>
-meta prefix
+<DD>meta prefix
 <DT><CODE><KBD>\e</KBD></CODE>
-<DD>
-an escape character
+<DD>an escape character
 <DT><CODE><KBD>\\</KBD></CODE>
-<DD>
-backslash
+<DD>backslash
 <DT><CODE><KBD>\"</KBD></CODE>
-<DD>
-<KBD>"</KBD>, a double quotation mark
+<DD><KBD>"</KBD>, a double quotation mark
 <DT><CODE><KBD>\'</KBD></CODE>
-<DD>
-<KBD>'</KBD>, a single quote or apostrophe
+<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)
+<DD>alert (bell)
 <DT><CODE>\b</CODE>
-<DD>
-backspace
+<DD>backspace
 <DT><CODE>\d</CODE>
-<DD>
-delete
+<DD>delete
 <DT><CODE>\f</CODE>
-<DD>
-form feed
+<DD>form feed
 <DT><CODE>\n</CODE>
-<DD>
-newline
+<DD>newline
 <DT><CODE>\r</CODE>
-<DD>
-carriage return
+<DD>carriage return
 <DT><CODE>\t</CODE>
-<DD>
-horizontal tab
+<DD>horizontal tab
 <DT><CODE>\v</CODE>
-<DD>
-vertical tab
+<DD>vertical tab
 <DT><CODE>\<VAR>nnn</VAR></CODE>
-<DD>
-the character whose ASCII code is the octal value <VAR>nnn</VAR>
-(one to three digits)
-<DT><CODE>\x<VAR>nnn</VAR></CODE>
-<DD>
-the character whose ASCII code is the hexadecimal value <VAR>nnn</VAR>
+<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.
@@ -855,107 +878,120 @@ 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:
-
-<PRE>
-"\C-x\\": "\\"
-</PRE>
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>"\C-x\\": "\\"
+</pre></td></tr></table></P><P>
 
 </DL>
+<P>
 
-
-
-<H3><A NAME="SEC11" HREF="readline.html#TOC11">Conditional Init Constructs</A></H3>
-
+<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#SEC49">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>
 
-</P>
 <DL COMPACT>
-
 <DT><CODE>$if</CODE>
-<DD>
-The <CODE>$if</CODE> construct allows bindings to be made based on the
+<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
+<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
+<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
+<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:
-
-<PRE>
-$if Bash
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>$if Bash
 # Quote the current or previous word
 "\C-xq": "\eb\"\ef\""
 $endif
-</PRE>
-
-</DL>
+</pre></td></tr></table></DL>
+<P>
 
 <DT><CODE>$endif</CODE>
-<DD>
-This command, as seen in the previous example, terminates an
+<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
+<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
+<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>:
-
-<PRE>
-$include /etc/inputrc
-</PRE>
-
-</DL>
-
-
-
-<H3><A NAME="SEC12" HREF="readline.html#TOC12">Sample Init File</A></H3>
-
+<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#SEC49">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>
 
-</P>
-
-<PRE>
-# This file controls the behaviour of line input editing for
+<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.
 #
@@ -1052,368 +1088,497 @@ $if Ftp
 "\C-xt": "put \M-?"
 "\M-.": yank-last-arg
 $endif
-</PRE>
-
-
-
-<H2><A NAME="SEC13" HREF="readline.html#TOC13">Bindable Readline Commands</A></H2>
-
-
-<UL>
-<LI><A HREF="readline.html#SEC14">Commands For Moving</A>: Moving about the line.
-<LI><A HREF="readline.html#SEC15">Commands For History</A>: Getting at previous lines.
-<LI><A HREF="readline.html#SEC16">Commands For Text</A>: Commands for changing text.
-<LI><A HREF="readline.html#SEC17">Commands For Killing</A>: Commands for killing and yanking.
-<LI><A HREF="readline.html#SEC18">Numeric Arguments</A>: Specifying numeric arguments, repeat counts.
-<LI><A HREF="readline.html#SEC19">Commands For Completion</A>: Getting Readline to do the typing for you.
-<LI><A HREF="readline.html#SEC20">Keyboard Macros</A>: Saving and re-executing typed characters
-<LI><A HREF="readline.html#SEC21">Miscellaneous Commands</A>: Other miscellaneous commands.
-</UL>
-
+</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#SEC49">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>
 
-</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>
-
-
-<H3><A NAME="SEC14" HREF="readline.html#TOC14">Commands For Moving</A></H3>
+</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#SEC49">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="IDX24"></A>
 <DT><CODE>beginning-of-line (C-a)</CODE>
-<DD>
-<A NAME="IDX27"></A>
+<DD><A NAME="IDX25"></A>
 Move to the start of the current line.
+<P>
 
+<A NAME="IDX26"></A>
 <DT><CODE>end-of-line (C-e)</CODE>
-<DD>
-<A NAME="IDX28"></A>
+<DD><A NAME="IDX27"></A>
 Move to the end of the line.
+<P>
 
+<A NAME="IDX28"></A>
 <DT><CODE>forward-char (C-f)</CODE>
-<DD>
-<A NAME="IDX29"></A>
+<DD><A NAME="IDX29"></A>
 Move forward a character.
+<P>
 
-<DT><CODE>backward-char (C-b)</CODE>
-<DD>
 <A NAME="IDX30"></A>
+<DT><CODE>backward-char (C-b)</CODE>
+<DD><A NAME="IDX31"></A>
 Move back a character.
+<P>
 
+<A NAME="IDX32"></A>
 <DT><CODE>forward-word (M-f)</CODE>
-<DD>
-<A NAME="IDX31"></A>
+<DD><A NAME="IDX33"></A>
 Move forward to the end of the next word.  Words are composed of
 letters and digits.
+<P>
 
+<A NAME="IDX34"></A>
 <DT><CODE>backward-word (M-b)</CODE>
-<DD>
-<A NAME="IDX32"></A>
+<DD><A NAME="IDX35"></A>
 Move back to the start of the current or previous word.  Words are
 composed of letters and digits.
+<P>
 
+<A NAME="IDX36"></A>
 <DT><CODE>clear-screen (C-l)</CODE>
-<DD>
-<A NAME="IDX33"></A>
+<DD><A NAME="IDX37"></A>
 Clear the screen and redraw the current line,
 leaving the current line at the top of the screen.
+<P>
 
+<A NAME="IDX38"></A>
 <DT><CODE>redraw-current-line ()</CODE>
-<DD>
-<A NAME="IDX34"></A>
+<DD><A NAME="IDX39"></A>
 Refresh the current line.  By default, this is unbound.
+<P>
 
 </DL>
+<P>
 
-
-
-<H3><A NAME="SEC15" HREF="readline.html#TOC15">Commands For Manipulating The History</A></H3>
+<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#SEC49">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="IDX40"></A>
 <DT><CODE>accept-line (Newline or Return)</CODE>
-<DD>
-<A NAME="IDX35"></A>
+<DD><A NAME="IDX41"></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="IDX42"></A>
 <DT><CODE>previous-history (C-p)</CODE>
-<DD>
-<A NAME="IDX36"></A>
+<DD><A NAME="IDX43"></A>
 Move `back' through the history list, fetching the previous command.
+<P>
 
+<A NAME="IDX44"></A>
 <DT><CODE>next-history (C-n)</CODE>
-<DD>
-<A NAME="IDX37"></A>
+<DD><A NAME="IDX45"></A>
 Move `forward' through the history list, fetching the next command.
+<P>
 
+<A NAME="IDX46"></A>
 <DT><CODE>beginning-of-history (M-&#60;)</CODE>
-<DD>
-<A NAME="IDX38"></A>
+<DD><A NAME="IDX47"></A>
 Move to the first line in the history.
+<P>
 
+<A NAME="IDX48"></A>
 <DT><CODE>end-of-history (M-&#62;)</CODE>
-<DD>
-<A NAME="IDX39"></A>
+<DD><A NAME="IDX49"></A>
 Move to the end of the input history, i.e., the line currently
 being entered.
+<P>
 
+<A NAME="IDX50"></A>
 <DT><CODE>reverse-search-history (C-r)</CODE>
-<DD>
-<A NAME="IDX40"></A>
+<DD><A NAME="IDX51"></A>
 Search backward starting at the current line and moving `up' through
 the history as necessary.  This is an incremental search.
+<P>
 
+<A NAME="IDX52"></A>
 <DT><CODE>forward-search-history (C-s)</CODE>
-<DD>
-<A NAME="IDX41"></A>
+<DD><A NAME="IDX53"></A>
 Search forward starting at the current line and moving `down' through
 the the history as necessary.  This is an incremental search.
+<P>
 
+<A NAME="IDX54"></A>
 <DT><CODE>non-incremental-reverse-search-history (M-p)</CODE>
-<DD>
-<A NAME="IDX42"></A>
+<DD><A NAME="IDX55"></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.
+<P>
 
+<A NAME="IDX56"></A>
 <DT><CODE>non-incremental-forward-search-history (M-n)</CODE>
-<DD>
-<A NAME="IDX43"></A>
+<DD><A NAME="IDX57"></A>
 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.
+<P>
 
+<A NAME="IDX58"></A>
 <DT><CODE>history-search-forward ()</CODE>
-<DD>
-<A NAME="IDX44"></A>
+<DD><A NAME="IDX59"></A>
 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.
+<P>
 
+<A NAME="IDX60"></A>
 <DT><CODE>history-search-backward ()</CODE>
-<DD>
-<A NAME="IDX45"></A>
+<DD><A NAME="IDX61"></A>
 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.
+<P>
 
+<A NAME="IDX62"></A>
 <DT><CODE>yank-nth-arg (M-C-y)</CODE>
-<DD>
-<A NAME="IDX46"></A>
+<DD><A NAME="IDX63"></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.
+<P>
 
+<A NAME="IDX64"></A>
 <DT><CODE>yank-last-arg (M-. or M-_)</CODE>
-<DD>
-<A NAME="IDX47"></A>
+<DD><A NAME="IDX65"></A>
 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</CODE>.
 Successive calls to <CODE>yank-last-arg</CODE> move back through the history
 list, inserting the last argument of each line in turn.
+<P>
 
 </DL>
+<P>
 
-
-
-<H3><A NAME="SEC16" HREF="readline.html#TOC16">Commands For Changing Text</A></H3>
+<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#SEC49">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="IDX66"></A>
 <DT><CODE>delete-char (C-d)</CODE>
-<DD>
-<A NAME="IDX48"></A>
+<DD><A NAME="IDX67"></A>
 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</CODE>, then
 return EOF.
+<P>
 
+<A NAME="IDX68"></A>
 <DT><CODE>backward-delete-char (Rubout)</CODE>
-<DD>
-<A NAME="IDX49"></A>
+<DD><A NAME="IDX69"></A>
 Delete the character behind the cursor.  A numeric argument means
 to kill the characters instead of deleting them.
+<P>
 
+<A NAME="IDX70"></A>
 <DT><CODE>forward-backward-delete-char ()</CODE>
-<DD>
-<A NAME="IDX50"></A>
+<DD><A NAME="IDX71"></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="IDX72"></A>
 <DT><CODE>quoted-insert (C-q or C-v)</CODE>
-<DD>
-<A NAME="IDX51"></A>
+<DD><A NAME="IDX73"></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="IDX74"></A>
 <DT><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE>
-<DD>
-<A NAME="IDX52"></A>
+<DD><A NAME="IDX75"></A>
 Insert a tab character.
+<P>
 
-<DT><CODE>self-insert (a, b, A, 1, !, ...)</CODE>
-<DD>
-<A NAME="IDX53"></A>
+<A NAME="IDX76"></A>
+<DT><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE>
+<DD><A NAME="IDX77"></A>
 Insert yourself.
+<P>
 
+<A NAME="IDX78"></A>
 <DT><CODE>transpose-chars (C-t)</CODE>
-<DD>
-<A NAME="IDX54"></A>
+<DD><A NAME="IDX79"></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="IDX80"></A>
 <DT><CODE>transpose-words (M-t)</CODE>
-<DD>
-<A NAME="IDX55"></A>
+<DD><A NAME="IDX81"></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="IDX82"></A>
 <DT><CODE>upcase-word (M-u)</CODE>
-<DD>
-<A NAME="IDX56"></A>
+<DD><A NAME="IDX83"></A>
 Uppercase the current (or following) word.  With a negative argument,
 uppercase the previous word, but do not move the cursor.
+<P>
 
+<A NAME="IDX84"></A>
 <DT><CODE>downcase-word (M-l)</CODE>
-<DD>
-<A NAME="IDX57"></A>
+<DD><A NAME="IDX85"></A>
 Lowercase the current (or following) word.  With a negative argument,
 lowercase the previous word, but do not move the cursor.
+<P>
 
+<A NAME="IDX86"></A>
 <DT><CODE>capitalize-word (M-c)</CODE>
-<DD>
-<A NAME="IDX58"></A>
+<DD><A NAME="IDX87"></A>
 Capitalize the current (or following) word.  With a negative argument,
 capitalize the previous word, but do not move the cursor.
+<P>
 
 </DL>
+<P>
 
-
-
-<H3><A NAME="SEC17" HREF="readline.html#TOC17">Killing And Yanking</A></H3>
+<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#SEC49">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="IDX88"></A>
 <DT><CODE>kill-line (C-k)</CODE>
-<DD>
-<A NAME="IDX59"></A>
+<DD><A NAME="IDX89"></A>
 Kill the text from point to the end of the line.
+<P>
 
+<A NAME="IDX90"></A>
 <DT><CODE>backward-kill-line (C-x Rubout)</CODE>
-<DD>
-<A NAME="IDX60"></A>
+<DD><A NAME="IDX91"></A>
 Kill backward to the beginning of the line.
+<P>
 
+<A NAME="IDX92"></A>
 <DT><CODE>unix-line-discard (C-u)</CODE>
-<DD>
-<A NAME="IDX61"></A>
+<DD><A NAME="IDX93"></A>
 Kill backward from the cursor to the beginning of the current line.
+<P>
 
+<A NAME="IDX94"></A>
 <DT><CODE>kill-whole-line ()</CODE>
-<DD>
-<A NAME="IDX62"></A>
+<DD><A NAME="IDX95"></A>
 Kill all characters on the current line, no matter where point is.
 By default, this is unbound.
+<P>
 
+<A NAME="IDX96"></A>
 <DT><CODE>kill-word (M-d)</CODE>
-<DD>
-<A NAME="IDX63"></A>
+<DD><A NAME="IDX97"></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="IDX98"></A>
 <DT><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE>
-<DD>
-<A NAME="IDX64"></A>
+<DD><A NAME="IDX99"></A>
 Kill the word behind point.
 Word boundaries are the same as <CODE>backward-word</CODE>.
+<P>
 
+<A NAME="IDX100"></A>
 <DT><CODE>unix-word-rubout (C-w)</CODE>
-<DD>
-<A NAME="IDX65"></A>
+<DD><A NAME="IDX101"></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="IDX102"></A>
 <DT><CODE>delete-horizontal-space ()</CODE>
-<DD>
-<A NAME="IDX66"></A>
+<DD><A NAME="IDX103"></A>
 Delete all spaces and tabs around point.  By default, this is unbound.
+<P>
 
+<A NAME="IDX104"></A>
 <DT><CODE>kill-region ()</CODE>
-<DD>
-<A NAME="IDX67"></A>
+<DD><A NAME="IDX105"></A>
 Kill the text in the current region.
 By default, this command is unbound.
+<P>
 
+<A NAME="IDX106"></A>
 <DT><CODE>copy-region-as-kill ()</CODE>
-<DD>
-<A NAME="IDX68"></A>
+<DD><A NAME="IDX107"></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="IDX108"></A>
 <DT><CODE>copy-backward-word ()</CODE>
-<DD>
-<A NAME="IDX69"></A>
+<DD><A NAME="IDX109"></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="IDX110"></A>
 <DT><CODE>copy-forward-word ()</CODE>
-<DD>
-<A NAME="IDX70"></A>
+<DD><A NAME="IDX111"></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="IDX112"></A>
 <DT><CODE>yank (C-y)</CODE>
-<DD>
-<A NAME="IDX71"></A>
+<DD><A NAME="IDX113"></A>
 Yank the top of the kill ring into the buffer at point.
+<P>
 
+<A NAME="IDX114"></A>
 <DT><CODE>yank-pop (M-y)</CODE>
-<DD>
-<A NAME="IDX72"></A>
+<DD><A NAME="IDX115"></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>
 
-
-
-<H3><A NAME="SEC18" HREF="readline.html#TOC18">Specifying Numeric Arguments</A></H3>
+<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#SEC49">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>
 
-<DT><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, ... <KBD>M--</KBD>)</CODE>
-<DD>
-<A NAME="IDX73"></A>
+<A NAME="IDX116"></A>
+<DT><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE>
+<DD><A NAME="IDX117"></A>
 Add this digit to the argument already accumulating, or start a new
 argument.  <KBD>M--</KBD> starts a negative argument.
+<P>
 
+<A NAME="IDX118"></A>
 <DT><CODE>universal-argument ()</CODE>
-<DD>
-<A NAME="IDX74"></A>
+<DD><A NAME="IDX119"></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.
@@ -1427,34 +1592,51 @@ 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>
 
-
-
-<H3><A NAME="SEC19" HREF="readline.html#TOC19">Letting Readline Type For You</A></H3>
+<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#SEC49">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="IDX120"></A>
 <DT><CODE>complete (<KBD>TAB</KBD>)</CODE>
-<DD>
-<A NAME="IDX75"></A>
+<DD><A NAME="IDX121"></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="IDX122"></A>
 <DT><CODE>possible-completions (M-?)</CODE>
-<DD>
-<A NAME="IDX76"></A>
+<DD><A NAME="IDX123"></A>
 List the possible completions of the text before point.
+<P>
 
+<A NAME="IDX124"></A>
 <DT><CODE>insert-completions (M-*)</CODE>
-<DD>
-<A NAME="IDX77"></A>
+<DD><A NAME="IDX125"></A>
 Insert all completions of the text before point that would have
 been generated by <CODE>possible-completions</CODE>.
+<P>
 
+<A NAME="IDX126"></A>
 <DT><CODE>menu-complete ()</CODE>
-<DD>
-<A NAME="IDX78"></A>
+<DD><A NAME="IDX127"></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
@@ -1467,276 +1649,368 @@ 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="IDX128"></A>
 <DT><CODE>delete-char-or-list ()</CODE>
-<DD>
-<A NAME="IDX79"></A>
+<DD><A NAME="IDX129"></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>
 
-
-
-<H3><A NAME="SEC20" HREF="readline.html#TOC20">Keyboard Macros</A></H3>
+<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#SEC49">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="IDX130"></A>
 <DT><CODE>start-kbd-macro (C-x ()</CODE>
-<DD>
-<A NAME="IDX80"></A>
+<DD><A NAME="IDX131"></A>
 Begin saving the characters typed into the current keyboard macro.
+<P>
 
+<A NAME="IDX132"></A>
 <DT><CODE>end-kbd-macro (C-x ))</CODE>
-<DD>
-<A NAME="IDX81"></A>
+<DD><A NAME="IDX133"></A>
 Stop saving the characters typed into the current keyboard macro
 and save the definition.
+<P>
 
+<A NAME="IDX134"></A>
 <DT><CODE>call-last-kbd-macro (C-x e)</CODE>
-<DD>
-<A NAME="IDX82"></A>
+<DD><A NAME="IDX135"></A>
 Re-execute the last keyboard macro defined, by making the characters
 in the macro appear as if typed at the keyboard.
+<P>
 
 </DL>
+<P>
 
-
-
-<H3><A NAME="SEC21" HREF="readline.html#TOC21">Some Miscellaneous Commands</A></H3>
+<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#SEC49">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="IDX136"></A>
 <DT><CODE>re-read-init-file (C-x C-r)</CODE>
-<DD>
-<A NAME="IDX83"></A>
+<DD><A NAME="IDX137"></A>
 Read in the contents of the <VAR>inputrc</VAR> file, and incorporate
 any bindings or variable assignments found there.
+<P>
 
+<A NAME="IDX138"></A>
 <DT><CODE>abort (C-g)</CODE>
-<DD>
-<A NAME="IDX84"></A>
+<DD><A NAME="IDX139"></A>
 Abort the current editing command and
 ring the terminal's bell (subject to the setting of
 <CODE>bell-style</CODE>).
+<P>
 
-<DT><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, ...)</CODE>
-<DD>
-<A NAME="IDX85"></A>
+<A NAME="IDX140"></A>
+<DT><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, <small>...</small>)</CODE>
+<DD><A NAME="IDX141"></A>
 If the metafied character <VAR>x</VAR> is lowercase, run the command
 that is bound to the corresponding uppercase character.
+<P>
 
+<A NAME="IDX142"></A>
 <DT><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE>
-<DD>
-<A NAME="IDX86"></A>
+<DD><A NAME="IDX143"></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="IDX144"></A>
 <DT><CODE>undo (C-_ or C-x C-u)</CODE>
-<DD>
-<A NAME="IDX87"></A>
+<DD><A NAME="IDX145"></A>
 Incremental undo, separately remembered for each line.
+<P>
 
+<A NAME="IDX146"></A>
 <DT><CODE>revert-line (M-r)</CODE>
-<DD>
-<A NAME="IDX88"></A>
+<DD><A NAME="IDX147"></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="IDX148"></A>
 <DT><CODE>tilde-expand (M-~)</CODE>
-<DD>
-<A NAME="IDX89"></A>
+<DD><A NAME="IDX149"></A>
 Perform tilde expansion on the current word.
+<P>
 
+<A NAME="IDX150"></A>
 <DT><CODE>set-mark (C-@)</CODE>
-<DD>
-<A NAME="IDX90"></A>
+<DD><A NAME="IDX151"></A>
 Set the mark to the point.  If a
 numeric argument is supplied, the mark is set to that position.
+<P>
 
+<A NAME="IDX152"></A>
 <DT><CODE>exchange-point-and-mark (C-x C-x)</CODE>
-<DD>
-<A NAME="IDX91"></A>
+<DD><A NAME="IDX153"></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="IDX154"></A>
 <DT><CODE>character-search (C-])</CODE>
-<DD>
-<A NAME="IDX92"></A>
+<DD><A NAME="IDX155"></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="IDX156"></A>
 <DT><CODE>character-search-backward (M-C-])</CODE>
-<DD>
-<A NAME="IDX93"></A>
+<DD><A NAME="IDX157"></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="IDX158"></A>
 <DT><CODE>insert-comment (M-#)</CODE>
-<DD>
-<A NAME="IDX94"></A>
+<DD><A NAME="IDX159"></A>
 The value of the <CODE>comment-begin</CODE>
 variable is inserted at the beginning of the current line,
 and the line is accepted as if a newline had been typed.
+<P>
 
+<A NAME="IDX160"></A>
 <DT><CODE>dump-functions ()</CODE>
-<DD>
-<A NAME="IDX95"></A>
+<DD><A NAME="IDX161"></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="IDX162"></A>
 <DT><CODE>dump-variables ()</CODE>
-<DD>
-<A NAME="IDX96"></A>
+<DD><A NAME="IDX163"></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="IDX164"></A>
 <DT><CODE>dump-macros ()</CODE>
-<DD>
-<A NAME="IDX97"></A>
+<DD><A NAME="IDX165"></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>
 
 </DL>
+<P>
 
-
-
-<H2><A NAME="SEC22" HREF="readline.html#TOC22">Readline vi Mode</A></H2>
-
+<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#SEC49">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 1003.2 standard.
+</P><P>
 
-</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>
 
-</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>
 
-</P>
+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.
+</P><P>
 
+Copyright (C) 1988-2001 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>
 
-<H1><A NAME="SEC23" HREF="readline.html#TOC23">Programming with GNU Readline</A></H1>
+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">[ &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#SEC49">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>
-
-<UL>
-<LI><A HREF="readline.html#SEC24">Basic Behavior</A>: Using the default behavior of Readline.
-<LI><A HREF="readline.html#SEC25">Custom Functions</A>: Adding your own functions to Readline.
-<LI><A HREF="readline.html#SEC28">Readline Variables</A>: Variables accessible to custom
-                                       functions.
-<LI><A HREF="readline.html#SEC29">Readline Convenience Functions</A>: Functions which Readline supplies to
+</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.
-<LI><A HREF="readline.html#SEC43">Readline Signal Handling</A>: How Readline behaves when it receives signals.
-<LI><A HREF="readline.html#SEC44">Custom Completers</A>: Supplanting or supplementing Readline's
-                       completion functions.
-</UL>
-
-
-
-<H2><A NAME="SEC24" HREF="readline.html#TOC24">Basic Behavior</A></H2>
-
+                                       functions.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC43">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#SEC44">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">[ &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#SEC49">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>
 
-</P>
-<P>
-<A NAME="IDX98"></A>
-<A NAME="IDX99"></A>
+<A NAME="IDX166"></A>
+<A NAME="IDX167"></A>
+</P><P>
 
-</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>
 
-</P>
-
-<PRE>
-<CODE>char *readline (const char *<VAR>prompt</VAR>);</CODE>
-</PRE>
+<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>char *readline (const char *<VAR>prompt</VAR>);</CODE>
+</pre></td></tr></table></P><P>
 
-<P>
 So, one might say
-
-<PRE>
-<CODE>char *line = readline ("Enter a line: ");</CODE>
-</PRE>
-
-<P>
-in order to read a line of text from the user.
+<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>
 
-</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>
 
-</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>
 
-</P>
+<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>add_history (line)</CODE>;
+</pre></td></tr></table></P><P>
 
-<PRE>
-<CODE>add_history (line)</CODE>;
-</PRE>
-
-<P>
 For full details on the GNU History Library, see the associated manual.
+</P><P>
 
-</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>
 
-</P>
-
-<PRE>
-/* A static variable for holding the line. */
+<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. */
@@ -1760,181 +2034,215 @@ rl_gets ()
 
   return (line_read);
 }
-</PRE>
+</pre></td></tr></table></P><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>
 
-</P>
-
-<PRE>
-<CODE>int rl_bind_key (int <VAR>key</VAR>, rl_command_func_t *<VAR>function</VAR>);</CODE>
-</PRE>
+<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>
 
-<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>
 
-</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>
 
-<PRE>
-<CODE>rl_bind_key ('\t', rl_insert);</CODE>
-</PRE>
-
-<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#SEC44">Custom Completers</A>).
-
-</P>
-
-
-<H2><A NAME="SEC25" HREF="readline.html#TOC25">Custom Functions</A></H2>
-
+custom completers (see section <A HREF="readline.html#SEC44">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#SEC49">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>
 
-</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>
-
-<UL>
-<LI><A HREF="readline.html#SEC26">Readline Typedefs</A>: C declarations to make code readable.
-<LI><A HREF="readline.html#SEC27">Function Writing</A>: Variables and calling conventions.
-</UL>
-
-
-
-<H3><A NAME="SEC26" HREF="readline.html#TOC26">Readline Typedefs</A></H3>
-
+</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#SEC49">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 readabilty, we declare a number of new object types, all pointers
 to functions.
+</P><P>
 
-</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>
 
-</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>
 
-</P>
-<P>
 <CODE>int (*func)();</CODE>
+</P><P>
 
-</P>
-<P>
 or the ANSI-C style declaration
+</P><P>
 
-</P>
-<P>
 <CODE>int (*func)(int, int);</CODE>
+</P><P>
 
-</P>
-<P>
 we may write
+</P><P>
 
-</P>
-<P>
 <CODE>rl_command_func_t *func;</CODE>
+</P><P>
 
-</P>
-<P>
 The full list of function pointer types available is
+</P><P>
 
-</P>
 <DL COMPACT>
-
 <DT><CODE>typedef int rl_command_func_t (int, int);</CODE>
-<DD>
+<DD><P>
+
 <DT><CODE>typedef char *rl_compentry_func_t (const char *, int);</CODE>
-<DD>
+<DD><P>
+
 <DT><CODE>typedef char **rl_completion_func_t (const char *, int, int);</CODE>
-<DD>
+<DD><P>
+
 <DT><CODE>typedef char *rl_quote_func_t (char *, int, char *);</CODE>
-<DD>
+<DD><P>
+
 <DT><CODE>typedef char *rl_dequote_func_t (char *, int);</CODE>
-<DD>
+<DD><P>
+
 <DT><CODE>typedef int rl_compignore_func_t (char **);</CODE>
-<DD>
+<DD><P>
+
 <DT><CODE>typedef void rl_compdisp_func_t (char **, int, int);</CODE>
-<DD>
+<DD><P>
+
 <DT><CODE>typedef int rl_hook_func_t (void);</CODE>
-<DD>
+<DD><P>
+
 <DT><CODE>typedef int rl_getc_func_t (FILE *);</CODE>
-<DD>
+<DD><P>
+
 <DT><CODE>typedef int rl_linebuf_func_t (char *, int);</CODE>
-<DD>
-<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>
-<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>
-</DL>
+<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>
 
-<H3><A NAME="SEC27" HREF="readline.html#TOC27">Writing a New Function</A></H3>
+</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#SEC49">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>
 
-</P>
-<P>
 The calling sequence for a command <CODE>foo</CODE> looks like
+</P><P>
 
-</P>
+<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>foo (int count, int key)</CODE>
+</pre></td></tr></table></P><P>
 
-<PRE>
-<CODE>foo (int count, int key)</CODE>
-</PRE>
-
-<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>
 
-</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
@@ -1944,120 +2252,122 @@ 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>
-
-
-<H2><A NAME="SEC28" HREF="readline.html#TOC28">Readline Variables</A></H2>
-
+</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">[ &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#SEC49">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>
 
-</P>
-<P>
+<A NAME="IDX168"></A>
 <DL>
 <DT><U>Variable:</U> char * <B>rl_line_buffer</B>
-<DD><A NAME="IDX100"></A>
-This is the line gathered so far.  You are welcome to modify the
-contents of the line, but see section <A HREF="readline.html#SEC34">Allowing Undoing</A>.  The
+<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>
 
-</P>
-<P>
+<A NAME="IDX169"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_point</B>
-<DD><A NAME="IDX101"></A>
-The offset of the current cursor position in <CODE>rl_line_buffer</CODE>
+<DD>The offset of the current cursor position in <CODE>rl_line_buffer</CODE>
 (the <EM>point</EM>).
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX170"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_end</B>
-<DD><A NAME="IDX102"></A>
-The number of characters present in <CODE>rl_line_buffer</CODE>.  When
+<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>
 
-</P>
-<P>
+<A NAME="IDX171"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_mark</B>
-<DD><A NAME="IDX103"></A>
-The <VAR>mark</VAR> (saved position) in the current line.  If set, the mark
+<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>
 
-</P>
-<P>
+<A NAME="IDX172"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_done</B>
-<DD><A NAME="IDX104"></A>
-Setting this to a non-zero value causes Readline to return the current
+<DD>Setting this to a non-zero value causes Readline to return the current
 line immediately.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX173"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_num_chars_to_read</B>
-<DD><A NAME="IDX105"></A>
-Setting this to a positive value before calling <CODE>readline()</CODE> causes
+<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>
 
-</P>
-<P>
+<A NAME="IDX174"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_pending_input</B>
-<DD><A NAME="IDX106"></A>
-Setting this to a value makes it the next keystroke read.  This is a
+<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>
 
-</P>
-<P>
+<A NAME="IDX175"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_dispatching</B>
-<DD><A NAME="IDX107"></A>
-Set to a non-zero value if a function is being called from a key binding;
+<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>
 
-</P>
-<P>
+<A NAME="IDX176"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_erase_empty_line</B>
-<DD><A NAME="IDX108"></A>
-Setting this to a non-zero value causes Readline to completely erase
+<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>
 
-</P>
-<P>
+<A NAME="IDX177"></A>
 <DL>
 <DT><U>Variable:</U> char * <B>rl_prompt</B>
-<DD><A NAME="IDX109"></A>
-The prompt Readline uses.  This is set from the argument to
+<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">Redisplay</A>) may
+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>
 
-</P>
-<P>
+<A NAME="IDX178"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_already_prompted</B>
-<DD><A NAME="IDX110"></A>
-If an application wishes to display the prompt itself, rather than have
+<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
@@ -2065,851 +2375,856 @@ the redisplay functions can update the display properly.
 The calling application is responsible for managing the value; Readline
 never sets it.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX179"></A>
 <DL>
 <DT><U>Variable:</U> const char * <B>rl_library_version</B>
-<DD><A NAME="IDX111"></A>
-The version number of this revision of the library.
+<DD>The version number of this revision of the library.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX180"></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="IDX181"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_gnu_readline_p</B>
-<DD><A NAME="IDX112"></A>
-Always set to 1, denoting that this is GNU readline rather than some
+<DD>Always set to 1, denoting that this is GNU readline rather than some
 emulation.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX182"></A>
 <DL>
 <DT><U>Variable:</U> const char * <B>rl_terminal_name</B>
-<DD><A NAME="IDX113"></A>
-The terminal type, used for initialization.  If not set by the application,
-Readline sets this to the value of the @env{TERM} environment variable
+<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>
 
-</P>
-<P>
+<A NAME="IDX183"></A>
 <DL>
 <DT><U>Variable:</U> const char * <B>rl_readline_name</B>
-<DD><A NAME="IDX114"></A>
-This variable is set to a unique name by each application using Readline.
+<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">Conditional Init Constructs</A>).
+(see section <A HREF="readline.html#SEC11">1.3.2 Conditional Init Constructs</A>).
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX184"></A>
 <DL>
 <DT><U>Variable:</U> FILE * <B>rl_instream</B>
-<DD><A NAME="IDX115"></A>
-The stdio stream from which Readline reads input.
+<DD>The stdio stream from which Readline reads input.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX185"></A>
 <DL>
 <DT><U>Variable:</U> FILE * <B>rl_outstream</B>
-<DD><A NAME="IDX116"></A>
-The stdio stream to which Readline performs output.
+<DD>The stdio stream to which Readline performs output.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX186"></A>
 <DL>
 <DT><U>Variable:</U> rl_command_func_t * <B>rl_last_func</B>
-<DD><A NAME="IDX117"></A>
-The address of the last command function Readline executed.  May be used to
+<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>
 
-</P>
-<P>
+<A NAME="IDX187"></A>
 <DL>
 <DT><U>Variable:</U> rl_hook_func_t * <B>rl_startup_hook</B>
-<DD><A NAME="IDX118"></A>
-If non-zero, this is the address of a function to call just
+<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>
 
-</P>
-<P>
+<A NAME="IDX188"></A>
 <DL>
 <DT><U>Variable:</U> rl_hook_func_t * <B>rl_pre_input_hook</B>
-<DD><A NAME="IDX119"></A>
-If non-zero, this is the address of a function to call after
+<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>
 
-</P>
-<P>
+<A NAME="IDX189"></A>
 <DL>
 <DT><U>Variable:</U> rl_hook_func_t * <B>rl_event_hook</B>
-<DD><A NAME="IDX120"></A>
-If non-zero, this is the address of a function to call periodically
+<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>
 
-</P>
-<P>
+<A NAME="IDX190"></A>
 <DL>
 <DT><U>Variable:</U> rl_getc_func_t * <B>rl_getc_function</B>
-<DD><A NAME="IDX121"></A>
-If non-zero, Readline will call indirectly through this pointer
+<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">Character Input</A>).
+(see section <A HREF="readline.html#SEC37">2.4.8 Character Input</A>).
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX191"></A>
 <DL>
 <DT><U>Variable:</U> rl_voidfunc_t * <B>rl_redisplay_function</B>
-<DD><A NAME="IDX122"></A>
-If non-zero, Readline will call indirectly through this pointer
+<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">Redisplay</A>).
+redisplay function (see section <A HREF="readline.html#SEC35">2.4.6 Redisplay</A>).
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX192"></A>
 <DL>
 <DT><U>Variable:</U> rl_vintfunc_t * <B>rl_prep_term_function</B>
-<DD><A NAME="IDX123"></A>
-If non-zero, Readline will call indirectly through this pointer
+<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">Terminal Management</A>).
+(see section <A HREF="readline.html#SEC38">2.4.9 Terminal Management</A>).
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX193"></A>
 <DL>
 <DT><U>Variable:</U> rl_voidfunc_t * <B>rl_deprep_term_function</B>
-<DD><A NAME="IDX124"></A>
-If non-zero, Readline will call indirectly through this pointer
+<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">Terminal Management</A>).
+(see section <A HREF="readline.html#SEC38">2.4.9 Terminal Management</A>).
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX194"></A>
 <DL>
 <DT><U>Variable:</U> Keymap <B>rl_executing_keymap</B>
-<DD><A NAME="IDX125"></A>
-This variable is set to the keymap (see section <A HREF="readline.html#SEC31">Selecting a Keymap</A>) in which the
+<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>
 
-</P>
-<P>
+<A NAME="IDX195"></A>
 <DL>
 <DT><U>Variable:</U> Keymap <B>rl_binding_keymap</B>
-<DD><A NAME="IDX126"></A>
-This variable is set to the keymap (see section <A HREF="readline.html#SEC31">Selecting a Keymap</A>) in which the
+<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>
 
-</P>
-<P>
+<A NAME="IDX196"></A>
 <DL>
 <DT><U>Variable:</U> char * <B>rl_executing_macro</B>
-<DD><A NAME="IDX127"></A>
-This variable is set to the text of any currently-executing macro.
+<DD>This variable is set to the text of any currently-executing macro.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX197"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_readline_state</B>
-<DD><A NAME="IDX128"></A>
-A variable with bit values that encapsulate the current Readline state.
+<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>
 
-</P>
 <DL COMPACT>
-
 <DT><CODE>RL_STATE_NONE</CODE>
-<DD>
-Readline has not yet been called, nor has it begun to intialize.
+<DD>Readline has not yet been called, nor has it begun to intialize.
 <DT><CODE>RL_STATE_INITIALIZING</CODE>
-<DD>
-Readline is initializing its internal data structures.
+<DD>Readline is initializing its internal data structures.
 <DT><CODE>RL_STATE_INITIALIZED</CODE>
-<DD>
-Readline has completed its initialization.
+<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.
+<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.
+<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.
+<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.
+<DD>Readline is dispatching to a command.
 <DT><CODE>RL_STATE_MOREINPUT</CODE>
-<DD>
-Readline is reading more input while executing an editing command.
+<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.
+<DD>Readline is performing an incremental history search.
 <DT><CODE>RL_STATE_NSEARCH</CODE>
-<DD>
-Readline is performing a non-incremental history search.
+<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.
+<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.
+<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
+<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.
+<DD>Readline is currently reading characters defining a keyboard macro.
 <DT><CODE>RL_STATE_OVERWRITE</CODE>
-<DD>
-Readline is in overwrite mode.
+<DD>Readline is in overwrite mode.
 <DT><CODE>RL_STATE_COMPLETING</CODE>
-<DD>
-Readline is performing word completion.
+<DD>Readline is performing word completion.
 <DT><CODE>RL_STATE_SIGHANDLER</CODE>
-<DD>
-Readline is currently executing the readline signal handler.
+<DD>Readline is currently executing the readline signal handler.
 <DT><CODE>RL_STATE_UNDOING</CODE>
-<DD>
-Readline is performing an undo.
+<DD>Readline is performing an undo.
 <DT><CODE>RL_STATE_DONE</CODE>
-<DD>
-Readline has read a key sequence bound to <CODE>accept-line</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>
 
-<P>
+<A NAME="IDX198"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_explicit_arg</B>
-<DD><A NAME="IDX129"></A>
-Set to a non-zero value if an explicit numeric argument was specified by
+<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>
 
-</P>
-<P>
+<A NAME="IDX199"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_numeric_arg</B>
-<DD><A NAME="IDX130"></A>
-Set to the value of any numeric argument explicitly specified by the user
+<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>
 
-</P>
-<P>
+<A NAME="IDX200"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_editing_mode</B>
-<DD><A NAME="IDX131"></A>
-Set to a value denoting Readline's current editing mode.  A value of
+<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>
-
-
-
-<H2><A NAME="SEC29" HREF="readline.html#TOC29">Readline Convenience Functions</A></H2>
-
-
-<UL>
-<LI><A HREF="readline.html#SEC30">Function Naming</A>: How to give a function you write a name.
-<LI><A HREF="readline.html#SEC31">Keymaps</A>: Making keymaps.
-<LI><A HREF="readline.html#SEC32">Binding Keys</A>: Changing Keymaps.
-<LI><A HREF="readline.html#SEC33">Associating Function Names and Bindings</A>: Translate function names to
-                                               key sequences.
-<LI><A HREF="readline.html#SEC34">Allowing Undoing</A>: How to make your functions undoable.
-<LI><A HREF="readline.html#SEC35">Redisplay</A>: Functions to control line display.
-<LI><A HREF="readline.html#SEC36">Modifying Text</A>: Functions to modify <CODE>rl_line_buffer</CODE>.
-<LI><A HREF="readline.html#SEC37">Character Input</A>: Functions to read keyboard input.
-<LI><A HREF="readline.html#SEC38">Terminal Management</A>: Functions to manage terminal settings.
-<LI><A HREF="readline.html#SEC39">Utility Functions</A>: Generally useful functions and hooks.
-<LI><A HREF="readline.html#SEC40">Miscellaneous Functions</A>: Functions that don't fall into any category.
-<LI><A HREF="readline.html#SEC41">Alternate Interface</A>: Using Readline in a `callback' fashion.
-<LI><A HREF="readline.html#SEC42">A Readline Example</A>: An example Readline function.
-</UL>
-
-
-
-<H3><A NAME="SEC30" HREF="readline.html#TOC30">Naming a Function</A></H3>
-
+</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#SEC43"> &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#SEC43"> &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#SEC49">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>
+</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#SEC43"> &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#SEC43"> &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#SEC49">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>
 
-</P>
-
-<PRE>
-Meta-Rubout:   backward-kill-word
-</PRE>
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>Meta-Rubout:  backward-kill-word
+</pre></td></tr></table></P><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>
 
-</P>
-<P>
+<A NAME="IDX201"></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><A NAME="IDX132"></A>
-Add <VAR>name</VAR> to the list of named functions.  Make <VAR>function</VAR> be
+<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>
 
-</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>
-
-
-<H3><A NAME="SEC31" HREF="readline.html#TOC31">Selecting a Keymap</A></H3>
-
+</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#SEC43"> &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#SEC49">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>
 
-</P>
-<P>
+<A NAME="IDX202"></A>
 <DL>
 <DT><U>Function:</U> Keymap <B>rl_make_bare_keymap</B> <I>(void)</I>
-<DD><A NAME="IDX133"></A>
-Returns a new, empty keymap.  The space for the keymap is allocated with
+<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_discard_keymap()</CODE> when done.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX203"></A>
 <DL>
 <DT><U>Function:</U> Keymap <B>rl_copy_keymap</B> <I>(Keymap map)</I>
-<DD><A NAME="IDX134"></A>
-Return a new keymap which is a copy of <VAR>map</VAR>.
+<DD>Return a new keymap which is a copy of <VAR>map</VAR>.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX204"></A>
 <DL>
 <DT><U>Function:</U> Keymap <B>rl_make_keymap</B> <I>(void)</I>
-<DD><A NAME="IDX135"></A>
-Return a new keymap with the printing characters bound to rl_insert,
+<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>
 
-</P>
-<P>
+<A NAME="IDX205"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_discard_keymap</B> <I>(Keymap keymap)</I>
-<DD><A NAME="IDX136"></A>
-Free the storage associated with <VAR>keymap</VAR>.
+<DD>Free the storage associated with <VAR>keymap</VAR>.
 </DL>
+</P><P>
 
-</P>
-<P>
 Readline has several internal keymaps.  These functions allow you to
 change which keymap is active.
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX206"></A>
 <DL>
 <DT><U>Function:</U> Keymap <B>rl_get_keymap</B> <I>(void)</I>
-<DD><A NAME="IDX137"></A>
-Returns the currently active keymap.
+<DD>Returns the currently active keymap.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX207"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_set_keymap</B> <I>(Keymap keymap)</I>
-<DD><A NAME="IDX138"></A>
-Makes <VAR>keymap</VAR> the currently active keymap.
+<DD>Makes <VAR>keymap</VAR> the currently active keymap.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX208"></A>
 <DL>
 <DT><U>Function:</U> Keymap <B>rl_get_keymap_by_name</B> <I>(const char *name)</I>
-<DD><A NAME="IDX139"></A>
-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">Readline Init File</A>).
+<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>
 
-</P>
-<P>
+<A NAME="IDX209"></A>
 <DL>
 <DT><U>Function:</U> char * <B>rl_get_keymap_name</B> <I>(Keymap keymap)</I>
-<DD><A NAME="IDX140"></A>
-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">Readline Init File</A>).
-</DL>
-
-</P>
-
-
-<H3><A NAME="SEC32" HREF="readline.html#TOC32">Binding Keys</A></H3>
-
+<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#SEC43"> &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#SEC49">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>
 
-</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">Readline Variables</A>).
+(see section <A HREF="readline.html#SEC28">2.3 Readline Variables</A>).
+</P><P>
 
-</P>
-<P>
 These functions manage key bindings.
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX210"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_bind_key</B> <I>(int key, rl_command_func_t *function)</I>
-<DD><A NAME="IDX141"></A>
-Binds <VAR>key</VAR> to <VAR>function</VAR> in the currently active keymap.
+<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>
 
-</P>
-<P>
+<A NAME="IDX211"></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><A NAME="IDX142"></A>
-Bind <VAR>key</VAR> to <VAR>function</VAR> in <VAR>map</VAR>.  Returns non-zero in the case
+<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>
 
-</P>
-<P>
+<A NAME="IDX212"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_unbind_key</B> <I>(int key)</I>
-<DD><A NAME="IDX143"></A>
-Bind <VAR>key</VAR> to the null function in the currently active keymap.
+<DD>Bind <VAR>key</VAR> to the null function in the currently active keymap.
 Returns non-zero in case of error.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX213"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_unbind_key_in_map</B> <I>(int key, Keymap map)</I>
-<DD><A NAME="IDX144"></A>
-Bind <VAR>key</VAR> to the null function in <VAR>map</VAR>.
+<DD>Bind <VAR>key</VAR> to the null function in <VAR>map</VAR>.
 Returns non-zero in case of error.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX214"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_unbind_function_in_map</B> <I>(rl_command_func_t *function, Keymap map)</I>
-<DD><A NAME="IDX145"></A>
-Unbind all keys that execute <VAR>function</VAR> in <VAR>map</VAR>.
+<DD>Unbind all keys that execute <VAR>function</VAR> in <VAR>map</VAR>.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX215"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_unbind_command_in_map</B> <I>(const char *command, Keymap map)</I>
-<DD><A NAME="IDX146"></A>
-Unbind all keys that are bound to <VAR>command</VAR> in <VAR>map</VAR>.
+<DD>Unbind all keys that are bound to <VAR>command</VAR> in <VAR>map</VAR>.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX216"></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><A NAME="IDX147"></A>
-Bind the key sequence represented by the string <VAR>keyseq</VAR> to the function
+<DD>Bind the key sequence represented by the string <VAR>keyseq</VAR> to the function
 <VAR>function</VAR>.  This makes new keymaps as
 necessary.  The initial keymap in which to do bindings is <VAR>map</VAR>.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX217"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_generic_bind</B> <I>(int type, const char *keyseq, char *data, Keymap map)</I>
-<DD><A NAME="IDX148"></A>
-Bind the key sequence represented by the string <VAR>keyseq</VAR> to the arbitrary
+<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>
 
-</P>
-<P>
+<A NAME="IDX218"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_parse_and_bind</B> <I>(char *line)</I>
-<DD><A NAME="IDX149"></A>
-Parse <VAR>line</VAR> as if it had been read from the <CODE>inputrc</CODE> file and
+<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">Readline Init File</A>).
+(see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX219"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_read_init_file</B> <I>(const char *filename)</I>
-<DD><A NAME="IDX150"></A>
-Read keybindings and variable assignments from <VAR>filename</VAR>
-(see section <A HREF="readline.html#SEC9">Readline Init File</A>).
-</DL>
-
-</P>
-
-
-<H3><A NAME="SEC33" HREF="readline.html#TOC33">Associating Function Names and Bindings</A></H3>
-
+<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#SEC43"> &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#SEC49">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>
 
-</P>
-<P>
+<A NAME="IDX220"></A>
 <DL>
 <DT><U>Function:</U> rl_command_func_t * <B>rl_named_function</B> <I>(const char *name)</I>
-<DD><A NAME="IDX151"></A>
-Return the function with name <VAR>name</VAR>.
+<DD>Return the function with name <VAR>name</VAR>.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX221"></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><A NAME="IDX152"></A>
-Return the function invoked by <VAR>keyseq</VAR> in keymap <VAR>map</VAR>.
+<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>
 
-</P>
-<P>
+<A NAME="IDX222"></A>
 <DL>
 <DT><U>Function:</U> char ** <B>rl_invoking_keyseqs</B> <I>(rl_command_func_t *function)</I>
-<DD><A NAME="IDX153"></A>
-Return an array of strings representing the key sequences used to
+<DD>Return an array of strings representing the key sequences used to
 invoke <VAR>function</VAR> in the current keymap.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX223"></A>
 <DL>
 <DT><U>Function:</U> char ** <B>rl_invoking_keyseqs_in_map</B> <I>(rl_command_func_t *function, Keymap map)</I>
-<DD><A NAME="IDX154"></A>
-Return an array of strings representing the key sequences used to
+<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>
 
-</P>
-<P>
+<A NAME="IDX224"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_function_dumper</B> <I>(int readable)</I>
-<DD><A NAME="IDX155"></A>
-Print the readline function names and the key sequences currently
+<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>
 
-</P>
-<P>
+<A NAME="IDX225"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_list_funmap_names</B> <I>(void)</I>
-<DD><A NAME="IDX156"></A>
-Print the names of all bindable Readline functions to <CODE>rl_outstream</CODE>.
+<DD>Print the names of all bindable Readline functions to <CODE>rl_outstream</CODE>.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX226"></A>
 <DL>
 <DT><U>Function:</U> const char ** <B>rl_funmap_names</B> <I>(void)</I>
-<DD><A NAME="IDX157"></A>
-Return a NULL terminated array of known function names.  The array is
+<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 <CODE>free()</CODE> the array when you are done, but not the pointers.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX227"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_add_funmap_entry</B> <I>(const char *name, rl_command_func_t *function)</I>
-<DD><A NAME="IDX158"></A>
-Add <VAR>name</VAR> to the list of bindable Readline command names, and make
+<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>
-
-
-<H3><A NAME="SEC34" HREF="readline.html#TOC34">Allowing Undoing</A></H3>
-
+</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#SEC43"> &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#SEC49">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>
 
-</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>
 
-</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>
 
-</P>
-<P>
 The types of events that can be undone are:
+</P><P>
 
-</P>
-
-<PRE>
-enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END }; 
-</PRE>
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END }; 
+</pre></td></tr></table></P><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>
 
-</P>
-<P>
+<A NAME="IDX228"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_begin_undo_group</B> <I>(void)</I>
-<DD><A NAME="IDX159"></A>
-Begins saving undo information in a group construct.  The undo
+<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>
 
-</P>
-<P>
+<A NAME="IDX229"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_end_undo_group</B> <I>(void)</I>
-<DD><A NAME="IDX160"></A>
-Closes the current undo group started with <CODE>rl_begin_undo_group
+<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>
 
-</P>
-<P>
+<A NAME="IDX230"></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><A NAME="IDX161"></A>
-Remember how to undo an event (according to <VAR>what</VAR>).  The affected
+<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>
 
-</P>
-<P>
+<A NAME="IDX231"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_free_undo_list</B> <I>(void)</I>
-<DD><A NAME="IDX162"></A>
-Free the existing undo list.
+<DD>Free the existing undo list.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX232"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_do_undo</B> <I>(void)</I>
-<DD><A NAME="IDX163"></A>
-Undo the first thing on the undo list.  Returns <CODE>0</CODE> if there was
+<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>
 
-</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>
 
-</P>
-<P>
+<A NAME="IDX233"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_modifying</B> <I>(int start, int end)</I>
-<DD><A NAME="IDX164"></A>
-Tell Readline to save the text between <VAR>start</VAR> and <VAR>end</VAR> as a
+<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>
 
-</P>
-
-
-<H3><A NAME="SEC35" HREF="readline.html#TOC35">Redisplay</A></H3>
-
+<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#SEC43"> &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#SEC49">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="IDX234"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_redisplay</B> <I>(void)</I>
-<DD><A NAME="IDX165"></A>
-Change what's displayed on the screen to reflect the current contents
+<DD>Change what's displayed on the screen to reflect the current contents
 of <CODE>rl_line_buffer</CODE>.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX235"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_forced_update_display</B> <I>(void)</I>
-<DD><A NAME="IDX166"></A>
-Force the line to be updated and redisplayed, whether or not
+<DD>Force the line to be updated and redisplayed, whether or not
 Readline thinks the screen display is correct.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX236"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_on_new_line</B> <I>(void)</I>
-<DD><A NAME="IDX167"></A>
-Tell the update functions that we have moved onto a new (empty) line,
+<DD>Tell the update functions that we have moved onto a new (empty) line,
 usually after ouputting a newline.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX237"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_on_new_line_with_prompt</B> <I>(void)</I>
-<DD><A NAME="IDX168"></A>
-Tell the update functions that we have moved onto a new line, with
+<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>
 
-</P>
-<P>
+<A NAME="IDX238"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_reset_line_state</B> <I>(void)</I>
-<DD><A NAME="IDX169"></A>
-Reset the display state to a clean state and redisplay the current line
+<DD>Reset the display state to a clean state and redisplay the current line
 starting on a new line.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX239"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_crlf</B> <I>(void)</I>
-<DD><A NAME="IDX170"></A>
-Move the cursor to the start of the next screen line.
+<DD>Move the cursor to the start of the next screen line.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX240"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_show_char</B> <I>(int c)</I>
-<DD><A NAME="IDX171"></A>
-Display character <VAR>c</VAR> on <CODE>rl_outstream</CODE>.
+<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>
 
-</P>
-<P>
+<A NAME="IDX241"></A>
 <DL>
-<DT><U>Function:</U> int <B>rl_message</B> <I>(const char *, ...)</I>
-<DD><A NAME="IDX172"></A>
-The arguments are a format string as would be supplied to <CODE>printf</CODE>,
+<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.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX242"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_clear_message</B> <I>(void)</I>
-<DD><A NAME="IDX173"></A>
-Clear the message in the echo area.
+<DD>Clear the message in the echo area.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX243"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_save_prompt</B> <I>(void)</I>
-<DD><A NAME="IDX174"></A>
-Save the local Readline prompt display state in preparation for
+<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>
 
-</P>
-<P>
+<A NAME="IDX244"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_restore_prompt</B> <I>(void)</I>
-<DD><A NAME="IDX175"></A>
-Restore the local Readline prompt display state saved by the most
+<DD>Restore the local Readline prompt display state saved by the most
 recent call to <CODE>rl_save_prompt</CODE>.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX245"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_expand_prompt</B> <I>(char *prompt)</I>
-<DD><A NAME="IDX176"></A>
-Expand any special character sequences in <VAR>prompt</VAR> and set up the
+<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>
@@ -2917,376 +3232,436 @@ 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.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX246"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_set_prompt</B> <I>(const char *prompt)</I>
-<DD><A NAME="IDX177"></A>
-Make Readline use <VAR>prompt</VAR> for subsequent redisplay.  This calls
+<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>
 
-</P>
-
-
-<H3><A NAME="SEC36" HREF="readline.html#TOC36">Modifying Text</A></H3>
-
+<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#SEC43"> &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#SEC49">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="IDX247"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_insert_text</B> <I>(const char *text)</I>
-<DD><A NAME="IDX178"></A>
-Insert <VAR>text</VAR> into the line at the current cursor position.
+<DD>Insert <VAR>text</VAR> into the line at the current cursor position.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX248"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_delete_text</B> <I>(int start, int end)</I>
-<DD><A NAME="IDX179"></A>
-Delete the text between <VAR>start</VAR> and <VAR>end</VAR> in the current line.
+<DD>Delete the text between <VAR>start</VAR> and <VAR>end</VAR> in the current line.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX249"></A>
 <DL>
 <DT><U>Function:</U> char * <B>rl_copy_text</B> <I>(int start, int end)</I>
-<DD><A NAME="IDX180"></A>
-Return a copy of the text between <VAR>start</VAR> and <VAR>end</VAR> in
+<DD>Return a copy of the text between <VAR>start</VAR> and <VAR>end</VAR> in
 the current line.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX250"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_kill_text</B> <I>(int start, int end)</I>
-<DD><A NAME="IDX181"></A>
-Copy the text between <VAR>start</VAR> and <VAR>end</VAR> in the current line
+<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>
 
-</P>
-<P>
+<A NAME="IDX251"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_push_macro_input</B> <I>(char *macro)</I>
-<DD><A NAME="IDX182"></A>
-Cause <VAR>macro</VAR> to be inserted into the line, as if it had been invoked
+<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>
 
-</P>
-
-
-<H3><A NAME="SEC37" HREF="readline.html#TOC37">Character Input</A></H3>
-
+<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#SEC43"> &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#SEC49">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="IDX252"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_read_key</B> <I>(void)</I>
-<DD><A NAME="IDX183"></A>
-Return the next character available from Readline's current input stream.
+<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">Readline Variables</A>)
+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>
 
-</P>
-<P>
+<A NAME="IDX253"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_getc</B> <I>(FILE *stream)</I>
-<DD><A NAME="IDX184"></A>
-Return the next character available from <VAR>stream</VAR>, which is assumed to
+<DD>Return the next character available from <VAR>stream</VAR>, which is assumed to
 be the keyboard.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX254"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_stuff_char</B> <I>(int c)</I>
-<DD><A NAME="IDX185"></A>
-Insert <VAR>c</VAR> into the Readline input stream.  It will be "read"
+<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>.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX255"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_execute_next</B> <I>(int c)</I>
-<DD><A NAME="IDX186"></A>
-Make <VAR>c</VAR> be the next command to be executed when <CODE>rl_read_key()</CODE>
+<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>
 
-</P>
-<P>
+<A NAME="IDX256"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_clear_pending_input</B> <I>(void)</I>
-<DD><A NAME="IDX187"></A>
-Unset <VAR>rl_pending_input</VAR>, effectively negating the effect of any
+<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>
 
-</P>
-<P>
+<A NAME="IDX257"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_set_keyboard_input_timeout</B> <I>(int u)</I>
-<DD><A NAME="IDX188"></A>
-While waiting for keyboard input in <CODE>rl_read_key()</CODE>, Readline will
+<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>.  The default waiting period is
 one-tenth of a second.  Returns the old timeout value.
 </DL>
+</P><P>
 
-</P>
-
-
-<H3><A NAME="SEC38" HREF="readline.html#TOC38">Terminal Management</A></H3>
-
+<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#SEC43"> &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#SEC43"> &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#SEC49">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="IDX258"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_prep_terminal</B> <I>(int meta_flag)</I>
-<DD><A NAME="IDX189"></A>
-Modify the terminal settings for Readline's use, so <CODE>readline()</CODE>
+<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>
 
-</P>
-<P>
+<A NAME="IDX259"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_deprep_terminal</B> <I>(void)</I>
-<DD><A NAME="IDX190"></A>
-Undo the effects of <CODE>rl_prep_terminal()</CODE>, leaving the terminal in
+<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>
 
-</P>
-<P>
+<A NAME="IDX260"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_tty_set_default_bindings</B> <I>(Keymap kmap)</I>
-<DD><A NAME="IDX191"></A>
-Read the operating system's terminal editing characters (as would be displayed
+<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>
 
-</P>
-<P>
+<A NAME="IDX261"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_reset_terminal</B> <I>(const char *terminal_name)</I>
-<DD><A NAME="IDX192"></A>
-Reinitialize Readline's idea of the terminal settings using
+<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>
 
-</P>
-
-
-<H3><A NAME="SEC39" HREF="readline.html#TOC39">Utility Functions</A></H3>
-
+<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#SEC43"> &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#SEC49">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="IDX262"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_extend_line_buffer</B> <I>(int len)</I>
-<DD><A NAME="IDX193"></A>
-Ensure that <CODE>rl_line_buffer</CODE> has enough space to hold <VAR>len</VAR>
+<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>
 
-</P>
-<P>
+<A NAME="IDX263"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_initialize</B> <I>(void)</I>
-<DD><A NAME="IDX194"></A>
-Initialize or re-initialize Readline's internal state.
+<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>
 
-</P>
-<P>
+<A NAME="IDX264"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_ding</B> <I>(void)</I>
-<DD><A NAME="IDX195"></A>
-Ring the terminal bell, obeying the setting of <CODE>bell-style</CODE>.
+<DD>Ring the terminal bell, obeying the setting of <CODE>bell-style</CODE>.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX265"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_alphabetic</B> <I>(int c)</I>
-<DD><A NAME="IDX196"></A>
-Return 1 if <VAR>c</VAR> is an alphabetic character.
+<DD>Return 1 if <VAR>c</VAR> is an alphabetic character.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX266"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_display_match_list</B> <I>(char **matches, int len, int max)</I>
-<DD><A NAME="IDX197"></A>
-A convenience function for displaying a list of strings in
+<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">Readline Init File Syntax</A>).
+matches are displayed (see section <A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A>).
 </DL>
+</P><P>
 
-</P>
-<P>
 The following are implemented as macros, defined in <CODE>chardefs.h</CODE>.
 Applications should refrain from using them.
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX267"></A>
 <DL>
 <DT><U>Function:</U> int <B>_rl_uppercase_p</B> <I>(int c)</I>
-<DD><A NAME="IDX198"></A>
-Return 1 if <VAR>c</VAR> is an uppercase alphabetic character.
+<DD>Return 1 if <VAR>c</VAR> is an uppercase alphabetic character.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX268"></A>
 <DL>
 <DT><U>Function:</U> int <B>_rl_lowercase_p</B> <I>(int c)</I>
-<DD><A NAME="IDX199"></A>
-Return 1 if <VAR>c</VAR> is a lowercase alphabetic character.
+<DD>Return 1 if <VAR>c</VAR> is a lowercase alphabetic character.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX269"></A>
 <DL>
 <DT><U>Function:</U> int <B>_rl_digit_p</B> <I>(int c)</I>
-<DD><A NAME="IDX200"></A>
-Return 1 if <VAR>c</VAR> is a numeric character.
+<DD>Return 1 if <VAR>c</VAR> is a numeric character.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX270"></A>
 <DL>
 <DT><U>Function:</U> int <B>_rl_to_upper</B> <I>(int c)</I>
-<DD><A NAME="IDX201"></A>
-If <VAR>c</VAR> is a lowercase alphabetic character, return the corresponding
+<DD>If <VAR>c</VAR> is a lowercase alphabetic character, return the corresponding
 uppercase character.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX271"></A>
 <DL>
 <DT><U>Function:</U> int <B>_rl_to_lower</B> <I>(int c)</I>
-<DD><A NAME="IDX202"></A>
-If <VAR>c</VAR> is an uppercase alphabetic character, return the corresponding
+<DD>If <VAR>c</VAR> is an uppercase alphabetic character, return the corresponding
 lowercase character.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX272"></A>
 <DL>
 <DT><U>Function:</U> int <B>_rl_digit_value</B> <I>(int c)</I>
-<DD><A NAME="IDX203"></A>
-If <VAR>c</VAR> is a number, return the value it represents.
-</DL>
-
-</P>
-
-
-<H3><A NAME="SEC40" HREF="readline.html#TOC40">Miscellaneous Functions</A></H3>
-
-<P>
+<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#SEC43"> &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#SEC49">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="IDX273"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_macro_bind</B> <I>(const char *keyseq, const char *macro, Keymap map)</I>
-<DD><A NAME="IDX204"></A>
-Bind the key sequence <VAR>keyseq</VAR> to invoke the macro <VAR>macro</VAR>.
+<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>
 
-</P>
-<P>
+<A NAME="IDX274"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_macro_dumper</B> <I>(int readable)</I>
-<DD><A NAME="IDX205"></A>
-Print the key sequences bound to macros and their values, using
+<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>
 
-</P>
-<P>
+<A NAME="IDX275"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_variable_bind</B> <I>(const char *variable, const char *value)</I>
-<DD><A NAME="IDX206"></A>
-Make the Readline variable <VAR>variable</VAR> have <VAR>value</VAR>.
+<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">Readline Init File Syntax</A>).
+file (see section <A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A>).
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX276"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_variable_dumper</B> <I>(int readable)</I>
-<DD><A NAME="IDX207"></A>
-Print the readline variable names and their current values
+<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>
 
-</P>
-<P>
+<A NAME="IDX277"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_set_paren_blink_timeout</B> <I>(int u)</I>
-<DD><A NAME="IDX208"></A>
-Set the time interval (in microseconds) that Readline waits when showing
+<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>
-
-
-<H3><A NAME="SEC41" HREF="readline.html#TOC41">Alternate Interface</A></H3>
-
+</P><P>
+
+<A NAME="IDX278"></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="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#SEC43"> &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#SEC49">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 accomodate 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>
 
-</P>
-<P>
+<A NAME="IDX279"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_callback_handler_install</B> <I>(const char *prompt, rl_vcpfunc_t *lhandler)</I>
-<DD><A NAME="IDX209"></A>
-Set up the terminal for readline I/O and display the initial
+<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 function to call when a complete line of input has been entered.
 The function takes the text of the line as an argument.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX280"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_callback_read_char</B> <I>(void)</I>
-<DD><A NAME="IDX210"></A>
-Whenever an application determines that keyboard input is available, it
+<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>
@@ -3294,33 +3669,43 @@ function saved by <CODE>rl_callback_handler_install</CODE> to process the
 line.  <CODE>EOF</CODE> is  indicated by calling <VAR>lhandler</VAR> with a
 <CODE>NULL</CODE> line.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX281"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_callback_handler_remove</B> <I>(void)</I>
-<DD><A NAME="IDX211"></A>
-Restore the terminal to its initial state and remove the line handler.
+<DD>Restore the terminal to its initial state and remove the line handler.
 This may be called from within a callback as well as independently.
 </DL>
-
-</P>
-
-
-<H3><A NAME="SEC42" HREF="readline.html#TOC42">A Readline Example</A></H3>
-
+</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#SEC43"> &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#SEC49">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>
 
-</P>
-
-<PRE>
-/* Invert the case of the COUNT following characters. */
+<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;
@@ -3374,13 +3759,26 @@ invert_case_line (count, key)
   rl_point = (direction == 1) ? end - 1 : start;
   return (0);
 }
-</PRE>
-
-
-
-<H2><A NAME="SEC43" HREF="readline.html#TOC43">Readline Signal Handling</A></H2>
-
+</pre></td></tr></table></P><P>
+
+<A NAME="Readline Signal Handling"></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#SEC44"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> 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#SEC49">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::SEC43::-->
 <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,
@@ -3390,9 +3788,8 @@ 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>
 
-</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>SIGALRM</CODE>, <CODE>SIGTSTP</CODE>, <CODE>SIGTTIN</CODE>, and <CODE>SIGTTOU</CODE>).
@@ -3406,9 +3803,8 @@ 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>
 
-</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>
@@ -3420,173 +3816,182 @@ 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>
 
-</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>
 
-</P>
-<P>
+<A NAME="IDX282"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_catch_signals</B>
-<DD><A NAME="IDX212"></A>
-If this variable is non-zero, Readline will install signal handlers for
+<DD>If this variable is non-zero, Readline will install signal handlers for
 <CODE>SIGINT</CODE>, <CODE>SIGQUIT</CODE>, <CODE>SIGTERM</CODE>, <CODE>SIGALRM</CODE>,
 <CODE>SIGTSTP</CODE>, <CODE>SIGTTIN</CODE>, and <CODE>SIGTTOU</CODE>.
+</P><P>
 
-</P>
-<P>
 The default value of <CODE>rl_catch_signals</CODE> is 1.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX283"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_catch_sigwinch</B>
-<DD><A NAME="IDX213"></A>
-If this variable is non-zero, Readline will install a signal handler for
+<DD>If this variable is non-zero, Readline will install a signal handler for
 <CODE>SIGWINCH</CODE>.
+</P><P>
 
-</P>
-<P>
 The default value of <CODE>rl_catch_sigwinch</CODE> is 1.
 </DL>
+</P><P>
 
-</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>
 
-</P>
-<P>
+<A NAME="IDX284"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_cleanup_after_signal</B> <I>(void)</I>
-<DD><A NAME="IDX214"></A>
-This function will reset the state of the terminal to what it was before
+<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>
 
-</P>
-<P>
+<A NAME="IDX285"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_free_line_state</B> <I>(void)</I>
-<DD><A NAME="IDX215"></A>
-This will free any partial state associated with the current input line
+<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>
 
-</P>
-<P>
+<A NAME="IDX286"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_reset_after_signal</B> <I>(void)</I>
-<DD><A NAME="IDX216"></A>
-This will reinitialize the terminal and reinstall any Readline signal
+<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>
 
-</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>
 
-</P>
-<P>
+<A NAME="IDX287"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_resize_terminal</B> <I>(void)</I>
-<DD><A NAME="IDX217"></A>
-Update Readline's internal screen size by reading values from the kernel.
+<DD>Update Readline's internal screen size by reading values from the kernel.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX288"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_set_screen_size</B> <I>(int rows, int cols)</I>
-<DD><A NAME="IDX218"></A>
-Set Readline's idea of the terminal size to <VAR>rows</VAR> rows and
+<DD>Set Readline's idea of the terminal size to <VAR>rows</VAR> rows and
 <VAR>cols</VAR> columns.
 </DL>
+</P><P>
 
-</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>
 
-</P>
-<P>
+<A NAME="IDX289"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_get_screen_size</B> <I>(int *rows, int *cols)</I>
-<DD><A NAME="IDX219"></A>
-Return Readline's idea of the terminal's size in the
+<DD>Return Readline's idea of the terminal's size in the
 variables pointed to by the arguments.
 </DL>
+</P><P>
 
-</P>
-<P>
 The following functions install and remove Readline's signal handlers.
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX290"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_set_signals</B> <I>(void)</I>
-<DD><A NAME="IDX220"></A>
-Install Readline's signal handler for <CODE>SIGINT</CODE>, <CODE>SIGQUIT</CODE>,
+<DD>Install Readline's signal handler for <CODE>SIGINT</CODE>, <CODE>SIGQUIT</CODE>,
 <CODE>SIGTERM</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>
 
-</P>
-<P>
+<A NAME="IDX291"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_clear_signals</B> <I>(void)</I>
-<DD><A NAME="IDX221"></A>
-Remove all of the Readline signal handlers installed by
+<DD>Remove all of the Readline signal handlers installed by
 <CODE>rl_set_signals()</CODE>.
 </DL>
-
-</P>
-
-
-<H2><A NAME="SEC44" HREF="readline.html#TOC44">Custom Completers</A></H2>
-
+</P><P>
+
+<A NAME="Custom Completers"></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">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> 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#SEC49">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::SEC44::-->
 <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>
-
-<UL>
-<LI><A HREF="readline.html#SEC45">How Completing Works</A>: The logic used to do completion.
-<LI><A HREF="readline.html#SEC46">Completion Functions</A>: Functions provided by Readline.
-<LI><A HREF="readline.html#SEC47">Completion Variables</A>: Variables which control completion.
-<LI><A HREF="readline.html#SEC48">A Short Completion Example</A>: An example of writing completer subroutines.
-</UL>
-
-
-
-<H3><A NAME="SEC45" HREF="readline.html#TOC45">How Completing Works</A></H3>
-
+</P><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> 
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC45">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#SEC46">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#SEC47">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#SEC48">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="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#SEC44"> 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#SEC49">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::SEC45::-->
 <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
@@ -3595,16 +4000,13 @@ 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>
 
-</P>
-<P>
 There are three major functions used to perform completion:
-
-</P>
+</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>.
@@ -3613,17 +4015,17 @@ It isolates the word to be completed and calls
 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>.
@@ -3637,148 +4039,165 @@ 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.
+<P>
 
 </OL>
-
 <P>
+
+<A NAME="IDX292"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_complete</B> <I>(int ignore, int invoking_key)</I>
-<DD><A NAME="IDX222"></A>
-Complete the word at or before point.  You have supplied the function
+<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>
 
-</P>
-<P>
+<A NAME="IDX293"></A>
 <DL>
 <DT><U>Variable:</U> rl_compentry_func_t * <B>rl_completion_entry_function</B>
-<DD><A NAME="IDX223"></A>
-This is a pointer to the generator function for
+<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.
 </DL>
-
-</P>
-
-
-<H3><A NAME="SEC46" HREF="readline.html#TOC46">Completion Functions</A></H3>
-
+</P><P>
+
+<A NAME="Completion Functions"></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">[<A HREF="readline.html#SEC47"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> 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#SEC49">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::SEC46::-->
 <P>
+
 Here is the complete list of callable completion functions present in
 Readline.
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX294"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_complete_internal</B> <I>(int what_to_do)</I>
-<DD><A NAME="IDX224"></A>
-Complete the word at or before point.  <VAR>what_to_do</VAR> says what to do
+<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.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX295"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_complete</B> <I>(int ignore, int invoking_key)</I>
-<DD><A NAME="IDX225"></A>
-Complete the word at or before point.  You have supplied the function
+<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>
 
-</P>
-<P>
+<A NAME="IDX296"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_possible_completions</B> <I>(int count, int invoking_key)</I>
-<DD><A NAME="IDX226"></A>
-List the possible completions.  See description of <CODE>rl_complete
+<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>
 
-</P>
-<P>
+<A NAME="IDX297"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_insert_completions</B> <I>(int count, int invoking_key)</I>
-<DD><A NAME="IDX227"></A>
-Insert the list of possible completions into the line, deleting the
+<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>
 
-</P>
-<P>
+<A NAME="IDX298"></A>
 <DL>
 <DT><U>Function:</U> char ** <B>rl_completion_matches</B> <I>(const char *text, rl_compentry_func_t *entry_func)</I>
-<DD><A NAME="IDX228"></A>
-Returns an array of strings which is a list of completions for
+<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>
 
-</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>
 
-</P>
-<P>
+<A NAME="IDX299"></A>
 <DL>
 <DT><U>Function:</U> char * <B>rl_filename_completion_function</B> <I>(const char *text, int state)</I>
-<DD><A NAME="IDX229"></A>
-A generator function for filename completion in the general case.
+<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 custom
 completion functions (the Bash completion functions call this and other
 Readline functions).
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX300"></A>
 <DL>
 <DT><U>Function:</U> char * <B>rl_username_completion_function</B> <I>(const char *text, int state)</I>
-<DD><A NAME="IDX230"></A>
-A completion generator for usernames.  <VAR>text</VAR> contains a partial
+<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>
 
-</P>
-
-
-<H3><A NAME="SEC47" HREF="readline.html#TOC47">Completion Variables</A></H3>
-
+<A NAME="Completion Variables"></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#SEC44"> 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#SEC49">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::SEC47::-->
 <P>
+
+<A NAME="IDX301"></A>
 <DL>
 <DT><U>Variable:</U> rl_compentry_func_t * <B>rl_completion_entry_function</B>
-<DD><A NAME="IDX231"></A>
-A pointer to the generator function for <CODE>rl_completion_matches()</CODE>.
+<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>
 
-</P>
-<P>
+<A NAME="IDX302"></A>
 <DL>
 <DT><U>Variable:</U> rl_completion_func_t * <B>rl_attempted_completion_function</B>
-<DD><A NAME="IDX232"></A>
-A pointer to an alternative function to create matches.
+<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.
@@ -3790,13 +4209,12 @@ 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>
 
-</P>
-<P>
+<A NAME="IDX303"></A>
 <DL>
 <DT><U>Variable:</U> rl_quote_func_t * <B>rl_filename_quoting_function</B>
-<DD><A NAME="IDX233"></A>
-A pointer to a function that will quote a filename in an
+<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
@@ -3808,13 +4226,12 @@ 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>
 
-</P>
-<P>
+<A NAME="IDX304"></A>
 <DL>
 <DT><U>Variable:</U> rl_dequote_func_t * <B>rl_filename_dequoting_function</B>
-<DD><A NAME="IDX234"></A>
-A pointer to a function that will remove application-specific quoting
+<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
@@ -3822,13 +4239,12 @@ 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>
 
-</P>
-<P>
+<A NAME="IDX305"></A>
 <DL>
 <DT><U>Variable:</U> rl_linebuf_func_t * <B>rl_char_is_quoted_p</B>
-<DD><A NAME="IDX235"></A>
-A pointer to a function to call that determines whether or not a specific
+<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
@@ -3836,84 +4252,76 @@ 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>
 
-</P>
-<P>
+<A NAME="IDX306"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_completion_query_items</B>
-<DD><A NAME="IDX236"></A>
-Up to this many items will be displayed in response to a
+<DD>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.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX307"></A>
 <DL>
 <DT><U>Variable:</U> const char * <B>rl_basic_word_break_characters</B>
-<DD><A NAME="IDX237"></A>
-The basic list of characters that signal a break between words for the
+<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\"\\'`@$&#62;&#60;=;|&#38;{("</CODE>.
+<CODE>" \t\n\"\\'`@$>&#60;=;|&#38;{("</CODE>.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX308"></A>
 <DL>
 <DT><U>Variable:</U> const char * <B>rl_basic_quote_characters</B>
-<DD><A NAME="IDX238"></A>
-A list of quote characters which can cause a word break.
+<DD>A list of quote characters which can cause a word break.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX309"></A>
 <DL>
 <DT><U>Variable:</U> const char * <B>rl_completer_word_break_characters</B>
-<DD><A NAME="IDX239"></A>
-The list of characters that signal a break between words for
+<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>
 
-</P>
-<P>
+<A NAME="IDX310"></A>
 <DL>
 <DT><U>Variable:</U> const char * <B>rl_completer_quote_characters</B>
-<DD><A NAME="IDX240"></A>
-A list of characters which can be used to quote a substring of the line.
+<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>
 
-</P>
-<P>
+<A NAME="IDX311"></A>
 <DL>
 <DT><U>Variable:</U> const char * <B>rl_filename_quote_characters</B>
-<DD><A NAME="IDX241"></A>
-A list of characters that cause a filename to be quoted by the completer
+<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>
 
-</P>
-<P>
+<A NAME="IDX312"></A>
 <DL>
 <DT><U>Variable:</U> const char * <B>rl_special_prefixes</B>
-<DD><A NAME="IDX242"></A>
-The list of characters that are word break characters, but should be
+<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>
 
-</P>
-<P>
+<A NAME="IDX313"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_completion_append_character</B>
-<DD><A NAME="IDX243"></A>
-When a single completion alternative matches at the end of the command
+<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.
@@ -3921,22 +4329,20 @@ 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.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX314"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_ignore_completion_duplicates</B>
-<DD><A NAME="IDX244"></A>
-If non-zero, then duplicates in the matches are removed.
+<DD>If non-zero, then duplicates in the matches are removed.
 The default is 1.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX315"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_filename_completion_desired</B>
-<DD><A NAME="IDX245"></A>
-Non-zero means that the results of the matches are to be treated as
+<DD>Non-zero means that the results of the matches are to be treated as
 filenames.  This is <EM>always</EM> 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
@@ -3944,13 +4350,12 @@ 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>
 
-</P>
-<P>
+<A NAME="IDX316"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_filename_quoting_desired</B>
-<DD><A NAME="IDX246"></A>
-Non-zero means that the results of the matches are to be quoted using
+<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
@@ -3958,44 +4363,40 @@ 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</CODE>.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX317"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_attempted_completion_over</B>
-<DD><A NAME="IDX247"></A>
-If an application-specific completion function assigned to
+<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>
 
-</P>
-<P>
+<A NAME="IDX318"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_completion_type</B>
-<DD><A NAME="IDX248"></A>
-Set to a character describing the type of completion Readline is currently
+<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#SEC46">Completion Functions</A>) for the list of characters.
+(see section <A HREF="readline.html#SEC46">2.6.2 Completion Functions</A>) for the list of characters.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX319"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_inhibit_completion</B>
-<DD><A NAME="IDX249"></A>
-If this variable is non-zero, completion is inhibited.  The completion
+<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>
 
-</P>
-<P>
+<A NAME="IDX320"></A>
 <DL>
 <DT><U>Variable:</U> rl_compignore_func_t * <B>rl_ignore_some_completions_function</B>
-<DD><A NAME="IDX250"></A>
-This function, if defined, is called by the completer when real filename
+<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
@@ -4003,13 +4404,12 @@ 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>
 
-</P>
-<P>
+<A NAME="IDX321"></A>
 <DL>
 <DT><U>Variable:</U> rl_icppfunc_t * <B>rl_directory_completion_hook</B>
-<DD><A NAME="IDX251"></A>
-This function, if defined, is allowed to modify the directory portion
+<DD>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.
@@ -4020,13 +4420,12 @@ 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.
 </DL>
+</P><P>
 
-</P>
-<P>
+<A NAME="IDX322"></A>
 <DL>
 <DT><U>Variable:</U> rl_compdisp_func_t * <B>rl_completion_display_matches_hook</B>
-<DD><A NAME="IDX252"></A>
-If non-zero, then this is the address of a function to call when
+<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:
@@ -4038,23 +4437,34 @@ Readline provides a convenience function, <CODE>rl_display_match_list</CODE>,
 that takes care of doing the display to Readline's output stream.  That
 function may be called from this hook.
 </DL>
-
-</P>
-
-
-<H3><A NAME="SEC48" HREF="readline.html#TOC48">A Short Completion Example</A></H3>
-
+</P><P>
+
+<A NAME="A Short Completion Example"></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">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> 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#SEC49">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::SEC48::-->
 <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>
 
-</P>
-
-<PRE>
-/* fileman.c -- A tiny application which demonstrates how to use the
+<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. */
 
@@ -4488,420 +4898,876 @@ valid_argument (caller, arg)
 
   return (1);
 }
-</PRE>
-
-
-
-<H1><A NAME="SEC49" HREF="readline.html#TOC49">Concept Index</A></H1>
-<P>
-Jump to:
-<A HREF="#cindex_c">c</A>
--
-<A HREF="#cindex_e">e</A>
--
-<A HREF="#cindex_i">i</A>
--
-<A HREF="#cindex_k">k</A>
--
-<A HREF="#cindex_n">n</A>
--
-<A HREF="#cindex_r">r</A>
--
-<A HREF="#cindex_v">v</A>
--
-<A HREF="#cindex_y">y</A>
-<P>
-<H2><A NAME="cindex_c">c</A></H2>
-<DIR>
-<LI><A HREF="readline.html#IDX3">command editing</A>
-</DIR>
-<H2><A NAME="cindex_e">e</A></H2>
-<DIR>
-<LI><A HREF="readline.html#IDX4">editing command lines</A>
-</DIR>
-<H2><A NAME="cindex_i">i</A></H2>
-<DIR>
-<LI><A HREF="readline.html#IDX8">initialization file, readline</A>
-<LI><A HREF="readline.html#IDX1">interaction, readline</A>
-</DIR>
-<H2><A NAME="cindex_k">k</A></H2>
-<DIR>
-<LI><A HREF="readline.html#IDX7">kill ring</A>
-<LI><A HREF="readline.html#IDX5">killing text</A>
-</DIR>
-<H2><A NAME="cindex_n">n</A></H2>
-<DIR>
-<LI><A HREF="readline.html#IDX2">notation, readline</A>
-</DIR>
-<H2><A NAME="cindex_r">r</A></H2>
-<DIR>
-<LI><A HREF="readline.html#IDX99">readline, function</A>
-</DIR>
-<H2><A NAME="cindex_v">v</A></H2>
-<DIR>
-<LI><A HREF="readline.html#IDX9">variables, readline</A>
-</DIR>
-<H2><A NAME="cindex_y">y</A></H2>
-<DIR>
-<LI><A HREF="readline.html#IDX6">yanking text</A>
-</DIR>
-
-</P>
-
-
-<H1><A NAME="SEC50" HREF="readline.html#TOC50">Function and Variable Index</A></H1>
-<P>
-Jump to:
-<A HREF="#findex__">_</A>
--
-<A HREF="#findex_a">a</A>
--
-<A HREF="#findex_b">b</A>
--
-<A HREF="#findex_c">c</A>
--
-<A HREF="#findex_d">d</A>
--
-<A HREF="#findex_e">e</A>
--
-<A HREF="#findex_f">f</A>
--
-<A HREF="#findex_h">h</A>
--
-<A HREF="#findex_i">i</A>
--
-<A HREF="#findex_k">k</A>
--
-<A HREF="#findex_m">m</A>
--
-<A HREF="#findex_n">n</A>
--
-<A HREF="#findex_o">o</A>
--
-<A HREF="#findex_p">p</A>
--
-<A HREF="#findex_q">q</A>
--
-<A HREF="#findex_r">r</A>
--
-<A HREF="#findex_s">s</A>
--
-<A HREF="#findex_t">t</A>
--
-<A HREF="#findex_u">u</A>
--
-<A HREF="#findex_v">v</A>
--
-<A HREF="#findex_y">y</A>
-<P>
-<H2><A NAME="findex__">_</A></H2>
-<DIR>
-<LI><A HREF="readline.html#IDX200">_rl_digit_p</A>
-<LI><A HREF="readline.html#IDX203">_rl_digit_value</A>
-<LI><A HREF="readline.html#IDX199">_rl_lowercase_p</A>
-<LI><A HREF="readline.html#IDX202">_rl_to_lower</A>
-<LI><A HREF="readline.html#IDX201">_rl_to_upper</A>
-<LI><A HREF="readline.html#IDX198">_rl_uppercase_p</A>
-</DIR>
-<H2><A NAME="findex_a">a</A></H2>
-<DIR>
-<LI><A HREF="readline.html#IDX84">abort (C-g)</A>
-<LI><A HREF="readline.html#IDX35">accept-line (Newline or Return)</A>
-</DIR>
-<H2><A NAME="findex_b">b</A></H2>
-<DIR>
-<LI><A HREF="readline.html#IDX30">backward-char (C-b)</A>
-<LI><A HREF="readline.html#IDX49">backward-delete-char (Rubout)</A>
-<LI><A HREF="readline.html#IDX60">backward-kill-line (C-x Rubout)</A>
-<LI><A HREF="readline.html#IDX64">backward-kill-word (M-<KBD>DEL</KBD>)</A>
-<LI><A HREF="readline.html#IDX32">backward-word (M-b)</A>
-<LI><A HREF="readline.html#IDX38">beginning-of-history (M-&#38;#60;)</A>
-<LI><A HREF="readline.html#IDX27">beginning-of-line (C-a)</A>
-<LI><A HREF="readline.html#IDX10">bell-style</A>
-</DIR>
-<H2><A NAME="findex_c">c</A></H2>
-<DIR>
-<LI><A HREF="readline.html#IDX82">call-last-kbd-macro (C-x e)</A>
-<LI><A HREF="readline.html#IDX58">capitalize-word (M-c)</A>
-<LI><A HREF="readline.html#IDX92">character-search (C-])</A>
-<LI><A HREF="readline.html#IDX93">character-search-backward (M-C-])</A>
-<LI><A HREF="readline.html#IDX33">clear-screen (C-l)</A>
-<LI><A HREF="readline.html#IDX11">comment-begin</A>
-<LI><A HREF="readline.html#IDX75">complete (<KBD>TAB</KBD>)</A>
-<LI><A HREF="readline.html#IDX12">completion-query-items</A>
-<LI><A HREF="readline.html#IDX13">convert-meta</A>
-<LI><A HREF="readline.html#IDX69">copy-backward-word ()</A>
-<LI><A HREF="readline.html#IDX70">copy-forward-word ()</A>
-<LI><A HREF="readline.html#IDX68">copy-region-as-kill ()</A>
-</DIR>
-<H2><A NAME="findex_d">d</A></H2>
-<DIR>
-<LI><A HREF="readline.html#IDX48">delete-char (C-d)</A>
-<LI><A HREF="readline.html#IDX79">delete-char-or-list ()</A>
-<LI><A HREF="readline.html#IDX66">delete-horizontal-space ()</A>
-<LI><A HREF="readline.html#IDX73">digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, ... <KBD>M--</KBD>)</A>
-<LI><A HREF="readline.html#IDX14">disable-completion</A>
-<LI><A HREF="readline.html#IDX85">do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, ...)</A>
-<LI><A HREF="readline.html#IDX57">downcase-word (M-l)</A>
-<LI><A HREF="readline.html#IDX95">dump-functions ()</A>
-<LI><A HREF="readline.html#IDX97">dump-macros ()</A>
-<LI><A HREF="readline.html#IDX96">dump-variables ()</A>
-</DIR>
-<H2><A NAME="findex_e">e</A></H2>
-<DIR>
-<LI><A HREF="readline.html#IDX15">editing-mode</A>
-<LI><A HREF="readline.html#IDX16">enable-keypad</A>
-<LI><A HREF="readline.html#IDX81">end-kbd-macro (C-x ))</A>
-<LI><A HREF="readline.html#IDX39">end-of-history (M-&#38;#62;)</A>
-<LI><A HREF="readline.html#IDX28">end-of-line (C-e)</A>
-<LI><A HREF="readline.html#IDX91">exchange-point-and-mark (C-x C-x)</A>
-<LI><A HREF="readline.html#IDX17">expand-tilde</A>
-</DIR>
-<H2><A NAME="findex_f">f</A></H2>
-<DIR>
-<LI><A HREF="readline.html#IDX50">forward-backward-delete-char ()</A>
-<LI><A HREF="readline.html#IDX29">forward-char (C-f)</A>
-<LI><A HREF="readline.html#IDX41">forward-search-history (C-s)</A>
-<LI><A HREF="readline.html#IDX31">forward-word (M-f)</A>
-</DIR>
-<H2><A NAME="findex_h">h</A></H2>
-<DIR>
-<LI><A HREF="readline.html#IDX45">history-search-backward ()</A>
-<LI><A HREF="readline.html#IDX44">history-search-forward ()</A>
-<LI><A HREF="readline.html#IDX18">horizontal-scroll-mode</A>
-</DIR>
-<H2><A NAME="findex_i">i</A></H2>
-<DIR>
-<LI><A HREF="readline.html#IDX19">input-meta</A>
-<LI><A HREF="readline.html#IDX94">insert-comment (M-#)</A>
-<LI><A HREF="readline.html#IDX77">insert-completions (M-*)</A>
-<LI><A HREF="readline.html#IDX21">isearch-terminators</A>
-</DIR>
-<H2><A NAME="findex_k">k</A></H2>
-<DIR>
-<LI><A HREF="readline.html#IDX22">keymap</A>
-<LI><A HREF="readline.html#IDX59">kill-line (C-k)</A>
-<LI><A HREF="readline.html#IDX67">kill-region ()</A>
-<LI><A HREF="readline.html#IDX62">kill-whole-line ()</A>
-<LI><A HREF="readline.html#IDX63">kill-word (M-d)</A>
-</DIR>
-<H2><A NAME="findex_m">m</A></H2>
-<DIR>
-<LI><A HREF="readline.html#IDX23">mark-modified-lines</A>
-<LI><A HREF="readline.html#IDX78">menu-complete ()</A>
-<LI><A HREF="readline.html#IDX20">meta-flag</A>
-</DIR>
-<H2><A NAME="findex_n">n</A></H2>
-<DIR>
-<LI><A HREF="readline.html#IDX37">next-history (C-n)</A>
-<LI><A HREF="readline.html#IDX43">non-incremental-forward-search-history (M-n)</A>
-<LI><A HREF="readline.html#IDX42">non-incremental-reverse-search-history (M-p)</A>
-</DIR>
-<H2><A NAME="findex_o">o</A></H2>
-<DIR>
-<LI><A HREF="readline.html#IDX24">output-meta</A>
-</DIR>
-<H2><A NAME="findex_p">p</A></H2>
-<DIR>
-<LI><A HREF="readline.html#IDX76">possible-completions (M-?)</A>
-<LI><A HREF="readline.html#IDX86">prefix-meta (<KBD>ESC</KBD>)</A>
-<LI><A HREF="readline.html#IDX36">previous-history (C-p)</A>
-</DIR>
-<H2><A NAME="findex_q">q</A></H2>
-<DIR>
-<LI><A HREF="readline.html#IDX51">quoted-insert (C-q or C-v)</A>
-</DIR>
-<H2><A NAME="findex_r">r</A></H2>
-<DIR>
-<LI><A HREF="readline.html#IDX83">re-read-init-file (C-x C-r)</A>
-<LI><A HREF="readline.html#IDX98">readline</A>
-<LI><A HREF="readline.html#IDX34">redraw-current-line ()</A>
-<LI><A HREF="readline.html#IDX40">reverse-search-history (C-r)</A>
-<LI><A HREF="readline.html#IDX88">revert-line (M-r)</A>
-<LI><A HREF="readline.html#IDX132">rl_add_defun</A>
-<LI><A HREF="readline.html#IDX158">rl_add_funmap_entry</A>
-<LI><A HREF="readline.html#IDX161">rl_add_undo</A>
-<LI><A HREF="readline.html#IDX196">rl_alphabetic</A>
-<LI><A HREF="readline.html#IDX110">rl_already_prompted</A>
-<LI><A HREF="readline.html#IDX232">rl_attempted_completion_function</A>
-<LI><A HREF="readline.html#IDX247">rl_attempted_completion_over</A>
-<LI><A HREF="readline.html#IDX238">rl_basic_quote_characters</A>
-<LI><A HREF="readline.html#IDX237">rl_basic_word_break_characters</A>
-<LI><A HREF="readline.html#IDX159">rl_begin_undo_group</A>
-<LI><A HREF="readline.html#IDX141">rl_bind_key</A>
-<LI><A HREF="readline.html#IDX142">rl_bind_key_in_map</A>
-<LI><A HREF="readline.html#IDX126">rl_binding_keymap</A>
-<LI><A HREF="readline.html#IDX209">rl_callback_handler_install</A>
-<LI><A HREF="readline.html#IDX211">rl_callback_handler_remove</A>
-<LI><A HREF="readline.html#IDX210">rl_callback_read_char</A>
-<LI><A HREF="readline.html#IDX212">rl_catch_signals</A>
-<LI><A HREF="readline.html#IDX213">rl_catch_sigwinch</A>
-<LI><A HREF="readline.html#IDX235">rl_char_is_quoted_p</A>
-<LI><A HREF="readline.html#IDX214">rl_cleanup_after_signal</A>
-<LI><A HREF="readline.html#IDX173">rl_clear_message</A>
-<LI><A HREF="readline.html#IDX187">rl_clear_pending_input</A>
-<LI><A HREF="readline.html#IDX221">rl_clear_signals</A>
-<LI><A HREF="readline.html#IDX222">rl_complete</A>, <A HREF="readline.html#IDX225">rl_complete</A>
-<LI><A HREF="readline.html#IDX224">rl_complete_internal</A>
-<LI><A HREF="readline.html#IDX240">rl_completer_quote_characters</A>
-<LI><A HREF="readline.html#IDX239">rl_completer_word_break_characters</A>
-<LI><A HREF="readline.html#IDX243">rl_completion_append_character</A>
-<LI><A HREF="readline.html#IDX252">rl_completion_display_matches_hook</A>
-<LI><A HREF="readline.html#IDX223">rl_completion_entry_function</A>, <A HREF="readline.html#IDX231">rl_completion_entry_function</A>
-<LI><A HREF="readline.html#IDX228">rl_completion_matches</A>
-<LI><A HREF="readline.html#IDX236">rl_completion_query_items</A>
-<LI><A HREF="readline.html#IDX248">rl_completion_type</A>
-<LI><A HREF="readline.html#IDX134">rl_copy_keymap</A>
-<LI><A HREF="readline.html#IDX180">rl_copy_text</A>
-<LI><A HREF="readline.html#IDX170">rl_crlf</A>
-<LI><A HREF="readline.html#IDX179">rl_delete_text</A>
-<LI><A HREF="readline.html#IDX124">rl_deprep_term_function</A>
-<LI><A HREF="readline.html#IDX190">rl_deprep_terminal</A>
-<LI><A HREF="readline.html#IDX195">rl_ding</A>
-<LI><A HREF="readline.html#IDX251">rl_directory_completion_hook</A>
-<LI><A HREF="readline.html#IDX136">rl_discard_keymap</A>
-<LI><A HREF="readline.html#IDX107">rl_dispatching</A>
-<LI><A HREF="readline.html#IDX197">rl_display_match_list</A>
-<LI><A HREF="readline.html#IDX163">rl_do_undo</A>
-<LI><A HREF="readline.html#IDX104">rl_done</A>
-<LI><A HREF="readline.html#IDX131">rl_editing_mode</A>
-<LI><A HREF="readline.html#IDX102">rl_end</A>
-<LI><A HREF="readline.html#IDX160">rl_end_undo_group</A>
-<LI><A HREF="readline.html#IDX108">rl_erase_empty_line</A>
-<LI><A HREF="readline.html#IDX120">rl_event_hook</A>
-<LI><A HREF="readline.html#IDX186">rl_execute_next</A>
-<LI><A HREF="readline.html#IDX125">rl_executing_keymap</A>
-<LI><A HREF="readline.html#IDX127">rl_executing_macro</A>
-<LI><A HREF="readline.html#IDX176">rl_expand_prompt</A>
-<LI><A HREF="readline.html#IDX129">rl_explicit_arg</A>
-<LI><A HREF="readline.html#IDX193">rl_extend_line_buffer</A>
-<LI><A HREF="readline.html#IDX245">rl_filename_completion_desired</A>
-<LI><A HREF="readline.html#IDX229">rl_filename_completion_function</A>
-<LI><A HREF="readline.html#IDX234">rl_filename_dequoting_function</A>
-<LI><A HREF="readline.html#IDX241">rl_filename_quote_characters</A>
-<LI><A HREF="readline.html#IDX246">rl_filename_quoting_desired</A>
-<LI><A HREF="readline.html#IDX233">rl_filename_quoting_function</A>
-<LI><A HREF="readline.html#IDX166">rl_forced_update_display</A>
-<LI><A HREF="readline.html#IDX215">rl_free_line_state</A>
-<LI><A HREF="readline.html#IDX162">rl_free_undo_list</A>
-<LI><A HREF="readline.html#IDX155">rl_function_dumper</A>
-<LI><A HREF="readline.html#IDX152">rl_function_of_keyseq</A>
-<LI><A HREF="readline.html#IDX157">rl_funmap_names</A>
-<LI><A HREF="readline.html#IDX148">rl_generic_bind</A>
-<LI><A HREF="readline.html#IDX137">rl_get_keymap</A>
-<LI><A HREF="readline.html#IDX139">rl_get_keymap_by_name</A>
-<LI><A HREF="readline.html#IDX140">rl_get_keymap_name</A>
-<LI><A HREF="readline.html#IDX219">rl_get_screen_size</A>
-<LI><A HREF="readline.html#IDX184">rl_getc</A>
-<LI><A HREF="readline.html#IDX121">rl_getc_function</A>
-<LI><A HREF="readline.html#IDX112">rl_gnu_readline_p</A>
-<LI><A HREF="readline.html#IDX244">rl_ignore_completion_duplicates</A>
-<LI><A HREF="readline.html#IDX250">rl_ignore_some_completions_function</A>
-<LI><A HREF="readline.html#IDX249">rl_inhibit_completion</A>
-<LI><A HREF="readline.html#IDX194">rl_initialize</A>
-<LI><A HREF="readline.html#IDX227">rl_insert_completions</A>
-<LI><A HREF="readline.html#IDX178">rl_insert_text</A>
-<LI><A HREF="readline.html#IDX115">rl_instream</A>
-<LI><A HREF="readline.html#IDX153">rl_invoking_keyseqs</A>
-<LI><A HREF="readline.html#IDX154">rl_invoking_keyseqs_in_map</A>
-<LI><A HREF="readline.html#IDX181">rl_kill_text</A>
-<LI><A HREF="readline.html#IDX117">rl_last_func</A>
-<LI><A HREF="readline.html#IDX111">rl_library_version</A>
-<LI><A HREF="readline.html#IDX100">rl_line_buffer</A>
-<LI><A HREF="readline.html#IDX156">rl_list_funmap_names</A>
-<LI><A HREF="readline.html#IDX204">rl_macro_bind</A>
-<LI><A HREF="readline.html#IDX205">rl_macro_dumper</A>
-<LI><A HREF="readline.html#IDX133">rl_make_bare_keymap</A>
-<LI><A HREF="readline.html#IDX135">rl_make_keymap</A>
-<LI><A HREF="readline.html#IDX103">rl_mark</A>
-<LI><A HREF="readline.html#IDX172">rl_message</A>
-<LI><A HREF="readline.html#IDX164">rl_modifying</A>
-<LI><A HREF="readline.html#IDX151">rl_named_function</A>
-<LI><A HREF="readline.html#IDX105">rl_num_chars_to_read</A>
-<LI><A HREF="readline.html#IDX130">rl_numeric_arg</A>
-<LI><A HREF="readline.html#IDX167">rl_on_new_line</A>
-<LI><A HREF="readline.html#IDX168">rl_on_new_line_with_prompt</A>
-<LI><A HREF="readline.html#IDX116">rl_outstream</A>
-<LI><A HREF="readline.html#IDX149">rl_parse_and_bind</A>
-<LI><A HREF="readline.html#IDX106">rl_pending_input</A>
-<LI><A HREF="readline.html#IDX101">rl_point</A>
-<LI><A HREF="readline.html#IDX226">rl_possible_completions</A>
-<LI><A HREF="readline.html#IDX119">rl_pre_input_hook</A>
-<LI><A HREF="readline.html#IDX123">rl_prep_term_function</A>
-<LI><A HREF="readline.html#IDX189">rl_prep_terminal</A>
-<LI><A HREF="readline.html#IDX109">rl_prompt</A>
-<LI><A HREF="readline.html#IDX182">rl_push_macro_input</A>
-<LI><A HREF="readline.html#IDX150">rl_read_init_file</A>
-<LI><A HREF="readline.html#IDX183">rl_read_key</A>
-<LI><A HREF="readline.html#IDX114">rl_readline_name</A>
-<LI><A HREF="readline.html#IDX128">rl_readline_state</A>
-<LI><A HREF="readline.html#IDX165">rl_redisplay</A>
-<LI><A HREF="readline.html#IDX122">rl_redisplay_function</A>
-<LI><A HREF="readline.html#IDX216">rl_reset_after_signal</A>
-<LI><A HREF="readline.html#IDX169">rl_reset_line_state</A>
-<LI><A HREF="readline.html#IDX192">rl_reset_terminal</A>
-<LI><A HREF="readline.html#IDX217">rl_resize_terminal</A>
-<LI><A HREF="readline.html#IDX175">rl_restore_prompt</A>
-<LI><A HREF="readline.html#IDX174">rl_save_prompt</A>
-<LI><A HREF="readline.html#IDX147">rl_set_key</A>
-<LI><A HREF="readline.html#IDX188">rl_set_keyboard_input_timeout</A>
-<LI><A HREF="readline.html#IDX138">rl_set_keymap</A>
-<LI><A HREF="readline.html#IDX208">rl_set_paren_blink_timeout</A>
-<LI><A HREF="readline.html#IDX177">rl_set_prompt</A>
-<LI><A HREF="readline.html#IDX218">rl_set_screen_size</A>
-<LI><A HREF="readline.html#IDX220">rl_set_signals</A>
-<LI><A HREF="readline.html#IDX171">rl_show_char</A>
-<LI><A HREF="readline.html#IDX242">rl_special_prefixes</A>
-<LI><A HREF="readline.html#IDX118">rl_startup_hook</A>
-<LI><A HREF="readline.html#IDX185">rl_stuff_char</A>
-<LI><A HREF="readline.html#IDX113">rl_terminal_name</A>
-<LI><A HREF="readline.html#IDX191">rl_tty_set_default_bindings</A>
-<LI><A HREF="readline.html#IDX146">rl_unbind_command_in_map</A>
-<LI><A HREF="readline.html#IDX145">rl_unbind_function_in_map</A>
-<LI><A HREF="readline.html#IDX143">rl_unbind_key</A>
-<LI><A HREF="readline.html#IDX144">rl_unbind_key_in_map</A>
-<LI><A HREF="readline.html#IDX230">rl_username_completion_function</A>
-<LI><A HREF="readline.html#IDX206">rl_variable_bind</A>
-<LI><A HREF="readline.html#IDX207">rl_variable_dumper</A>
-</DIR>
-<H2><A NAME="findex_s">s</A></H2>
-<DIR>
-<LI><A HREF="readline.html#IDX53">self-insert (a, b, A, 1, !, ...)</A>
-<LI><A HREF="readline.html#IDX90">set-mark (C-@)</A>
-<LI><A HREF="readline.html#IDX25">show-all-if-ambiguous</A>
-<LI><A HREF="readline.html#IDX80">start-kbd-macro (C-x ()</A>
-</DIR>
-<H2><A NAME="findex_t">t</A></H2>
-<DIR>
-<LI><A HREF="readline.html#IDX52">tab-insert (M-<KBD>TAB</KBD>)</A>
-<LI><A HREF="readline.html#IDX89">tilde-expand (M-~)</A>
-<LI><A HREF="readline.html#IDX54">transpose-chars (C-t)</A>
-<LI><A HREF="readline.html#IDX55">transpose-words (M-t)</A>
-</DIR>
-<H2><A NAME="findex_u">u</A></H2>
-<DIR>
-<LI><A HREF="readline.html#IDX87">undo (C-_ or C-x C-u)</A>
-<LI><A HREF="readline.html#IDX74">universal-argument ()</A>
-<LI><A HREF="readline.html#IDX61">unix-line-discard (C-u)</A>
-<LI><A HREF="readline.html#IDX65">unix-word-rubout (C-w)</A>
-<LI><A HREF="readline.html#IDX56">upcase-word (M-u)</A>
-</DIR>
-<H2><A NAME="findex_v">v</A></H2>
-<DIR>
-<LI><A HREF="readline.html#IDX26">visible-stats</A>
-</DIR>
-<H2><A NAME="findex_y">y</A></H2>
-<DIR>
-<LI><A HREF="readline.html#IDX71">yank (C-y)</A>
-<LI><A HREF="readline.html#IDX47">yank-last-arg (M-. or M-_)</A>
-<LI><A HREF="readline.html#IDX46">yank-nth-arg (M-C-y)</A>
-<LI><A HREF="readline.html#IDX72">yank-pop (M-y)</A>
-</DIR>
-
-</P>
-<P><HR><P>
-This document was generated on 16 April 2001 using the
-<A HREF="http://wwwinfo.cern.ch/dis/texi2html/">texi2html</A>
-translator version 1.52.</P>
+</FONT></pre></td></tr></table></P><P>
+
+<A NAME="Concept Index"></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#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#SEC49">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1> Concept Index </H1>
+<!--docid::SEC49::-->
+<table><tr><th valign=top>Jump to: &nbsp; </th><td><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_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="readline.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="readline.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="readline.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="readline.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="readline.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="readline.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="readline.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#IDX167">readline, function</A></TD><TD valign=top><A HREF="readline.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="readline.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="readline.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_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="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">[ &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#SEC49">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::SEC50::-->
+<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#IDX269"><CODE>_rl_digit_p</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX272"><CODE>_rl_digit_value</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX268"><CODE>_rl_lowercase_p</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX271"><CODE>_rl_to_lower</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX270"><CODE>_rl_to_upper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX267"><CODE>_rl_uppercase_p</CODE></A></TD><TD valign=top><A HREF="readline.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#IDX138"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX139"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX40"><CODE>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX41"><CODE>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="readline.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#IDX30"><CODE>backward-char (C-b)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX31"><CODE>backward-char (C-b)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX68"><CODE>backward-delete-char (Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX69"><CODE>backward-delete-char (Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX90"><CODE>backward-kill-line (C-x Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX91"><CODE>backward-kill-line (C-x Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX98"><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX99"><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX34"><CODE>backward-word (M-b)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX35"><CODE>backward-word (M-b)</CODE></A></TD><TD valign=top><A HREF="readline.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-history (M-&#38;#60;)</CODE></A></TD><TD valign=top><A HREF="readline.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>beginning-of-history (M-&#38;#60;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX24"><CODE>beginning-of-line (C-a)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX25"><CODE>beginning-of-line (C-a)</CODE></A></TD><TD valign=top><A HREF="readline.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="readline.html#SEC10">1.3.1 Readline Init File Syntax</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#IDX134"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX135"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX86"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX87"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX154"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX155"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX156"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX157"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX36"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX37"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX6">comment-begin</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX120"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX121"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX7">completion-query-items</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX8">convert-meta</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX108"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX109"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX110"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX111"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX106"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX107"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="readline.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#IDX66"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX67"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX128"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX129"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX102"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX103"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX116"><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="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX117"><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="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX9">disable-completion</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX140"><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="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX141"><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="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX84"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX85"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX160"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX161"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX164"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX165"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX162"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX163"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="readline.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#IDX10">editing-mode</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX11">enable-keypad</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX132"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX133"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX48"><CODE>end-of-history (M-&#38;#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX49"><CODE>end-of-history (M-&#38;#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX26"><CODE>end-of-line (C-e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX27"><CODE>end-of-line (C-e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX152"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX153"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX12">expand-tilde</A></TD><TD valign=top><A HREF="readline.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#IDX70"><CODE>forward-backward-delete-char ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX71"><CODE>forward-backward-delete-char ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX28"><CODE>forward-char (C-f)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX29"><CODE>forward-char (C-f)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX52"><CODE>forward-search-history (C-s)</CODE></A></TD><TD valign=top><A HREF="readline.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-search-history (C-s)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX32"><CODE>forward-word (M-f)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX33"><CODE>forward-word (M-f)</CODE></A></TD><TD valign=top><A HREF="readline.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#IDX13">history-preserve-point</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX60"><CODE>history-search-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX61"><CODE>history-search-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX58"><CODE>history-search-forward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX59"><CODE>history-search-forward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX14">horizontal-scroll-mode</A></TD><TD valign=top><A HREF="readline.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#IDX15">input-meta</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX158"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX159"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX124"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX125"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX17">isearch-terminators</A></TD><TD valign=top><A HREF="readline.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#IDX18">keymap</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX88"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX89"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX104"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX105"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX94"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX95"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX96"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX97"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="readline.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#IDX19">mark-modified-lines</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX20">match-hidden-files</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX126"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX127"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX16">meta-flag</A></TD><TD valign=top><A HREF="readline.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#IDX44"><CODE>next-history (C-n)</CODE></A></TD><TD valign=top><A HREF="readline.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>next-history (C-n)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX56"><CODE>non-incremental-forward-search-history (M-n)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX57"><CODE>non-incremental-forward-search-history (M-n)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX54"><CODE>non-incremental-reverse-search-history (M-p)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX55"><CODE>non-incremental-reverse-search-history (M-p)</CODE></A></TD><TD valign=top><A HREF="readline.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#IDX21">output-meta</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</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#IDX122"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX123"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX142"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX143"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX42"><CODE>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX43"><CODE>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="readline.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_Q"></A>Q</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX72"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX73"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="readline.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#IDX136"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX137"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX166"><CODE>readline</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC24">2.1 Basic Behavior</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX38"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX39"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX50"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX51"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX146"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX147"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX201"><CODE>rl_add_defun</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC30">2.4.1 Naming a Function</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX227"><CODE>rl_add_funmap_entry</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX230"><CODE>rl_add_undo</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX265"><CODE>rl_alphabetic</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX178">rl_already_prompted</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX302">rl_attempted_completion_function</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX317">rl_attempted_completion_over</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX308">rl_basic_quote_characters</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX307">rl_basic_word_break_characters</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX228"><CODE>rl_begin_undo_group</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX210"><CODE>rl_bind_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX211"><CODE>rl_bind_key_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX195">rl_binding_keymap</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX279"><CODE>rl_callback_handler_install</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX281"><CODE>rl_callback_handler_remove</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX280"><CODE>rl_callback_read_char</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX282">rl_catch_signals</A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX283">rl_catch_sigwinch</A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX305">rl_char_is_quoted_p</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX284"><CODE>rl_cleanup_after_signal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX242"><CODE>rl_clear_message</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX256"><CODE>rl_clear_pending_input</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX291"><CODE>rl_clear_signals</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX292"><CODE>rl_complete</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC45">2.6.1 How Completing Works</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX295"><CODE>rl_complete</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX294"><CODE>rl_complete_internal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX310">rl_completer_quote_characters</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX309">rl_completer_word_break_characters</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX313">rl_completion_append_character</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX322">rl_completion_display_matches_hook</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX293">rl_completion_entry_function</A></TD><TD valign=top><A HREF="readline.html#SEC45">2.6.1 How Completing Works</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX301">rl_completion_entry_function</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX298"><CODE>rl_completion_matches</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX306">rl_completion_query_items</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX318">rl_completion_type</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX203"><CODE>rl_copy_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX249"><CODE>rl_copy_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX239"><CODE>rl_crlf</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX248"><CODE>rl_delete_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX193">rl_deprep_term_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX259"><CODE>rl_deprep_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX264"><CODE>rl_ding</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX321">rl_directory_completion_hook</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX205"><CODE>rl_discard_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX175">rl_dispatching</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX266"><CODE>rl_display_match_list</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX232"><CODE>rl_do_undo</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX172">rl_done</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX200">rl_editing_mode</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX170">rl_end</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX229"><CODE>rl_end_undo_group</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX176">rl_erase_empty_line</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX189">rl_event_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX255"><CODE>rl_execute_next</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX194">rl_executing_keymap</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX196">rl_executing_macro</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX245"><CODE>rl_expand_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX198">rl_explicit_arg</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX262"><CODE>rl_extend_line_buffer</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX315">rl_filename_completion_desired</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX299"><CODE>rl_filename_completion_function</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX304">rl_filename_dequoting_function</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX311">rl_filename_quote_characters</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX316">rl_filename_quoting_desired</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX303">rl_filename_quoting_function</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX235"><CODE>rl_forced_update_display</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX285"><CODE>rl_free_line_state</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX231"><CODE>rl_free_undo_list</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX224"><CODE>rl_function_dumper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX221"><CODE>rl_function_of_keyseq</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX226"><CODE>rl_funmap_names</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX217"><CODE>rl_generic_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX206"><CODE>rl_get_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX208"><CODE>rl_get_keymap_by_name</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX209"><CODE>rl_get_keymap_name</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX289"><CODE>rl_get_screen_size</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX278"><CODE>rl_get_termcap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX253"><CODE>rl_getc</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX190">rl_getc_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX181">rl_gnu_readline_p</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX314">rl_ignore_completion_duplicates</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX320">rl_ignore_some_completions_function</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX319">rl_inhibit_completion</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX263"><CODE>rl_initialize</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX297"><CODE>rl_insert_completions</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX247"><CODE>rl_insert_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX184">rl_instream</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX222"><CODE>rl_invoking_keyseqs</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX223"><CODE>rl_invoking_keyseqs_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX250"><CODE>rl_kill_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX186">rl_last_func</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX179">rl_library_version</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX168">rl_line_buffer</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX225"><CODE>rl_list_funmap_names</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX273"><CODE>rl_macro_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX274"><CODE>rl_macro_dumper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX202"><CODE>rl_make_bare_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX204"><CODE>rl_make_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX171">rl_mark</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX241"><CODE>rl_message</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX233"><CODE>rl_modifying</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX220"><CODE>rl_named_function</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX173">rl_num_chars_to_read</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX199">rl_numeric_arg</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX236"><CODE>rl_on_new_line</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX237"><CODE>rl_on_new_line_with_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX185">rl_outstream</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX218"><CODE>rl_parse_and_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX174">rl_pending_input</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX169">rl_point</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX296"><CODE>rl_possible_completions</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX188">rl_pre_input_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX192">rl_prep_term_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX258"><CODE>rl_prep_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX177">rl_prompt</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX251"><CODE>rl_push_macro_input</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX219"><CODE>rl_read_init_file</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX252"><CODE>rl_read_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX183">rl_readline_name</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX197">rl_readline_state</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX180">rl_readline_version</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX234"><CODE>rl_redisplay</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX191">rl_redisplay_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX286"><CODE>rl_reset_after_signal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX238"><CODE>rl_reset_line_state</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX261"><CODE>rl_reset_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX287"><CODE>rl_resize_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX244"><CODE>rl_restore_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX243"><CODE>rl_save_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX216"><CODE>rl_set_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX257"><CODE>rl_set_keyboard_input_timeout</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX207"><CODE>rl_set_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX277"><CODE>rl_set_paren_blink_timeout</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX246"><CODE>rl_set_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX288"><CODE>rl_set_screen_size</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX290"><CODE>rl_set_signals</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX240"><CODE>rl_show_char</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX312">rl_special_prefixes</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX187">rl_startup_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX254"><CODE>rl_stuff_char</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX182">rl_terminal_name</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX260"><CODE>rl_tty_set_default_bindings</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX215"><CODE>rl_unbind_command_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX214"><CODE>rl_unbind_function_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX212"><CODE>rl_unbind_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX213"><CODE>rl_unbind_key_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX300"><CODE>rl_username_completion_function</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX275"><CODE>rl_variable_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX276"><CODE>rl_variable_dumper</CODE></A></TD><TD valign=top><A HREF="readline.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#IDX76"><CODE>self-insert (a, b, A, 1, !, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX77"><CODE>self-insert (a, b, A, 1, !, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX150"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX151"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX22">show-all-if-ambiguous</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX130"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX131"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="readline.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#IDX74"><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX75"><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX148"><CODE>tilde-expand (M-~)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX149"><CODE>tilde-expand (M-~)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX78"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX79"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX80"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX81"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="readline.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#IDX144"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX145"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX118"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX119"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX92"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX93"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX100"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX101"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX82"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX83"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="readline.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#IDX23">visible-stats</A></TD><TD valign=top><A HREF="readline.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#IDX112"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX113"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX64"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX65"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="readline.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>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX63"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX114"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX115"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="readline.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#SEC49">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>
+</UL>
+<A NAME="TOC43" HREF="readline.html#SEC43">2.5 Readline Signal Handling</A>
+<BR>
+<A NAME="TOC44" HREF="readline.html#SEC44">2.6 Custom Completers</A>
+<BR>
+<UL>
+<A NAME="TOC45" HREF="readline.html#SEC45">2.6.1 How Completing Works</A>
+<BR>
+<A NAME="TOC46" HREF="readline.html#SEC46">2.6.2 Completion Functions</A>
+<BR>
+<A NAME="TOC47" HREF="readline.html#SEC47">2.6.3 Completion Variables</A>
+<BR>
+<A NAME="TOC48" HREF="readline.html#SEC48">2.6.4 A Short Completion Example</A>
+<BR>
+</UL>
+</UL>
+<A NAME="TOC49" HREF="readline.html#SEC49">Concept Index</A>
+<BR>
+<A NAME="TOC50" HREF="readline.html#SEC50">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#SEC49">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="TOC49" HREF="readline.html#SEC49">Concept Index</A>
+<BR>
+<A NAME="TOC50" HREF="readline.html#SEC50">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#SEC49">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>October, 9  2001</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>October, 9  2001</I>
+using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
+"><I>texi2html</I></A>
+
 </BODY>
 </HTML>
index ad721c5e6fa2297f01ddda71c3c3b97ef21f8fb5..8853f1c93769e255807b708bfde7f6b6cb122de6 100644 (file)
@@ -236,7 +236,7 @@ available to be yanked back later, when you are typing another line.
      as those used by `M-f'.
 
 `M-<DEL>'
-     Kill from the cursor the start of the previous word, or, if between
+     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'.
 
@@ -309,6 +309,10 @@ 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.
@@ -423,6 +427,10 @@ Variable Settings
           If set to `on', tilde expansion is performed when Readline
           attempts word completion.  The default is `off'.
 
+          If set to `on', the history code attempts to place point at
+          the same location on each history line retrived with
+          `previous-history' or `next-history'.
+
     `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
@@ -462,6 +470,13 @@ Variable Settings
           asterisk (`*') at the start of history lines which have been
           modified.  This variable is `off' by default.
 
+    `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, unless the leading `.' is
+          supplied by the user in the filename to be completed.  This
+          variable is `on' by default.
+
     `output-meta'
           If set to `on', Readline will display characters with the
           eighth bit set directly rather than as a meta-prefixed escape
@@ -582,13 +597,13 @@ Key Bindings
           vertical tab
 
     `\NNN'
-          the character whose ASCII code is the octal value NNN (one to
-          three digits)
-
-    `\xNNN'
-          the character whose ASCII code is the hexadecimal value 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
@@ -932,7 +947,8 @@ Commands For Changing Text
 
 `transpose-words (M-t)'
      Drag the word before point past the word after point, moving point
-     past that word as well.
+     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
@@ -1332,6 +1348,15 @@ 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.
@@ -1498,6 +1523,13 @@ Readline Variables
  - 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.
@@ -2195,6 +2227,14 @@ Miscellaneous Functions
      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.
+
 \1f
 File: readline.info,  Node: Alternate Interface,  Next: A Readline Example,  Prev: Miscellaneous Functions,  Up: Readline Convenience Functions
 
@@ -3250,6 +3290,7 @@ Function and Variable Index
 * forward-char (C-f):                    Commands For Moving.
 * forward-search-history (C-s):          Commands For History.
 * forward-word (M-f):                    Commands For Moving.
+* history-preserve-point:                Readline Init File Syntax.
 * history-search-backward ():            Commands For History.
 * history-search-forward ():             Commands For History.
 * horizontal-scroll-mode:                Readline Init File Syntax.
@@ -3263,6 +3304,7 @@ Function and Variable Index
 * kill-whole-line ():                    Commands For Killing.
 * kill-word (M-d):                       Commands For Killing.
 * mark-modified-lines:                   Readline Init File Syntax.
+* match-hidden-files:                    Readline Init File Syntax.
 * menu-complete ():                      Commands For Completion.
 * meta-flag:                             Readline Init File Syntax.
 * next-history (C-n):                    Commands For History.
@@ -3354,6 +3396,7 @@ Function and Variable Index
 * rl_get_keymap_by_name:                 Keymaps.
 * rl_get_keymap_name:                    Keymaps.
 * rl_get_screen_size:                    Readline Signal Handling.
+* rl_get_termcap:                        Miscellaneous Functions.
 * rl_getc:                               Character Input.
 * rl_getc_function:                      Readline Variables.
 * rl_gnu_readline_p:                     Readline Variables.
@@ -3397,6 +3440,7 @@ Function and Variable Index
 * rl_read_key:                           Character Input.
 * rl_readline_name:                      Readline Variables.
 * rl_readline_state:                     Readline Variables.
+* rl_readline_version:                   Readline Variables.
 * rl_redisplay:                          Redisplay.
 * rl_redisplay_function:                 Readline Variables.
 * rl_reset_after_signal:                 Readline Signal Handling.
@@ -3452,49 +3496,49 @@ Node: Readline Interaction\7f4032
 Node: Readline Bare Essentials\7f5219
 Node: Readline Movement Commands\7f7000
 Node: Readline Killing Commands\7f7957
-Node: Readline Arguments\7f9867
-Node: Searching\7f10903
-Node: Readline Init File\7f12859
-Node: Readline Init File Syntax\7f13920
-Node: Conditional Init Constructs\7f23842
-Node: Sample Init File\7f26367
-Node: Bindable Readline Commands\7f29537
-Node: Commands For Moving\7f30587
-Node: Commands For History\7f31436
-Node: Commands For Text\7f34294
-Node: Commands For Killing\7f36281
-Node: Numeric Arguments\7f38232
-Node: Commands For Completion\7f39360
-Node: Keyboard Macros\7f40892
-Node: Miscellaneous Commands\7f41451
-Node: Readline vi Mode\7f44244
-Node: Programming with GNU Readline\7f46062
-Node: Basic Behavior\7f47030
-Node: Custom Functions\7f50443
-Node: Readline Typedefs\7f51421
-Node: Function Writing\7f53050
-Node: Readline Variables\7f54134
-Node: Readline Convenience Functions\7f63133
-Node: Function Naming\7f64115
-Node: Keymaps\7f65367
-Node: Binding Keys\7f67123
-Node: Associating Function Names and Bindings\7f70049
-Node: Allowing Undoing\7f72294
-Node: Redisplay\7f74829
-Node: Modifying Text\7f77900
-Node: Character Input\7f79033
-Node: Terminal Management\7f80678
-Node: Utility Functions\7f81853
-Node: Miscellaneous Functions\7f83920
-Node: Alternate Interface\7f85512
-Node: A Readline Example\7f87135
-Node: Readline Signal Handling\7f89072
-Node: Custom Completers\7f94675
-Node: How Completing Works\7f95390
-Node: Completion Functions\7f98388
-Node: Completion Variables\7f101392
-Node: A Short Completion Example\7f110763
-Node: Concept Index\7f123288
-Node: Function and Variable Index\7f124110
+Node: Readline Arguments\7f9866
+Node: Searching\7f10902
+Node: Readline Init File\7f13045
+Node: Readline Init File Syntax\7f14106
+Node: Conditional Init Constructs\7f24556
+Node: Sample Init File\7f27081
+Node: Bindable Readline Commands\7f30251
+Node: Commands For Moving\7f31301
+Node: Commands For History\7f32150
+Node: Commands For Text\7f35008
+Node: Commands For Killing\7f37099
+Node: Numeric Arguments\7f39050
+Node: Commands For Completion\7f40178
+Node: Keyboard Macros\7f41710
+Node: Miscellaneous Commands\7f42269
+Node: Readline vi Mode\7f45062
+Node: Programming with GNU Readline\7f46880
+Node: Basic Behavior\7f47848
+Node: Custom Functions\7f51261
+Node: Readline Typedefs\7f52739
+Node: Function Writing\7f54368
+Node: Readline Variables\7f55452
+Node: Readline Convenience Functions\7f64784
+Node: Function Naming\7f65766
+Node: Keymaps\7f67018
+Node: Binding Keys\7f68774
+Node: Associating Function Names and Bindings\7f71700
+Node: Allowing Undoing\7f73945
+Node: Redisplay\7f76480
+Node: Modifying Text\7f79551
+Node: Character Input\7f80684
+Node: Terminal Management\7f82329
+Node: Utility Functions\7f83504
+Node: Miscellaneous Functions\7f85571
+Node: Alternate Interface\7f87635
+Node: A Readline Example\7f89258
+Node: Readline Signal Handling\7f91195
+Node: Custom Completers\7f96798
+Node: How Completing Works\7f97513
+Node: Completion Functions\7f100511
+Node: Completion Variables\7f103515
+Node: A Short Completion Example\7f112886
+Node: Concept Index\7f125411
+Node: Function and Variable Index\7f126233
 \1f
 End Tag Table
index 9d7e8751623c80da9aa4a87c1378e31e6e3d9a45..00827ed3e50c2589bf6e0487006fcf65ca84f220 100644 (file)
@@ -1,14 +1,14 @@
 %!PS-Adobe-2.0
 %%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
 %%Title: readline.dvi
-%%Pages: 62
+%%Pages: 64
 %%PageOrder: Ascend
 %%BoundingBox: 0 0 612 792
 %%EndComments
 %DVIPSWebPage: (www.radicaleye.com)
 %DVIPSCommandLine: dvips -D 300 -t letter -o readline.ps readline.dvi
 %DVIPSParameters: dpi=300, compressed
-%DVIPSSource:  TeX output 2001.04.16:1105
+%DVIPSSource:  TeX output 2001.10.09:1508
 %%BeginProcSet: texc.pro
 %!
 /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -389,8 +389,8 @@ E02601F8635BA29038FCE3F1000001C15B15F990267F80FBC7FCA215FF90383F007EA201
 5AA26DC7FCA21306A25B1230EA781CEAFC185B1370EA68E0EA7FC0001FC8FC1D237F9720
 >I E
 %EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fk cmsl10 10.95 46
-/Fk 46 122 df<EB03E0EB1C181338EB703C13E014383801C000A5485A387FFFF0380380
+%DVIPSBitmapFont: Fk cmsl10 10.95 48
+/Fk 48 122 df<EB03E0EB1C181338EB703C13E014383801C000A5485A387FFFF0380380
 70A4380700E0A6380E01C0A6381C0380001E13C038FF0FF016207E9F19>12
 D<EB03F4EB1C1CEB383C137013E01438EA01C0A538038070387FFFF038038070A4380700
 E0A6380E01C0A6381C0380001E13C038FF9FF016207E9F19>I<EAFFF0A20C027E8A0F>
@@ -409,68 +409,72 @@ D<13181338EA01F8EA0E701200A513E0A6EA01C0A6EA0380A6EA07001380EAFFFC0E1E7B
 23>I<0007B512FC3900F8007C0178131C150C5B1504A414043901E00800A31438EBFFF8
 EBE0383803C010A4EC00081510485AA21520A2156015C0380F00011407B612801E1F7E9E
 1F>I<0007B512F83900F800780178133815185B1508A53901E00800A314181438EBFFF8
-3803C0301410A491C7FC485AA648C8FC7FEAFFFC1D1F7E9E1E>I<3807FF803800F80013
-78A25BA6485AA6485AA6485AA648C7FC7FEAFFF0111F7E9E10>73
-D<3A07FF803FE03A00F8001F000178130C5D4913205D5D4AC7FC1402140848485A5C1460
-14F013E1EBE4F83803C878EBD07CEBE03CEBC03E141E141F48487E81140781140381380F
-00016D487E39FFF00FFE231F7E9E23>75 D<3807FFE0D800FCC7FC1378A25BA6485AA648
-5AA41580EC0100EA0780A25C14021406140E380F001E147CB512FC191F7E9E1C>I<D807
-F8EB7FC0D8007CEB1F00150C015E1304019E5B138FA2EB8780A2EB83C0D801035BEB01E0
-A2EB00F0A2147800025C143CA2141EA2140F485CEC07C0A21403A21401000C5C001E1300
-B47E221F7E9E22>78 D<EB01FCEB0E0790383801C090387000E0484813F048481378485A
-153C48C7FC5A001E143E123E123C127CA448147CA3157815F81278EC01F0007C14E01403
-003C14C0001CEB0780001EEB0F006C131E380780383801C0E038007F801F217C9F23>I<
-0007B5FC3900F803C090387800F015785B157CA41578484813F815F0EC01E0EC03C0EC0F
-00EBFFFCD803C0C7FCA6485AA648C8FC7FEAFFF81E1F7E9E1F>I<3807FFFE3900F80780
-90387801E0EC00F05B15F8A415F03801E00115E0EC03C0EC0780EC1E00EBFFF03803C038
-80141E140EA2140F48485AA51501D80F0013029038800F8239FFF8078CC7EA01F020207E
-9E22>82 D<EB1F82EB7066EBC01E3801800EEA030048130C00061304120EA3000F1300A2
-7FEA07F013FF6C13C06C13E038003FF0EB03F813001478143CA200401338A31430006013
-70146000F013C038E8018038C60300EA81FC17217E9F19>I<003FB512F0383C07800030
-1430126039400F0010A212C01280A3D8001E1300A65BA65BA65B7F383FFFE01C1F7A9E21
->I<39FFF00FF8391F0003E06CEB01801400001EEB0100A6481302A6485BA600705BA25C
-A200785B1238001813C06C48C7FCEA0706EA01F81D20799E22>I<3BFFF07FF81FF03B1F
-000FC007C0001E903907800380001FED01006C1502140F5EEC17C002135B142301805C00
-0713435E14C3913883E0401481D981015B13C1D803C213E193C7FC13C415F2EBC80015F4
-EA01F015F85B5D5B15605B000014402C207A9E2F>87 D<EA07F8EA0C0CEA1E061307121C
-1200A313FFEA07C7EA1E07EA3C0E127800F01310A3131EEB2E2038784F40381F87801414
-7D9317>97 D<1207123F120F7EA2120EA65A137CEA1D83381E0180001C13C0EB00E05A14
-F0A5387001E0A214C013031480EB0700EAE80EEACC38EA83E014207B9F19>I<13FEEA03
-83380E0780121C0038130090C7FC12785AA45AA37E5BEA70026C5AEA1C18EA07E011147D
-9314>I<1438EB01F8EB00781438A21470A614E013FCEA0382EA0601121CEA3C00383801
-C0127812F0A438E00380A412F0EA700738380F00381C37803807C7E015207D9F19>I<13
-F8EA070EEA0E07381C038012381278127012F0B5FC00F0C7FCA25AA46C5AEA7002EA3004
-EA1C18EA07E011147D9314>I<EB07C0EB1C60EB30F01360EBE0E0EBC0001201A5485AEA
-3FFCEA0380A448C7FCA6120EA65A121EEAFFC014207F9F0E>I<140EEB3E11EBE1A33801
-C1C2380381E0EA07801301120FA3380703C01480EB8700EA04FC48C7FCA21218121CEA0F
-FF14C014E0381800F04813305A5AA3006013606C13C0381C0700EA07FC181F809417>I<
-13E0120712011200A2485AA6485AEB8F80EB90E013A0EBC0601380000713E01300A5380E
-01C0A6381C0380001E13C038FF8FF014207E9F19>I<EA01C0EA03E0A213C0EA0180C7FC
-A6EA0380121F12071203A2EA0700A6120EA65A121EEAFF800B1F7F9E0C>I<13E0120712
-011200A2485AA6485AEB81FCEB80F014C0EB81801400EA07045B13181338137C131C120E
-7FA2130F7F1480EA1C03381E07C038FF8FF016207E9F18>107 D<13E0120712011200A2
-EA01C0A6EA0380A6EA0700A6120EA65A121EEAFF800B207F9F0C>I<390387C07C391F98
-61863907A072073903C03403EB80380007EB7807EB0070A5000EEBE00EA64848485A001E
-EBE01E3AFFCFFCFFC022147E9326>I<38038F80381F90E0EA07A03803C0601380000713
-E01300A5380E01C0A6381C0380001E13C038FF8FF014147E9319>I<13FCEA0387380E01
-80381C00C04813E0A24813F012F0A438E001E0A214C0130300F0138038700700EA380E6C
-5AEA07E014147D9317>I<EBE3E03807EC383801F01C6C487E140F48487E1580A5390380
-0F00A2140E141E141C5C38074070EB61C0011FC7FC90C8FCA3120EA4121EEAFFC0191D80
-9319>I<EBFC2038038260EA0702381E01E0123C003813C0127812F0A438E00380A212F0
-A21307127038380F00EA1C37EA07C7EA0007A3130EA4131EEBFFC0131D7D9318>I<EA03
-8E381FB380EA07C71203EB8300EA078090C7FCA5120EA65A121EEAFFC011147E9312>I<
-EA01F9EA0607EA080312181301EA3802EA3C00121F13F0EA07FCEA01FEEA001FEA400713
-03A212601306EAF004EAC818EA87E010147F9312>I<1380EA0100A35A5A5A121EEAFFF8
-EA0E00A45AA65A1310A41320A2EA1840EA0F800D1C7C9B12>I<381C0380EAFC1FEA3C07
-EA1C03A238380700A6EA700EA4131EA25BEA305E381F9F8011147B9319>I<38FF83F838
-1E00E0001C13C01480121E380E01005B13025B12075BA25BEA039013A013E05B5B120190
-C7FC15147C9318>I<39FF9FE1FC393C078070391C030060148015401580EA0E0790380D
-81001309EB19C21311380F21C4EA0720EB40C814E8EB80F0A26C485A1460000213401E14
-7C9321>I<381FF0FF3803C0780001137014403800E0C0EBE180EB73001376133CA2131C
-132E134E1387EA0107380203801204380C01C0383C03E038FE07FC18147F9318>I<390F
-F83F803901E00E00EBC00C140813E000005B143014205C13705CA20171C7FC1339133A13
-3E133C133813181310A25BA25BEA70C0EAF08000F1C8FC12E61278191D809318>I
-E
+3803C0301410A491C7FC485AA648C8FC7FEAFFFC1D1F7E9E1E>I<3A07FF83FFC03A00F8
+007C000178133CA2495BA648485BA490B5FCEBE0004848485AA64848485AA64848485A01
+807F39FFF07FF8221F7E9E22>72 D<3807FF803800F8001378A25BA6485AA6485AA6485A
+A648C7FC7FEAFFF0111F7E9E10>I<3A07FF803FE03A00F8001F000178130C5D4913205D
+5D4AC7FC1402140848485A5C146014F013E1EBE4F83803C878EBD07CEBE03CEBC03E141E
+141F48487E81140781140381380F00016D487E39FFF00FFE231F7E9E23>75
+D<3807FFE0D800FCC7FC1378A25BA6485AA6485AA41580EC0100EA0780A25C1402140614
+0E380F001E147CB512FC191F7E9E1C>I<D807F8EC7FE00000ED7C00017814BCA2019C49
+5AA21502A2018E13041508D8010E5C1510A26D1320A215400002EC41E09038038081EC81
+01A21482A23A0401C403C0A214C8A2EB00F0000C13E04B5A001E01C07FD8FFC0EB7FFC2B
+1F7E9E2A>I<D807F8EB7FC0D8007CEB1F00150C015E1304019E5B138FA2EB8780A2EB83
+C0D801035BEB01E0A2EB00F0A2147800025C143CA2141EA2140F485CEC07C0A21403A214
+01000C5C001E1300B47E221F7E9E22>I<EB01FCEB0E0790383801C090387000E0484813
+F048481378485A153C48C7FC5A001E143E123E123C127CA448147CA3157815F81278EC01
+F0007C14E01403003C14C0001CEB0780001EEB0F006C131E380780383801C0E038007F80
+1F217C9F23>I<0007B5FC3900F803C090387800F015785B157CA41578484813F815F0EC
+01E0EC03C0EC0F00EBFFFCD803C0C7FCA6485AA648C8FC7FEAFFF81E1F7E9E1F>I<3807
+FFFE3900F8078090387801E0EC00F05B15F8A415F03801E00115E0EC03C0EC0780EC1E00
+EBFFF03803C03880141E140EA2140F48485AA51501D80F0013029038800F8239FFF8078C
+C7EA01F020207E9E22>82 D<EB1F82EB7066EBC01E3801800EEA030048130C0006130412
+0EA3000F1300A27FEA07F013FF6C13C06C13E038003FF0EB03F813001478143CA2004013
+38A3143000601370146000F013C038E8018038C60300EA81FC17217E9F19>I<003FB512
+F0383C078000301430126039400F0010A212C01280A3D8001E1300A65BA65BA65B7F383F
+FFE01C1F7A9E21>I<39FFF00FF8391F0003E06CEB01801400001EEB0100A6481302A648
+5BA600705BA25CA200785B1238001813C06C48C7FCEA0706EA01F81D20799E22>I<3BFF
+F07FF81FF03B1F000FC007C0001E903907800380001FED01006C1502140F5EEC17C00213
+5B142301805C000713435E14C3913883E0401481D981015B13C1D803C213E193C7FC13C4
+15F2EBC80015F4EA01F015F85B5D5B15605B000014402C207A9E2F>87
+D<EA07F8EA0C0CEA1E061307121C1200A313FFEA07C7EA1E07EA3C0E127800F01310A313
+1EEB2E2038784F40381F878014147D9317>97 D<1207123F120F7EA2120EA65A137CEA1D
+83381E0180001C13C0EB00E05A14F0A5387001E0A214C013031480EB0700EAE80EEACC38
+EA83E014207B9F19>I<13FEEA0383380E0780121C0038130090C7FC12785AA45AA37E5B
+EA70026C5AEA1C18EA07E011147D9314>I<1438EB01F8EB00781438A21470A614E013FC
+EA0382EA0601121CEA3C00383801C0127812F0A438E00380A412F0EA700738380F00381C
+37803807C7E015207D9F19>I<13F8EA070EEA0E07381C038012381278127012F0B5FC00
+F0C7FCA25AA46C5AEA7002EA3004EA1C18EA07E011147D9314>I<EB07C0EB1C60EB30F0
+1360EBE0E0EBC0001201A5485AEA3FFCEA0380A448C7FCA6120EA65A121EEAFFC014207F
+9F0E>I<140EEB3E11EBE1A33801C1C2380381E0EA07801301120FA3380703C01480EB87
+00EA04FC48C7FCA21218121CEA0FFF14C014E0381800F04813305A5AA3006013606C13C0
+381C0700EA07FC181F809417>I<13E0120712011200A2485AA6485AEB8F80EB90E013A0
+EBC0601380000713E01300A5380E01C0A6381C0380001E13C038FF8FF014207E9F19>I<
+EA01C0EA03E0A213C0EA0180C7FCA6EA0380121F12071203A2EA0700A6120EA65A121EEA
+FF800B1F7F9E0C>I<13E0120712011200A2485AA6485AEB81FCEB80F014C0EB81801400
+EA07045B13181338137C131C120E7FA2130F7F1480EA1C03381E07C038FF8FF016207E9F
+18>107 D<13E0120712011200A2EA01C0A6EA0380A6EA0700A6120EA65A121EEAFF800B
+207F9F0C>I<390387C07C391F9861863907A072073903C03403EB80380007EB7807EB00
+70A5000EEBE00EA64848485A001EEBE01E3AFFCFFCFFC022147E9326>I<38038F80381F
+90E0EA07A03803C0601380000713E01300A5380E01C0A6381C0380001E13C038FF8FF014
+147E9319>I<13FCEA0387380E0180381C00C04813E0A24813F012F0A438E001E0A214C0
+130300F0138038700700EA380E6C5AEA07E014147D9317>I<EBE3E03807EC383801F01C
+6C487E140F48487E1580A53903800F00A2140E141E141C5C38074070EB61C0011FC7FC90
+C8FCA3120EA4121EEAFFC0191D809319>I<EBFC2038038260EA0702381E01E0123C0038
+13C0127812F0A438E00380A212F0A21307127038380F00EA1C37EA07C7EA0007A3130EA4
+131EEBFFC0131D7D9318>I<EA038E381FB380EA07C71203EB8300EA078090C7FCA5120E
+A65A121EEAFFC011147E9312>I<EA01F9EA0607EA080312181301EA3802EA3C00121F13
+F0EA07FCEA01FEEA001FEA40071303A212601306EAF004EAC818EA87E010147F9312>I<
+1380EA0100A35A5A5A121EEAFFF8EA0E00A45AA65A1310A41320A2EA1840EA0F800D1C7C
+9B12>I<381C0380EAFC1FEA3C07EA1C03A238380700A6EA700EA4131EA25BEA305E381F
+9F8011147B9319>I<38FF83F8381E00E0001C13C01480121E380E01005B13025B12075B
+A25BEA039013A013E05B5B120190C7FC15147C9318>I<39FF9FE1FC393C078070391C03
+0060148015401580EA0E0790380D81001309EB19C21311380F21C4EA0720EB40C814E8EB
+80F0A26C485A1460000213401E147C9321>I<381FF0FF3803C0780001137014403800E0
+C0EBE180EB73001376133CA2131C132E134E1387EA0107380203801204380C01C0383C03
+E038FE07FC18147F9318>I<390FF83F803901E00E00EBC00C140813E000005B14301420
+5C13705CA20171C7FC1339133A133E133C133813181310A25BA25BEA70C0EAF08000F1C8
+FC12E61278191D809318>I E
 %EndDVIPSBitmapFont
 %DVIPSBitmapFont: Fl cmti10 10.95 20
 /Fl 20 122 df<EC3FE0ECE010903801803801031378A290380700301500A3130EA390B5
@@ -705,8 +709,8 @@ A328207F9F2B>I E
 306C1560A26C15C06CEC01806C6CEB0300D800E0130E0178133C90381F01F0903807FFC0
 D900FEC7FC272B7DA02E>13 D E
 %EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fs cmbx12 14.4 54
-/Fs 54 122 df<123C127FEAFF80A213C0A3127F123E1200A2EA0180A3EA0300A2120612
+%DVIPSBitmapFont: Fs cmbx12 14.4 55
+/Fs 55 122 df<123C127FEAFF80A213C0A3127F123E1200A2EA0180A3EA0300A2120612
 0E5A5A12100A157B8813>44 D<121C127FA2EAFF80A3EA7F00A2121C09097B8813>46
 D<130E131E137EEA07FE12FFA212F81200B3ABB512FEA317277BA622>49
 D<EBFF80000713F04813FC381E03FE393800FF80007C133F00FE14C06C131F15E0140FA2
@@ -722,67 +726,69 @@ C7FC001CC8FCA7EB7FC0381DFFF8381F80FC381E003F1208C7EA1F8015C0A215E0A21218
 22>I<EB07F8EB3FFE90B5FC3901FC07803903F00FC03807C01FEA0F80121F130048EB0F
 8091C7FC127EA3EAFE02EB1FF0EB3FFCEB603EEB801F00FF14809038000FC0A24814E0A4
 127EA4123E003F14C07EEC1F80D80F8013003807E07E6CB45A6C5B38003FC01B277DA622
->I<EB7F803801FFF000077F380FC0FC381F803E48487E007E1480A2140F00FE14C0A315
-E0A5007E131FA26C133F6C132F380F80CF3807FF8F0001130FEA0008010013C0A3EC1F80
-123E127FEC3F00143E147E007E5B383E03F8381FFFE06C1380D801FEC7FC1B277DA622>
-57 D<EC0780A24A7EA34A7EA24A7EA3EC77F8A2ECF7FC14E3A2903801C1FEA201037F14
-80A249486C7EA24980010E133FA2496D7EA2013FB57EA39039700007F8A201F080491303
-000181491301A2000381D8FFFE013F13FCA32E297EA833>65 D<B612F815FF16C03A03F8
-001FE0ED0FF0ED07F8150316FCA21501A3150316F8A2ED07F0150FED1FC0EDFF8090B5EA
-FE00EDFFC09039F8000FF0ED03F8ED01FC16FE1500A216FFA616FE1501ED03FC1507ED1F
-F8B712E016C0EDFE0028297DA830>I<91387FE003903907FFFC07011FEBFF0F90397FF0
-0F9F9039FF0001FFD801FC7F4848147F4848143F4848141F485A160F485A1607127FA290
-C9FC5AA97E7F1607123FA26C7E160E6C7E6C6C141C6C6C143C6C6C14786CB4EB01F09039
-7FF007C0011FB512800107EBFE009038007FF028297CA831>I<B612FCEDFF8016E03A03
-FC001FF8ED03FCED00FE167FEE3F80EE1FC0A2EE0FE0A2EE07F0A417F8AA17F0A3EE0FE0
-A217C0161FEE3F80EE7F005EED03FCED1FF8B75A168003FCC7FC2D297EA834>I<B712E0
-A33903FC001FED07F01501A215001670A3913801C0781638A302031300A2140F90B5FCA3
-EBFC0F1403A20201130EA3161C91C7FCA3163C1638167816F815011503151FB712F0A327
-297EA82C>I<B712C0A33903FC003FED0FE015031501A21500A316F0913801C070A31600
-1403A2140F90B5FCA3EBFC0F1403A21401A491C8FCA9B512FCA324297EA82A>I<91387F
-E003903907FFFC07011FEBFF0F90397FF00F9F9039FF0001FFD801FC7F48488048488048
-4880485A82485A82127FA290CAFC5AA892B512F87E7F03001300123FA26C7EA26C7E6C7E
-6C7E6C7E6CB45B90387FF007011FB5129F0107EBFE0F9039007FF0032D297CA835>I<B5
-D8F00FB5FCA3D803FCC7EA3FC0AF90B7FCA301FCC7123FB1B5D8F00FB5FCA330297EA835
->I<B512F0A33803FC00B3B1B512F0A314297EA819>I<B500F0EBFFFEA3D803FCC7EA0F00
-161E5E5E16E0ED03C04B5A4BC7FC151E5D15F04A5A4A5A1407140F4A7EEC7FF04A7EEBFD
-E79038FFC3FCEC83FE9038FE01FF497E6F7E826F7E151F6F7E8215076F7E6F7E8281EE7F
-80B539F00FFFFEA32F297EA835>75 D<B512FCA3D803FCC8FCB3A3ED01C0A415031680A2
-1507A2150FA2151F157F913801FF00B7FCA322297EA828>I<D8FFFE92383FFF80A26D5D
-0003EFE000A2D9BF8014EFA2D99FC0EB01CFA2D98FE0EB038FA3D987F0EB070FA2D983F8
-130EA2D981FC131CA3D980FE1338A2027F1370A291383F80E0A391381FC1C0A291380FE3
-80A2913807F700A3EC03FEA26E5AA26E5AD8FFFE0203B51280A2157039297DA840>I<D8
-FFFCEC7FFF7F7F00036DEB01C080EBBFE0139F80EB8FF8EB87FCEB83FEEB81FF01801380
-147F15C0EC3FE0EC1FF0EC0FF8EC07FC140315FEEC01FF6E1381ED7FC1ED3FE1ED1FF115
-0F16F9ED07FDED03FF8181167FA2163F161F160F1607D8FFFE14031601A230297EA835>
-I<ECFFC0010F13FC90383F807F9039FE001FC0D801F8EB07E048486D7E48486D7E000F81
-48486D7EA24848147FA2007F168090C8123FA34816C0AA6C16806D147FA2003F1600A26C
-6C14FEA26C6C495A6C6C495A6C6C495A6C6C495A6C6C495A90263FC0FFC7FC90380FFFFC
-010013C02A297CA833>I<B612F815FF16C03A03FC003FE0ED07F0ED03F816FC150116FE
-A716FC150316F8ED07F0ED3FE090B61280EDFE0001FCC8FCB0B512F0A327297EA82E>I<
-ECFFC0010F13FC90383FC0FF9039FE001FC048486D7ED803F0EB03F000078148486D7E48
-486D7EA24848147FA2007F1680A290C8123FA24816C0AA6C16806D147FA2003F1600A26C
-6C14FE143E3A0FE07F81FC00079038C1C1F83A03F18063F0D801F9EB67E0D800FFEB3FC0
-90263FC07FC7FC90380FFFFC01004913C0EC003C811601ED1F8316FF6F1380A21700816F
-5A6F5A6F5A2A357CA833>I<B612E015FE6F7E3A03FC003FE0ED0FF06F7E6F7E150182A6
-5E4B5A1507ED0FE0ED3FC090B500FEC7FCA29039FC00FF80ED3FC06F7E6F7E6F7EA9170E
-A21503923801FC1CB538F000FEEE7FF8EE0FE02F297EA832>I<9038FF80600003EBF0E0
-000F13F8381F80FD383F001F003E1307481303A200FC1301A214007EA26C140013C0EA7F
-FCEBFFE06C13F86C13FE80000714806C14C0C6FC010F13E0EB007FEC1FF0140F140700E0
-1303A46C14E0A26C13076C14C0B4EB0F80EBE03F39E3FFFE0000E15B38C01FF01C297CA8
-25>I<007FB71280A39039807F807FD87C00140F00781507A20070150300F016C0A24815
-01A5C791C7FCB3A490B612C0A32A287EA72F>I<B500F0EBFFFEA3D803FCC7EA0380B3AA
-0001ED07007F0000150E137F6D143CD91FC05B90390FF003F06DB55A01001480DA1FFCC7
-FC2F297EA834>I<B500F0EB7FFFA3D803FEC7EA01C00001ED0380A26D14076C16006E5B
-017F140E80013F5CA26E133C011F14386E1378010F14708001075CA26D6C485AA2ECFE03
-01015CECFF076D91C7FC1587EC7F8EA215DEEC3FDC15FC6E5AA26E5AA36E5AA26E5AA230
-297FA833>I<B53CE07FFFE01FFFC0A32803FC0003FCC7EA7000A26D6D7E000160A26D6E
-13016C604B138002801503017F5F4B13C0D93FC0013F49C7FCA2913AE00E1FE00F011F16
-0E17F09126F01C0F131E010F161C033C13F8902707F838075BA2037813FC902703FC7003
-5BA2913AFEE001FEF001015E02FF14FF4B7E6D5EA26E486D5AA36EC76CC8FCA2023E8002
-1E141EA242297FA845>I<B500F0EB3FFFA3D803FEC7EA03C06C6C15806C6DEB07005E6D
-6C130E6E5B013F143C6D6C13386E5B010F14F06D6C5B6E485A01031303D901FF5B0387C7
-FC6D138FEC7FCE15FC143F6E5A5D140FAE0103B512C0A330297FA833>89
+>I<1238123E003FB512F0A34814E015C0158015003870000EA25C485B5C5CC6485AA249
+5A130791C7FC5B5B131E133EA2137E137CA213FCA41201A76C5A13701C297CA822>I<EB
+7F803801FFF000077F380FC0FC381F803E48487E007E1480A2140F00FE14C0A315E0A500
+7E131FA26C133F6C132F380F80CF3807FF8F0001130FEA0008010013C0A3EC1F80123E12
+7FEC3F00143E147E007E5B383E03F8381FFFE06C1380D801FEC7FC1B277DA622>57
+D<EC0780A24A7EA34A7EA24A7EA3EC77F8A2ECF7FC14E3A2903801C1FEA201037F1480A2
+49486C7EA24980010E133FA2496D7EA2013FB57EA39039700007F8A201F0804913030001
+81491301A2000381D8FFFE013F13FCA32E297EA833>65 D<B612F815FF16C03A03F8001F
+E0ED0FF0ED07F8150316FCA21501A3150316F8A2ED07F0150FED1FC0EDFF8090B5EAFE00
+EDFFC09039F8000FF0ED03F8ED01FC16FE1500A216FFA616FE1501ED03FC1507ED1FF8B7
+12E016C0EDFE0028297DA830>I<91387FE003903907FFFC07011FEBFF0F90397FF00F9F
+9039FF0001FFD801FC7F4848147F4848143F4848141F485A160F485A1607127FA290C9FC
+5AA97E7F1607123FA26C7E160E6C7E6C6C141C6C6C143C6C6C14786CB4EB01F090397FF0
+07C0011FB512800107EBFE009038007FF028297CA831>I<B612FCEDFF8016E03A03FC00
+1FF8ED03FCED00FE167FEE3F80EE1FC0A2EE0FE0A2EE07F0A417F8AA17F0A3EE0FE0A217
+C0161FEE3F80EE7F005EED03FCED1FF8B75A168003FCC7FC2D297EA834>I<B712E0A339
+03FC001FED07F01501A215001670A3913801C0781638A302031300A2140F90B5FCA3EBFC
+0F1403A20201130EA3161C91C7FCA3163C1638167816F815011503151FB712F0A327297E
+A82C>I<B712C0A33903FC003FED0FE015031501A21500A316F0913801C070A316001403
+A2140F90B5FCA3EBFC0F1403A21401A491C8FCA9B512FCA324297EA82A>I<91387FE003
+903907FFFC07011FEBFF0F90397FF00F9F9039FF0001FFD801FC7F484880484880484880
+485A82485A82127FA290CAFC5AA892B512F87E7F03001300123FA26C7EA26C7E6C7E6C7E
+6C7E6CB45B90387FF007011FB5129F0107EBFE0F9039007FF0032D297CA835>I<B5D8F0
+0FB5FCA3D803FCC7EA3FC0AF90B7FCA301FCC7123FB1B5D8F00FB5FCA330297EA835>I<
+B512F0A33803FC00B3B1B512F0A314297EA819>I<B500F0EBFFFEA3D803FCC7EA0F0016
+1E5E5E16E0ED03C04B5A4BC7FC151E5D15F04A5A4A5A1407140F4A7EEC7FF04A7EEBFDE7
+9038FFC3FCEC83FE9038FE01FF497E6F7E826F7E151F6F7E8215076F7E6F7E8281EE7F80
+B539F00FFFFEA32F297EA835>75 D<B512FCA3D803FCC8FCB3A3ED01C0A415031680A215
+07A2150FA2151F157F913801FF00B7FCA322297EA828>I<D8FFFE92383FFF80A26D5D00
+03EFE000A2D9BF8014EFA2D99FC0EB01CFA2D98FE0EB038FA3D987F0EB070FA2D983F813
+0EA2D981FC131CA3D980FE1338A2027F1370A291383F80E0A391381FC1C0A291380FE380
+A2913807F700A3EC03FEA26E5AA26E5AD8FFFE0203B51280A2157039297DA840>I<D8FF
+FCEC7FFF7F7F00036DEB01C080EBBFE0139F80EB8FF8EB87FCEB83FEEB81FF0180138014
+7F15C0EC3FE0EC1FF0EC0FF8EC07FC140315FEEC01FF6E1381ED7FC1ED3FE1ED1FF1150F
+16F9ED07FDED03FF8181167FA2163F161F160F1607D8FFFE14031601A230297EA835>I<
+ECFFC0010F13FC90383F807F9039FE001FC0D801F8EB07E048486D7E48486D7E000F8148
+486D7EA24848147FA2007F168090C8123FA34816C0AA6C16806D147FA2003F1600A26C6C
+14FEA26C6C495A6C6C495A6C6C495A6C6C495A6C6C495A90263FC0FFC7FC90380FFFFC01
+0013C02A297CA833>I<B612F815FF16C03A03FC003FE0ED07F0ED03F816FC150116FEA7
+16FC150316F8ED07F0ED3FE090B61280EDFE0001FCC8FCB0B512F0A327297EA82E>I<EC
+FFC0010F13FC90383FC0FF9039FE001FC048486D7ED803F0EB03F000078148486D7E4848
+6D7EA24848147FA2007F1680A290C8123FA24816C0AA6C16806D147FA2003F1600A26C6C
+14FE143E3A0FE07F81FC00079038C1C1F83A03F18063F0D801F9EB67E0D800FFEB3FC090
+263FC07FC7FC90380FFFFC01004913C0EC003C811601ED1F8316FF6F1380A21700816F5A
+6F5A6F5A2A357CA833>I<B612E015FE6F7E3A03FC003FE0ED0FF06F7E6F7E150182A65E
+4B5A1507ED0FE0ED3FC090B500FEC7FCA29039FC00FF80ED3FC06F7E6F7E6F7EA9170EA2
+1503923801FC1CB538F000FEEE7FF8EE0FE02F297EA832>I<9038FF80600003EBF0E000
+0F13F8381F80FD383F001F003E1307481303A200FC1301A214007EA26C140013C0EA7FFC
+EBFFE06C13F86C13FE80000714806C14C0C6FC010F13E0EB007FEC1FF0140F140700E013
+03A46C14E0A26C13076C14C0B4EB0F80EBE03F39E3FFFE0000E15B38C01FF01C297CA825
+>I<007FB71280A39039807F807FD87C00140F00781507A20070150300F016C0A2481501
+A5C791C7FCB3A490B612C0A32A287EA72F>I<B500F0EBFFFEA3D803FCC7EA0380B3AA00
+01ED07007F0000150E137F6D143CD91FC05B90390FF003F06DB55A01001480DA1FFCC7FC
+2F297EA834>I<B500F0EB7FFFA3D803FEC7EA01C00001ED0380A26D14076C16006E5B01
+7F140E80013F5CA26E133C011F14386E1378010F14708001075CA26D6C485AA2ECFE0301
+015CECFF076D91C7FC1587EC7F8EA215DEEC3FDC15FC6E5AA26E5AA36E5AA26E5AA23029
+7FA833>I<B53CE07FFFE01FFFC0A32803FC0003FCC7EA7000A26D6D7E000160A26D6E13
+016C604B138002801503017F5F4B13C0D93FC0013F49C7FCA2913AE00E1FE00F011F160E
+17F09126F01C0F131E010F161C033C13F8902707F838075BA2037813FC902703FC70035B
+A2913AFEE001FEF001015E02FF14FF4B7E6D5EA26E486D5AA36EC76CC8FCA2023E80021E
+141EA242297FA845>I<B500F0EB3FFFA3D803FEC7EA03C06C6C15806C6DEB07005E6D6C
+130E6E5B013F143C6D6C13386E5B010F14F06D6C5B6E485A01031303D901FF5B0387C7FC
+6D138FEC7FCE15FC143F6E5A5D140FAE0103B512C0A330297FA833>89
 D<3803FF80000F13F0381F01FC383F80FE147F801580EA1F00C7FCA4EB3FFF3801FC3FEA
 0FE0EA1F80EA3F00127E5AA4145F007E13DF393F839FFC381FFE0F3803FC031E1B7E9A21
 >97 D<EAFFE0A3120FACEBE1FE9038EFFF809038FE07E09038F803F09038F001F89038E0
@@ -1124,9 +1130,9 @@ letter
 %%EndSetup
 %%Page: 1 1
 1 0 bop 75 659 a Fv(GNU)33 b(Readline)h(Library)p 75
-709 1800 17 v 936 757 a Fu(Edition)17 b(4.2,)c(for)i
-Ft(Readline)f(Library)g Fu(V)l(ersion)i(4.2.)1692 811
-y(Apr)f(2001)75 2467 y Fs(Brian)23 b(F)-6 b(o)n(x,)23
+709 1800 17 v 891 757 a Fu(Edition)16 b(4.2a,)e(for)g
+Ft(Readline)g(Library)h Fu(V)l(ersion)h(4.2a.)1608 811
+y(Octob)q(er)g(2001)75 2467 y Fs(Brian)23 b(F)-6 b(o)n(x,)23
 b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)-6 b(oundation)75
 2534 y(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)p 75 2570 1800 9 v eop
@@ -1360,12 +1366,12 @@ e(to)h(the)315 590 y(end)j(of)f(the)g(next)g(w)o(ord.)k(W)l(ord)c(b)q
 (oundaries)i(are)e(the)g(same)g(as)g(those)f(used)i(b)o(y)f
 Fo(M-f)p Fu(.)75 668 y Fo(M-)123 666 y Fn(h)p 135 640
 73 2 v 135 668 a Fm(DEL)p 135 675 V 206 666 a Fn(i)315
-668 y Fu(Kill)21 b(from)e(the)g(cursor)f(the)h(start)f(of)h(the)g
-(previous)h(w)o(ord,)f(or,)g(if)g(b)q(et)o(w)o(een)h(w)o(ords,)f(to)315
-723 y(the)14 b(start)f(of)g(the)h(previous)g(w)o(ord.)19
-b(W)l(ord)14 b(b)q(oundaries)h(are)e(the)h(same)g(as)f(those)h(used)g
-(b)o(y)315 777 y Fo(M-b)p Fu(.)75 855 y Fo(C-w)168 b
-Fu(Kill)18 b(from)d(the)g(cursor)h(to)f(the)g(previous)i(whitespace.)22
+668 y Fu(Kill)i(from)e(the)g(cursor)g(the)h(start)e(of)h(the)g(curren)o
+(t)g(w)o(ord,)f(or,)h(if)g(b)q(et)o(w)o(een)h(w)o(ords,)e(to)h(the)315
+723 y(start)j(of)h(the)g(previous)h(w)o(ord.)31 b(W)l(ord)19
+b(b)q(oundaries)h(are)f(the)h(same)e(as)h(those)g(used)h(b)o(y)315
+777 y Fo(M-b)p Fu(.)75 855 y Fo(C-w)168 b Fu(Kill)18
+b(from)d(the)g(cursor)h(to)f(the)g(previous)i(whitespace.)22
 b(This)16 b(is)g(di\013eren)o(t)g(than)f Fo(M-)1777 853
 y Fn(h)p 1789 827 V 1789 855 a Fm(DEL)p 1789 863 V 1860
 853 a Fn(i)315 910 y Fu(b)q(ecause)h(the)f(w)o(ord)g(b)q(oundaries)h
@@ -1433,358 +1439,374 @@ b Fo(C-g)21 b Fu(will)i(ab)q(ort)e(an)g(incremen)o(tal)h(searc)o(h)f
 (and)g(restore)g(the)75 204 y(original)16 b(line.)21
 b(When)15 b(the)f(searc)o(h)g(is)h(terminated,)g(the)f(history)h(en)o
 (try)f(con)o(taining)h(the)g(searc)o(h)f(string)75 259
-y(b)q(ecomes)i(the)f(curren)o(t)g(line.)137 324 y(T)l(o)g(\014nd)i
+y(b)q(ecomes)i(the)f(curren)o(t)g(line.)137 325 y(T)l(o)g(\014nd)i
 (other)e(matc)o(hing)g(en)o(tries)h(in)h(the)e(history)h(list,)g(t)o
 (yp)q(e)f Fo(C-r)g Fu(or)g Fo(C-s)g Fu(as)h(appropriate.)k(This)75
-379 y(will)15 b(searc)o(h)e(bac)o(kw)o(ard)f(or)g(forw)o(ard)g(in)i
+380 y(will)15 b(searc)o(h)e(bac)o(kw)o(ard)f(or)g(forw)o(ard)g(in)i
 (the)f(history)g(for)g(the)g(next)g(en)o(try)g(matc)o(hing)g(the)g
 (searc)o(h)g(string)75 434 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)
 h(command)e(will)j(terminate)e(the)75 489 y(searc)o(h)10
 b(and)h(execute)g(that)f(command.)18 b(F)l(or)10 b(instance,)i(a)1063
 487 y Fn(h)p 1076 461 76 2 v 1076 489 a Fm(RET)p 1076
-496 V 1149 487 a Fn(i)1174 489 y Fu(will)g(terminate)f(the)g(searc)o(h)
-f(and)h(accept)75 543 y(the)k(line,)h(thereb)o(y)f(executing)g(the)g
+497 V 1149 487 a Fn(i)1174 489 y Fu(will)g(terminate)f(the)g(searc)o(h)
+f(and)h(accept)75 544 y(the)k(line,)h(thereb)o(y)f(executing)g(the)g
 (command)g(from)f(the)g(history)h(list.)20 b(A)15 b(mo)o(v)o(emen)o(t)f
-(command)g(will)75 598 y(terminate)h(the)g(searc)o(h,)g(mak)o(e)g(the)g
+(command)g(will)75 599 y(terminate)h(the)g(searc)o(h,)g(mak)o(e)g(the)g
 (last)g(line)i(found)f(the)f(curren)o(t)g(line,)h(and)g(b)q(egin)g
-(editing.)137 664 y(Non-incremen)o(tal)25 b(searc)o(hes)e(read)h(the)f
-(en)o(tire)h(searc)o(h)f(string)g(b)q(efore)h(starting)f(to)f(searc)o
-(h)i(for)75 718 y(matc)o(hing)d(history)h(lines.)39 b(The)22
+(editing.)137 665 y(Readline)j(remem)o(b)q(ers)e(the)h(last)f(incremen)
+o(tal)i(searc)o(h)e(string.)27 b(If)17 b(t)o(w)o(o)f
+Fo(C-r)p Fu(s)h(are)g(t)o(yp)q(ed)h(without)75 719 y(an)o(y)g(in)o
+(terv)o(ening)h(c)o(haracters)f(de\014ning)h(a)f(new)h(searc)o(h)f
+(string,)g(an)o(y)g(remem)o(b)q(ered)h(searc)o(h)f(string)g(is)75
+774 y(used.)137 840 y(Non-incremen)o(tal)25 b(searc)o(hes)e(read)h(the)
+f(en)o(tire)h(searc)o(h)f(string)g(b)q(efore)h(starting)f(to)f(searc)o
+(h)i(for)75 895 y(matc)o(hing)d(history)h(lines.)39 b(The)22
 b(searc)o(h)f(string)g(ma)o(y)g(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 773 y(con)o(ten)o(ts)15
-b(of)f(the)i(curren)o(t)f(line.)75 896 y Fs(1.3)33 b(Readline)23
-b(Init)h(File)137 990 y Fu(Although)f(the)g(Readline)h(library)f(comes)
-g(with)g(a)f(set)g(of)g(Emacs-lik)o(e)i(k)o(eybindings)g(installed)75
-1045 y(b)o(y)d(default,)h(it)f(is)h(p)q(ossible)g(to)e(use)i(a)e
-(di\013eren)o(t)h(set)g(of)f(k)o(eybindings.)39 b(An)o(y)20
-b(user)h(can)g(customize)75 1100 y(programs)15 b(that)h(use)g(Readline)
-i(b)o(y)e(putting)g(commands)g(in)i(an)e Fk(inputrc)k
-Fu(\014le,)d(con)o(v)o(en)o(tionally)g(in)g(his)75 1155
-y(home)g(directory)l(.)24 b(The)17 b(name)g(of)f(this)h(\014le)g(is)g
-(tak)o(en)g(from)e(the)i(v)m(alue)h(of)e(the)h(en)o(vironmen)o(t)g(v)m
-(ariable)75 1209 y Ft(INPUTRC)p Fu(.)i(If)c(that)g(v)m(ariable)h(is)g
-(unset,)f(the)g(default)h(is)g(`)p Ft(~/.inputrc)p Fu('.)137
-1275 y(When)f(a)g(program)f(whic)o(h)h(uses)g(the)g(Readline)h(library)
-g(starts)d(up,)i(the)g(init)h(\014le)g(is)f(read,)g(and)g(the)75
-1329 y(k)o(ey)g(bindings)i(are)e(set.)137 1395 y(In)f(addition,)h(the)e
-Ft(C-x)i(C-r)e Fu(command)g(re-reads)h(this)g(init)g(\014le,)h(th)o(us)
-e(incorp)q(orating)h(an)o(y)f(c)o(hanges)75 1450 y(that)h(y)o(ou)h
-(migh)o(t)g(ha)o(v)o(e)g(made)g(to)g(it.)75 1556 y Fj(1.3.1)30
-b(Readline)20 b(Init)g(File)h(Syn)n(tax)137 1650 y Fu(There)c(are)g
-(only)g(a)g(few)f(basic)i(constructs)e(allo)o(w)o(ed)i(in)f(the)g
-(Readline)h(init)g(\014le.)26 b(Blank)18 b(lines)g(are)75
-1705 y(ignored.)36 b(Lines)22 b(b)q(eginning)h(with)d(a)h(`)p
-Ft(#)p Fu(')e(are)h(commen)o(ts.)35 b(Lines)22 b(b)q(eginning)h(with)e
-(a)f(`)p Ft($)p Fu(')f(indicate)75 1760 y(conditional)c(constructs)f
-(\(see)g(Section)g(1.3.2)f([Conditional)h(Init)h(Constructs],)e(page)h
-(8\).)k(Other)c(lines)75 1814 y(denote)h(v)m(ariable)i(settings)e(and)h
-(k)o(ey)f(bindings.)75 1890 y(V)l(ariable)h(Settings)315
-1945 y(Y)l(ou)k(can)h(mo)q(dify)g(the)f(run-time)h(b)q(eha)o(vior)g(of)
-e(Readline)j(b)o(y)e(altering)h(the)f(v)m(alues)h(of)315
-2000 y(v)m(ariables)d(in)g(Readline)g(using)f(the)g Ft(set)g
-Fu(command)f(within)i(the)f(init)h(\014le.)26 b(The)17
-b(syn)o(tax)315 2055 y(is)f(simple:)435 2117 y Ft(set)23
-b Fk(v)m(ariable)28 b(v)m(alue)315 2182 y Fu(Here,)14
-b(for)f(example,)h(is)g(ho)o(w)f(to)g(c)o(hange)h(from)f(the)h(default)
-g(Emacs-lik)o(e)h(k)o(ey)e(binding)j(to)315 2237 y(use)g
-Ft(vi)e Fu(line)j(editing)g(commands:)435 2299 y Ft(set)23
-b(editing-mode)g(vi)315 2365 y Fu(V)l(ariable)c(names)e(and)h(v)m
-(alues,)h(where)e(appropriate,)h(are)f(recognized)i(without)e(regard)
-315 2419 y(to)e(case.)315 2485 y(A)g(great)g(deal)g(of)g(run-time)h(b)q
-(eha)o(vior)g(is)g(c)o(hangeable)g(with)f(the)h(follo)o(wing)f(v)m
-(ariables.)315 2560 y Ft(bell-style)555 2615 y Fu(Con)o(trols)21
-b(what)h(happ)q(ens)h(when)f(Readline)h(w)o(an)o(ts)e(to)g(ring)i(the)f
-(termi-)555 2670 y(nal)d(b)q(ell.)32 b(If)19 b(set)f(to)g(`)p
-Ft(none)p Fu(',)g(Readline)i(nev)o(er)f(rings)g(the)f(b)q(ell.)32
-b(If)19 b(set)g(to)p eop
+(user)h(or)e(b)q(e)i(part)f(of)g(the)75 950 y(con)o(ten)o(ts)15
+b(of)f(the)i(curren)o(t)f(line.)75 1074 y Fs(1.3)33 b(Readline)23
+b(Init)h(File)137 1169 y Fu(Although)f(the)g(Readline)h(library)f
+(comes)g(with)g(a)f(set)g(of)g(Emacs-lik)o(e)i(k)o(eybindings)g
+(installed)75 1224 y(b)o(y)d(default,)h(it)f(is)h(p)q(ossible)g(to)e
+(use)i(a)e(di\013eren)o(t)h(set)g(of)f(k)o(eybindings.)39
+b(An)o(y)20 b(user)h(can)g(customize)75 1278 y(programs)15
+b(that)h(use)g(Readline)i(b)o(y)e(putting)g(commands)g(in)i(an)e
+Fk(inputrc)k Fu(\014le,)d(con)o(v)o(en)o(tionally)g(in)g(his)75
+1333 y(home)g(directory)l(.)24 b(The)17 b(name)g(of)f(this)h(\014le)g
+(is)g(tak)o(en)g(from)e(the)i(v)m(alue)h(of)e(the)h(en)o(vironmen)o(t)g
+(v)m(ariable)75 1388 y Ft(INPUTRC)p Fu(.)i(If)c(that)g(v)m(ariable)h
+(is)g(unset,)f(the)g(default)h(is)g(`)p Ft(~/.inputrc)p
+Fu('.)137 1454 y(When)f(a)g(program)f(whic)o(h)h(uses)g(the)g(Readline)
+h(library)g(starts)d(up,)i(the)g(init)h(\014le)g(is)f(read,)g(and)g
+(the)75 1509 y(k)o(ey)g(bindings)i(are)e(set.)137 1574
+y(In)f(addition,)h(the)e Ft(C-x)i(C-r)e Fu(command)g(re-reads)h(this)g
+(init)g(\014le,)h(th)o(us)e(incorp)q(orating)h(an)o(y)f(c)o(hanges)75
+1629 y(that)h(y)o(ou)h(migh)o(t)g(ha)o(v)o(e)g(made)g(to)g(it.)75
+1737 y Fj(1.3.1)30 b(Readline)20 b(Init)g(File)h(Syn)n(tax)137
+1832 y Fu(There)c(are)g(only)g(a)g(few)f(basic)i(constructs)e(allo)o(w)
+o(ed)i(in)f(the)g(Readline)h(init)g(\014le.)26 b(Blank)18
+b(lines)g(are)75 1886 y(ignored.)36 b(Lines)22 b(b)q(eginning)h(with)d
+(a)h(`)p Ft(#)p Fu(')e(are)h(commen)o(ts.)35 b(Lines)22
+b(b)q(eginning)h(with)e(a)f(`)p Ft($)p Fu(')f(indicate)75
+1941 y(conditional)c(constructs)f(\(see)g(Section)g(1.3.2)f
+([Conditional)h(Init)h(Constructs],)e(page)h(8\).)k(Other)c(lines)75
+1996 y(denote)h(v)m(ariable)i(settings)e(and)h(k)o(ey)f(bindings.)75
+2073 y(V)l(ariable)h(Settings)315 2128 y(Y)l(ou)k(can)h(mo)q(dify)g
+(the)f(run-time)h(b)q(eha)o(vior)g(of)e(Readline)j(b)o(y)e(altering)h
+(the)f(v)m(alues)h(of)315 2182 y(v)m(ariables)d(in)g(Readline)g(using)f
+(the)g Ft(set)g Fu(command)f(within)i(the)f(init)h(\014le.)26
+b(The)17 b(syn)o(tax)315 2237 y(is)f(simple:)435 2300
+y Ft(set)23 b Fk(v)m(ariable)28 b(v)m(alue)315 2366 y
+Fu(Here,)14 b(for)f(example,)h(is)g(ho)o(w)f(to)g(c)o(hange)h(from)f
+(the)h(default)g(Emacs-lik)o(e)h(k)o(ey)e(binding)j(to)315
+2421 y(use)g Ft(vi)e Fu(line)j(editing)g(commands:)435
+2484 y Ft(set)23 b(editing-mode)g(vi)315 2549 y Fu(V)l(ariable)c(names)
+e(and)h(v)m(alues,)h(where)e(appropriate,)h(are)f(recognized)i(without)
+e(regard)315 2604 y(to)e(case.)315 2670 y(A)g(great)g(deal)g(of)g
+(run-time)h(b)q(eha)o(vior)g(is)g(c)o(hangeable)g(with)f(the)h(follo)o
+(wing)f(v)m(ariables.)p eop
 %%Page: 5 7
 5 6 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(5)555 149 y(`)p Ft(visible)p Fu(',)15 b(Readline)i(uses)g(a)f
-(visible)j(b)q(ell)g(if)e(one)f(is)h(a)o(v)m(ailable.)26
-b(If)16 b(set)h(to)555 204 y(`)p Ft(audible)p Fu(')g(\(the)h
+b(5)315 149 y Ft(bell-style)555 204 y Fu(Con)o(trols)21
+b(what)h(happ)q(ens)h(when)f(Readline)h(w)o(an)o(ts)e(to)g(ring)i(the)f
+(termi-)555 259 y(nal)d(b)q(ell.)32 b(If)19 b(set)f(to)g(`)p
+Ft(none)p Fu(',)g(Readline)i(nev)o(er)f(rings)g(the)f(b)q(ell.)32
+b(If)19 b(set)g(to)555 314 y(`)p Ft(visible)p Fu(',)c(Readline)i(uses)g
+(a)f(visible)j(b)q(ell)g(if)e(one)f(is)h(a)o(v)m(ailable.)26
+b(If)16 b(set)h(to)555 369 y(`)p Ft(audible)p Fu(')g(\(the)h
 (default\),)i(Readline)g(attempts)e(to)g(ring)h(the)g(terminal's)555
-259 y(b)q(ell.)315 338 y Ft(comment-begin)555 393 y Fu(The)c(string)f
+423 y(b)q(ell.)315 504 y Ft(comment-begin)555 559 y Fu(The)c(string)f
 (to)g(insert)i(at)d(the)i(b)q(eginning)i(of)d(the)h(line)h(when)f(the)g
-Ft(insert-)555 448 y(comment)f Fu(command)h(is)h(executed.)21
+Ft(insert-)555 614 y(comment)f Fu(command)h(is)h(executed.)21
 b(The)15 b(default)h(v)m(alue)g(is)g Ft("#")p Fu(.)315
-527 y Ft(completion-ignore-case)555 582 y Fu(If)e(set)f(to)g(`)p
+694 y Ft(completion-ignore-case)555 749 y Fu(If)e(set)f(to)g(`)p
 Ft(on)p Fu(',)g(Readline)i(p)q(erforms)e(\014lename)i(matc)o(hing)f
-(and)g(completion)555 637 y(in)i(a)f(case-insensitiv)o(e)i(fashion.)k
+(and)g(completion)555 804 y(in)i(a)f(case-insensitiv)o(e)i(fashion.)k
 (The)15 b(default)h(v)m(alue)g(is)g(`)p Ft(off)p Fu('.)315
-716 y Ft(completion-query-items)555 770 y Fu(The)d(n)o(um)o(b)q(er)h
+884 y Ft(completion-query-items)555 939 y Fu(The)d(n)o(um)o(b)q(er)h
 (of)e(p)q(ossible)j(completions)g(that)d(determines)i(when)g(the)f
-(user)555 825 y(is)21 b(ask)o(ed)g(whether)g(he)h(w)o(an)o(ts)d(to)i
+(user)555 994 y(is)21 b(ask)o(ed)g(whether)g(he)h(w)o(an)o(ts)d(to)i
 (see)g(the)g(list)h(of)e(p)q(ossibilitie)q(s.)40 b(If)21
-b(the)555 880 y(n)o(um)o(b)q(er)14 b(of)f(p)q(ossible)i(completions)f
+b(the)555 1049 y(n)o(um)o(b)q(er)14 b(of)f(p)q(ossible)i(completions)f
 (is)g(greater)f(than)g(this)h(v)m(alue,)h(Readline)555
-935 y(will)g(ask)e(the)g(user)h(whether)f(or)g(not)g(he)g(wishes)h(to)f
-(view)h(them;)f(otherwise,)555 990 y(they)f(are)g(simply)i(listed.)20
+1104 y(will)g(ask)e(the)g(user)h(whether)f(or)g(not)g(he)g(wishes)h(to)
+f(view)h(them;)f(otherwise,)555 1158 y(they)f(are)g(simply)i(listed.)20
 b(This)13 b(v)m(ariable)g(m)o(ust)f(b)q(e)h(set)f(to)f(an)h(in)o(teger)
-h(v)m(alue)555 1044 y(greater)h(than)h(or)g(equal)h(to)f(0.)k(The)d
-(default)f(limit)i(is)f Ft(100)p Fu(.)315 1124 y Ft(convert-meta)555
-1178 y Fu(If)11 b(set)g(to)g(`)p Ft(on)p Fu(',)f(Readline)i(will)h(con)
+h(v)m(alue)555 1213 y(greater)h(than)h(or)g(equal)h(to)f(0.)k(The)d
+(default)f(limit)i(is)f Ft(100)p Fu(.)315 1294 y Ft(convert-meta)555
+1348 y Fu(If)11 b(set)g(to)g(`)p Ft(on)p Fu(',)f(Readline)i(will)h(con)
 o(v)o(ert)d(c)o(haracters)h(with)g(the)g(eigh)o(th)h(bit)f(set)555
-1233 y(to)f(an)h Fp(asci)q(i)e Fu(k)o(ey)i(sequence)g(b)o(y)g
+1403 y(to)f(an)h Fp(asci)q(i)e Fu(k)o(ey)i(sequence)g(b)o(y)g
 (stripping)h(the)e(eigh)o(th)h(bit)h(and)e(pre\014xing)i(an)555
-1286 y Fn(h)p 567 1260 70 2 v 567 1288 a Fm(ESC)p 567
-1296 V 634 1286 a Fn(i)666 1288 y Fu(c)o(haracter,)k(con)o(v)o(erting)h
+1456 y Fn(h)p 567 1430 70 2 v 567 1458 a Fm(ESC)p 567
+1466 V 634 1456 a Fn(i)666 1458 y Fu(c)o(haracter,)k(con)o(v)o(erting)h
 (them)g(to)f(a)h(meta-pre\014xed)g(k)o(ey)g(sequence.)555
-1343 y(The)e(default)h(v)m(alue)h(is)e(`)p Ft(on)p Fu('.)315
-1422 y Ft(disable-completion)555 1477 y Fu(If)k(set)f(to)f(`)p
+1513 y(The)e(default)h(v)m(alue)h(is)e(`)p Ft(on)p Fu('.)315
+1593 y Ft(disable-completion)555 1648 y Fu(If)k(set)f(to)f(`)p
 Ft(On)p Fu(',)h(Readline)i(will)g(inhibit)g(w)o(ord)e(completion.)30
-b(Completion)555 1531 y(c)o(haracters)12 b(will)j(b)q(e)f(inserted)g
+b(Completion)555 1703 y(c)o(haracters)12 b(will)j(b)q(e)f(inserted)g
 (in)o(to)f(the)g(line)h(as)f(if)h(they)f(had)g(b)q(een)h(mapp)q(ed)555
-1586 y(to)h Ft(self-insert)p Fu(.)j(The)d(default)h(is)g(`)p
-Ft(off)p Fu('.)315 1665 y Ft(editing-mode)555 1720 y
+1758 y(to)h Ft(self-insert)p Fu(.)j(The)d(default)h(is)g(`)p
+Ft(off)p Fu('.)315 1838 y Ft(editing-mode)555 1893 y
 Fu(The)f Ft(editing-mode)d Fu(v)m(ariable)k(con)o(trols)e(whic)o(h)h
-(default)g(set)f(of)g(k)o(ey)g(bind-)555 1775 y(ings)f(is)g(used.)20
+(default)g(set)f(of)g(k)o(ey)g(bind-)555 1948 y(ings)f(is)g(used.)20
 b(By)12 b(default,)i(Readline)f(starts)f(up)h(in)g(Emacs)f(editing)i
-(mo)q(de,)555 1830 y(where)h(the)f(k)o(eystrok)o(es)g(are)g(most)g
+(mo)q(de,)555 2003 y(where)h(the)f(k)o(eystrok)o(es)g(are)g(most)g
 (similar)i(to)d(Emacs.)20 b(This)15 b(v)m(ariable)h(can)555
-1885 y(b)q(e)g(set)f(to)f(either)i(`)p Ft(emacs)p Fu(')e(or)h(`)p
-Ft(vi)p Fu('.)315 1964 y Ft(enable-keypad)555 2019 y
+2058 y(b)q(e)g(set)f(to)f(either)i(`)p Ft(emacs)p Fu(')e(or)h(`)p
+Ft(vi)p Fu('.)315 2138 y Ft(enable-keypad)555 2193 y
 Fu(When)d(set)f(to)h(`)p Ft(on)p Fu(',)e(Readline)j(will)h(try)d(to)g
-(enable)i(the)f(application)h(k)o(eypad)555 2073 y(when)h(it)f(is)h
+(enable)i(the)f(application)h(k)o(eypad)555 2248 y(when)h(it)f(is)h
 (called.)21 b(Some)13 b(systems)g(need)h(this)g(to)f(enable)h(the)g
-(arro)o(w)e(k)o(eys.)555 2128 y(The)j(default)h(is)g(`)p
-Ft(off)p Fu('.)315 2207 y Ft(expand-tilde)555 2262 y
+(arro)o(w)e(k)o(eys.)555 2303 y(The)j(default)h(is)g(`)p
+Ft(off)p Fu('.)315 2383 y Ft(expand-tilde)555 2438 y
 Fu(If)e(set)g(to)f(`)p Ft(on)p Fu(',)f(tilde)k(expansion)e(is)h(p)q
-(erformed)f(when)g(Readline)h(attempts)555 2317 y(w)o(ord)g
+(erformed)f(when)g(Readline)h(attempts)555 2493 y(w)o(ord)g
 (completion.)21 b(The)15 b(default)h(is)f(`)p Ft(off)p
-Fu('.)315 2396 y Ft(horizontal-scroll-mode)555 2451 y
-Fu(This)k(v)m(ariable)g(can)f(b)q(e)g(set)g(to)f(either)i(`)p
-Ft(on)p Fu(')e(or)g(`)p Ft(off)p Fu('.)27 b(Setting)19
-b(it)f(to)f(`)p Ft(on)p Fu(')555 2506 y(means)c(that)f(the)i(text)e(of)
-h(the)g(lines)i(b)q(eing)f(edited)g(will)h(scroll)f(horizon)o(tally)555
-2560 y(on)i(a)f(single)i(screen)g(line)g(when)g(they)f(are)f(longer)h
-(than)g(the)g(width)g(of)g(the)555 2615 y(screen,)e(instead)f(of)g
-(wrapping)g(on)o(to)f(a)h(new)g(screen)h(line.)21 b(By)13
-b(default,)h(this)555 2670 y(v)m(ariable)j(is)e(set)g(to)g(`)p
-Ft(off)p Fu('.)p eop
+Fu('.)555 2560 y(If)g(set)g(to)f(`)p Ft(on)p Fu(',)g(the)g(history)h
+(co)q(de)h(attempts)e(to)g(place)i(p)q(oin)o(t)f(at)f(the)h(same)555
+2615 y(lo)q(cation)20 b(on)f(eac)o(h)g(history)h(line)g(retriv)o(ed)g
+(with)f Ft(previous-history)e Fu(or)555 2670 y Ft(next-history)p
+Fu(.)p eop
 %%Page: 6 8
 6 7 bop 75 -58 a Fu(6)1322 b(GNU)15 b(Readline)h(Library)315
-149 y Ft(input-meta)555 204 y Fu(If)g(set)f(to)g(`)p
+149 y Ft(horizontal-scroll-mode)555 204 y Fu(This)j(v)m(ariable)g(can)f
+(b)q(e)g(set)g(to)f(either)i(`)p Ft(on)p Fu(')e(or)g(`)p
+Ft(off)p Fu('.)27 b(Setting)19 b(it)f(to)f(`)p Ft(on)p
+Fu(')555 259 y(means)c(that)f(the)i(text)e(of)h(the)g(lines)i(b)q(eing)
+f(edited)g(will)h(scroll)f(horizon)o(tally)555 314 y(on)i(a)f(single)i
+(screen)g(line)g(when)g(they)f(are)f(longer)h(than)g(the)g(width)g(of)g
+(the)555 369 y(screen,)e(instead)f(of)g(wrapping)g(on)o(to)f(a)h(new)g
+(screen)h(line.)21 b(By)13 b(default,)h(this)555 423
+y(v)m(ariable)j(is)e(set)g(to)g(`)p Ft(off)p Fu('.)315
+506 y Ft(input-meta)555 560 y Fu(If)h(set)f(to)g(`)p
 Ft(on)p Fu(',)f(Readline)j(will)h(enable)e(eigh)o(t-bit)h(input)f(\(it)
-g(will)h(not)e(clear)555 259 y(the)20 b(eigh)o(th)g(bit)g(in)h(the)f(c)
+g(will)h(not)e(clear)555 615 y(the)20 b(eigh)o(th)g(bit)g(in)h(the)f(c)
 o(haracters)f(it)h(reads\),)g(regardless)g(of)g(what)f(the)555
-314 y(terminal)i(claims)g(it)f(can)g(supp)q(ort.)34 b(The)20
+670 y(terminal)i(claims)g(it)f(can)g(supp)q(ort.)34 b(The)20
 b(default)h(v)m(alue)g(is)g(`)p Ft(off)p Fu('.)33 b(The)555
-369 y(name)15 b Ft(meta-flag)f Fu(is)i(a)f(synon)o(ym)g(for)f(this)i(v)
-m(ariable.)315 448 y Ft(isearch-terminators)555 503 y
+725 y(name)15 b Ft(meta-flag)f Fu(is)i(a)f(synon)o(ym)g(for)f(this)i(v)
+m(ariable.)315 807 y Ft(isearch-terminators)555 862 y
 Fu(The)26 b(string)g(of)f(c)o(haracters)g(that)g(should)i(terminate)f
-(an)g(incremen)o(tal)555 557 y(searc)o(h)12 b(without)h(subsequen)o
+(an)g(incremen)o(tal)555 917 y(searc)o(h)12 b(without)h(subsequen)o
 (tly)g(executing)h(the)e(c)o(haracter)g(as)g(a)g(command)555
-612 y(\(see)22 b(Section)h(1.2.5)e([Searc)o(hing],)j(page)e(3\).)40
-b(If)23 b(this)g(v)m(ariable)g(has)f(not)555 667 y(b)q(een)17
+971 y(\(see)22 b(Section)h(1.2.5)e([Searc)o(hing],)j(page)e(3\).)40
+b(If)23 b(this)g(v)m(ariable)g(has)f(not)555 1026 y(b)q(een)17
 b(giv)o(en)f(a)g(v)m(alue,)g(the)g(c)o(haracters)1247
-665 y Fn(h)p 1259 639 70 2 v 1259 667 a Fm(ESC)p 1259
-675 V 1326 665 a Fn(i)1357 667 y Fu(and)g Fo(C-J)f Fu(will)i(terminate)
-f(an)555 722 y(incremen)o(tal)g(searc)o(h.)315 801 y
-Ft(keymap)96 b Fu(Sets)19 b(Readline's)i(idea)f(of)f(the)g(curren)o(t)h
-(k)o(eymap)f(for)f(k)o(ey)i(binding)h(com-)555 856 y(mands.)41
-b(Acceptable)23 b Ft(keymap)f Fu(names)g(are)f Ft(emacs)p
-Fu(,)i Ft(emacs-standard)p Fu(,)555 910 y Ft(emacs-meta)p
-Fu(,)49 b Ft(emacs-ctlx)p Fu(,)g Ft(vi)p Fu(,)h Ft(vi-move)p
-Fu(,)f Ft(vi-command)p Fu(,)g(and)555 965 y Ft(vi-insert)p
-Fu(.)31 b Ft(vi)20 b Fu(is)g(equiv)m(alen)o(t)h(to)e
-Ft(vi-command)p Fu(;)g Ft(emacs)g Fu(is)h(equiv)m(alen)o(t)555
-1020 y(to)15 b Ft(emacs-standard)p Fu(.)20 b(The)d(default)f(v)m(alue)h
+1024 y Fn(h)p 1259 998 70 2 v 1259 1026 a Fm(ESC)p 1259
+1034 V 1326 1024 a Fn(i)1357 1026 y Fu(and)g Fo(C-J)f
+Fu(will)i(terminate)f(an)555 1081 y(incremen)o(tal)g(searc)o(h.)315
+1163 y Ft(keymap)96 b Fu(Sets)19 b(Readline's)i(idea)f(of)f(the)g
+(curren)o(t)h(k)o(eymap)f(for)f(k)o(ey)i(binding)h(com-)555
+1218 y(mands.)41 b(Acceptable)23 b Ft(keymap)f Fu(names)g(are)f
+Ft(emacs)p Fu(,)i Ft(emacs-standard)p Fu(,)555 1273 y
+Ft(emacs-meta)p Fu(,)49 b Ft(emacs-ctlx)p Fu(,)g Ft(vi)p
+Fu(,)h Ft(vi-move)p Fu(,)f Ft(vi-command)p Fu(,)g(and)555
+1328 y Ft(vi-insert)p Fu(.)31 b Ft(vi)20 b Fu(is)g(equiv)m(alen)o(t)h
+(to)e Ft(vi-command)p Fu(;)g Ft(emacs)g Fu(is)h(equiv)m(alen)o(t)555
+1382 y(to)15 b Ft(emacs-standard)p Fu(.)20 b(The)d(default)f(v)m(alue)h
 (is)g Ft(emacs)p Fu(.)k(The)16 b(v)m(alue)h(of)f(the)555
-1075 y Ft(editing-mode)e Fu(v)m(ariable)i(also)f(a\013ects)g(the)g
-(default)h(k)o(eymap.)315 1154 y Ft(mark-directories)555
-1209 y Fu(If)j(set)g(to)g(`)p Ft(on)p Fu(',)f(completed)i(directory)g
-(names)f(ha)o(v)o(e)f(a)h(slash)h(app)q(ended.)555 1264
-y(The)15 b(default)h(is)g(`)p Ft(on)p Fu('.)315 1343
-y Ft(mark-modified-lines)555 1398 y Fu(This)j(v)m(ariable,)g(when)g
+1437 y Ft(editing-mode)e Fu(v)m(ariable)i(also)f(a\013ects)g(the)g
+(default)h(k)o(eymap.)315 1519 y Ft(mark-directories)555
+1574 y Fu(If)j(set)g(to)g(`)p Ft(on)p Fu(',)f(completed)i(directory)g
+(names)f(ha)o(v)o(e)f(a)h(slash)h(app)q(ended.)555 1629
+y(The)15 b(default)h(is)g(`)p Ft(on)p Fu('.)315 1711
+y Ft(mark-modified-lines)555 1766 y Fu(This)j(v)m(ariable,)g(when)g
 (set)e(to)h(`)p Ft(on)p Fu(',)f(causes)h(Readline)h(to)e(displa)o(y)i
-(an)f(as-)555 1452 y(terisk)f(\(`)p Ft(*)p Fu('\))e(at)i(the)f(start)g
+(an)f(as-)555 1821 y(terisk)f(\(`)p Ft(*)p Fu('\))e(at)i(the)f(start)g
 (of)h(history)f(lines)j(whic)o(h)e(ha)o(v)o(e)g(b)q(een)h(mo)q
-(di\014ed.)555 1507 y(This)e(v)m(ariable)g(is)g(`)p Ft(off)p
-Fu(')e(b)o(y)h(default.)315 1586 y Ft(output-meta)555
-1641 y Fu(If)j(set)f(to)g(`)p Ft(on)p Fu(',)g(Readline)i(will)h(displa)
+(di\014ed.)555 1875 y(This)e(v)m(ariable)g(is)g(`)p Ft(off)p
+Fu(')e(b)o(y)h(default.)315 1958 y Ft(match-hidden-files)555
+2012 y Fu(This)d(v)m(ariable,)h(when)e(set)g(to)g(`)p
+Ft(on)p Fu(',)f(causes)h(Readline)i(to)d(matc)o(h)h(\014les)h(whose)555
+2067 y(names)22 b(b)q(egin)h(with)g(a)e(`)p Ft(.)p Fu(')h(\(hidden)h
+(\014les\))g(when)f(p)q(erforming)h(\014lename)555 2122
+y(completion,)g(unless)f(the)f(leading)h(`)p Ft(.)p Fu(')e(is)h
+(supplied)i(b)o(y)e(the)f(user)h(in)h(the)555 2177 y(\014lename)16
+b(to)f(b)q(e)h(completed.)21 b(This)15 b(v)m(ariable)i(is)f(`)p
+Ft(on)p Fu(')e(b)o(y)h(default.)315 2259 y Ft(output-meta)555
+2314 y Fu(If)j(set)f(to)g(`)p Ft(on)p Fu(',)g(Readline)i(will)h(displa)
 o(y)f(c)o(haracters)d(with)j(the)e(eigh)o(th)h(bit)555
-1696 y(set)g(directly)i(rather)d(than)h(as)g(a)g(meta-pre\014xed)h
-(escap)q(e)g(sequence.)30 b(The)555 1751 y(default)16
-b(is)f(`)p Ft(off)p Fu('.)315 1830 y Ft(print-completions-horizont)o
-(ally)555 1885 y Fu(If)d(set)g(to)f(`)p Ft(on)p Fu(',)h(Readline)h
+2369 y(set)g(directly)i(rather)d(than)h(as)g(a)g(meta-pre\014xed)h
+(escap)q(e)g(sequence.)30 b(The)555 2423 y(default)16
+b(is)f(`)p Ft(off)p Fu('.)315 2506 y Ft(print-completions-horizont)o
+(ally)555 2560 y Fu(If)d(set)g(to)f(`)p Ft(on)p Fu(',)h(Readline)h
 (will)g(displa)o(y)h(completions)f(with)f(matc)o(hes)f(sorted)555
-1939 y(horizon)o(tally)23 b(in)f(alphab)q(etical)i(order,)f(rather)e
-(than)g(do)o(wn)h(the)g(screen.)555 1994 y(The)15 b(default)h(is)g(`)p
-Ft(off)p Fu('.)315 2073 y Ft(show-all-if-ambiguous)555
-2128 y Fu(This)g(alters)e(the)i(default)f(b)q(eha)o(vior)h(of)e(the)h
-(completion)h(functions.)21 b(If)15 b(set)555 2183 y(to)e(`)p
-Ft(on)p Fu(',)g(w)o(ords)g(whic)o(h)h(ha)o(v)o(e)g(more)f(than)g(one)h
-(p)q(ossible)i(completion)f(cause)555 2238 y(the)20 b(matc)o(hes)f(to)f
-(b)q(e)j(listed)f(immediately)h(instead)f(of)f(ringing)i(the)e(b)q
-(ell.)555 2293 y(The)c(default)h(v)m(alue)h(is)e(`)p
-Ft(off)p Fu('.)315 2372 y Ft(visible-stats)555 2426 y
-Fu(If)h(set)g(to)f(`)p Ft(on)p Fu(',)g(a)h(c)o(haracter)f(denoting)h(a)
-g(\014le's)h(t)o(yp)q(e)f(is)g(app)q(ended)i(to)d(the)555
-2481 y(\014lename)h(when)g(listing)h(p)q(ossible)g(completions.)j(The)c
-(default)g(is)f(`)p Ft(off)p Fu('.)75 2560 y(Key)h(Bindings)315
-2615 y(The)21 b(syn)o(tax)f(for)h(con)o(trolling)h(k)o(ey)f(bindings)h
-(in)g(the)f(init)h(\014le)g(is)g(simple.)39 b(First)20
-b(y)o(ou)315 2670 y(need)15 b(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)p eop
+2615 y(horizon)o(tally)23 b(in)f(alphab)q(etical)i(order,)f(rather)e
+(than)g(do)o(wn)h(the)g(screen.)555 2670 y(The)15 b(default)h(is)g(`)p
+Ft(off)p Fu('.)p eop
 %%Page: 7 9
 7 8 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(7)315 149 y(sections)18 b(con)o(tain)h(tables)f(of)f(the)h(command)g
-(name,)g(the)g(default)h(k)o(eybinding,)h(if)e(an)o(y)l(,)315
-204 y(and)d(a)g(short)g(description)i(of)d(what)h(the)g(command)g(do)q
-(es.)315 273 y(Once)k(y)o(ou)f(kno)o(w)f(the)h(name)g(of)g(the)g
+b(7)315 149 y Ft(show-all-if-ambiguous)555 204 y Fu(This)16
+b(alters)e(the)i(default)f(b)q(eha)o(vior)h(of)e(the)h(completion)h
+(functions.)21 b(If)15 b(set)555 259 y(to)e(`)p Ft(on)p
+Fu(',)g(w)o(ords)g(whic)o(h)h(ha)o(v)o(e)g(more)f(than)g(one)h(p)q
+(ossible)i(completion)f(cause)555 314 y(the)20 b(matc)o(hes)f(to)f(b)q
+(e)j(listed)f(immediately)h(instead)f(of)f(ringing)i(the)e(b)q(ell.)555
+369 y(The)c(default)h(v)m(alue)h(is)e(`)p Ft(off)p Fu('.)315
+448 y Ft(visible-stats)555 502 y Fu(If)h(set)g(to)f(`)p
+Ft(on)p Fu(',)g(a)h(c)o(haracter)f(denoting)h(a)g(\014le's)h(t)o(yp)q
+(e)f(is)g(app)q(ended)i(to)d(the)555 557 y(\014lename)h(when)g(listing)
+h(p)q(ossible)g(completions.)j(The)c(default)g(is)f(`)p
+Ft(off)p Fu('.)75 636 y(Key)h(Bindings)315 691 y(The)21
+b(syn)o(tax)f(for)h(con)o(trolling)h(k)o(ey)f(bindings)h(in)g(the)f
+(init)h(\014le)g(is)g(simple.)39 b(First)20 b(y)o(ou)315
+746 y(need)15 b(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
+801 y(sections)k(con)o(tain)h(tables)f(of)f(the)h(command)g(name,)g
+(the)g(default)h(k)o(eybinding,)h(if)e(an)o(y)l(,)315
+855 y(and)d(a)g(short)g(description)i(of)d(what)h(the)g(command)g(do)q
+(es.)315 922 y(Once)k(y)o(ou)f(kno)o(w)f(the)h(name)g(of)g(the)g
 (command,)g(simply)h(place)g(on)f(a)f(line)j(in)f(the)f(init)315
-328 y(\014le)g(the)f(name)g(of)f(the)h(k)o(ey)g(y)o(ou)f(wish)i(to)e
+977 y(\014le)g(the)f(name)g(of)f(the)h(k)o(ey)g(y)o(ou)f(wish)i(to)e
 (bind)i(the)f(command)g(to,)f(a)g(colon,)i(and)f(then)315
-382 y(the)f(name)g(of)g(the)g(command.)22 b(The)16 b(name)g(of)g(the)g
+1032 y(the)f(name)g(of)g(the)g(command.)22 b(The)16 b(name)g(of)g(the)g
 (k)o(ey)f(can)i(b)q(e)f(expressed)h(in)g(di\013eren)o(t)315
-437 y(w)o(a)o(ys,)d(dep)q(ending)j(on)e(what)g(y)o(ou)g(\014nd)h(most)e
-(comfortable.)315 506 y(In)19 b(addition)g(to)e(command)h(names,)g
+1087 y(w)o(a)o(ys,)d(dep)q(ending)j(on)e(what)g(y)o(ou)g(\014nd)h(most)
+e(comfortable.)315 1154 y(In)19 b(addition)g(to)e(command)h(names,)g
 (readline)i(allo)o(ws)e(k)o(eys)g(to)f(b)q(e)i(b)q(ound)g(to)e(a)h
-(string)315 561 y(that)c(is)i(inserted)g(when)g(the)f(k)o(ey)g(is)h
-(pressed)g(\(a)e Fk(macro)r Fu(\).)315 643 y Fk(k)o(eyname)s
-Fu(:)19 b Fk(function-name)g Fu(or)c Fk(macro)555 698
+(string)315 1208 y(that)c(is)i(inserted)g(when)g(the)f(k)o(ey)g(is)h
+(pressed)g(\(a)e Fk(macro)r Fu(\).)315 1288 y Fk(k)o(eyname)s
+Fu(:)19 b Fk(function-name)g Fu(or)c Fk(macro)555 1342
 y(k)o(eyname)i Fu(is)e(the)f(name)h(of)f(a)g(k)o(ey)g(sp)q(elled)j(out)
-d(in)h(English.)21 b(F)l(or)13 b(example:)675 764 y Ft(Control-u:)22
-b(universal-argument)675 816 y(Meta-Rubout:)g(backward-kill-word)675
-867 y(Control-o:)g(">)i(output")555 936 y Fu(In)c(the)f(ab)q(o)o(v)o(e)
-g(example,)i Fo(C-u)e Fu(is)h(b)q(ound)g(to)f(the)g(function)h
-Ft(universal-)555 991 y(argument)p Fu(,)e Fo(M-DEL)h
-Fu(is)g(b)q(ound)h(to)e(the)h(function)h Ft(backward-kill-word)p
-Fu(,)555 1046 y(and)g Fo(C-o)f Fu(is)h(b)q(ound)g(to)f(run)h(the)f
-(macro)g(expressed)h(on)g(the)f(righ)o(t)h(hand)555 1101
-y(side)c(\(that)e(is,)i(to)e(insert)i(the)f(text)g(`)p
-Ft(>)f(output)p Fu(')g(in)o(to)i(the)f(line\).)555 1169
-y(A)k(n)o(um)o(b)q(er)f(of)g(sym)o(b)q(olic)i(c)o(haracter)e(names)g
-(are)g(recognized)i(while)g(pro-)555 1224 y(cessing)13
+d(in)h(English.)21 b(F)l(or)13 b(example:)675 1406 y
+Ft(Control-u:)22 b(universal-argument)675 1458 y(Meta-Rubout:)g
+(backward-kill-word)675 1510 y(Control-o:)g(">)i(output")555
+1577 y Fu(In)c(the)f(ab)q(o)o(v)o(e)g(example,)i Fo(C-u)e
+Fu(is)h(b)q(ound)g(to)f(the)g(function)h Ft(universal-)555
+1632 y(argument)p Fu(,)e Fo(M-DEL)h Fu(is)g(b)q(ound)h(to)e(the)h
+(function)h Ft(backward-kill-word)p Fu(,)555 1687 y(and)g
+Fo(C-o)f Fu(is)h(b)q(ound)g(to)f(run)h(the)f(macro)g(expressed)h(on)g
+(the)f(righ)o(t)h(hand)555 1741 y(side)c(\(that)e(is,)i(to)e(insert)i
+(the)f(text)g(`)p Ft(>)f(output)p Fu(')g(in)o(to)i(the)f(line\).)555
+1808 y(A)k(n)o(um)o(b)q(er)f(of)g(sym)o(b)q(olic)i(c)o(haracter)e
+(names)g(are)g(recognized)i(while)g(pro-)555 1863 y(cessing)13
 b(this)f(k)o(ey)g(binding)h(syn)o(tax:)18 b Fk(DEL)p
 Fu(,)11 b Fk(ESC)p Fu(,)h Fk(ESCAPE)p Fu(,)f Fk(LFD)p
-Fu(,)g Fk(NEW-)555 1279 y(LINE)p Fu(,)16 b Fk(RET)p Fu(,)e
+Fu(,)g Fk(NEW-)555 1918 y(LINE)p Fu(,)16 b Fk(RET)p Fu(,)e
 Fk(RETURN)p Fu(,)f Fk(R)o(UBOUT)p Fu(,)i Fk(SP)l(A)o(CE)p
-Fu(,)g Fk(SPC)p Fu(,)f(and)i Fk(T)l(AB)p Fu(.)315 1361
+Fu(,)g Fk(SPC)p Fu(,)f(and)i Fk(T)l(AB)p Fu(.)315 1997
 y Ft(")p Fk(k)o(eyseq)q Ft(")p Fu(:)k Fk(function-name)e
-Fu(or)d Fk(macro)555 1416 y(k)o(eyseq)i Fu(di\013ers)e(from)g
+Fu(or)d Fk(macro)555 2052 y(k)o(eyseq)i Fu(di\013ers)e(from)g
 Fk(k)o(eyname)j Fu(ab)q(o)o(v)o(e)d(in)i(that)d(strings)i(denoting)g
-(an)f(en-)555 1471 y(tire)i(k)o(ey)g(sequence)h(can)f(b)q(e)g(sp)q
+(an)f(en-)555 2107 y(tire)i(k)o(ey)g(sequence)h(can)f(b)q(e)g(sp)q
 (eci\014ed,)i(b)o(y)e(placing)h(the)f(k)o(ey)g(sequence)h(in)555
-1526 y(double)e(quotes.)j(Some)c Fp(gnu)g Fu(Emacs)f(st)o(yle)h(k)o(ey)
-g(escap)q(es)g(can)g(b)q(e)g(used,)g(as)555 1580 y(in)j(the)f(follo)o
+2161 y(double)e(quotes.)j(Some)c Fp(gnu)g Fu(Emacs)f(st)o(yle)h(k)o(ey)
+g(escap)q(es)g(can)g(b)q(e)g(used,)g(as)555 2216 y(in)j(the)f(follo)o
 (wing)g(example,)h(but)f(the)g(sp)q(ecial)i(c)o(haracter)d(names)h(are)
-f(not)555 1635 y(recognized.)675 1701 y Ft("\\C-u":)23
-b(universal-argument)675 1753 y("\\C-x\\C-r":)f(re-read-init-file)675
-1805 y("\\e[11~":)h("Function)f(Key)i(1")555 1873 y Fu(In)33
+f(not)555 2271 y(recognized.)675 2335 y Ft("\\C-u":)23
+b(universal-argument)675 2387 y("\\C-x\\C-r":)f(re-read-init-file)675
+2439 y("\\e[11~":)h("Function)f(Key)i(1")555 2506 y Fu(In)33
 b(the)f(ab)q(o)o(v)o(e)g(example,)37 b Fo(C-u)32 b Fu(is)h(again)f(b)q
-(ound)h(to)f(the)g(function)555 1928 y Ft(universal-argument)19
+(ound)h(to)f(the)g(function)555 2560 y Ft(universal-argument)19
 b Fu(\(just)j(as)f(it)h(w)o(as)f(in)i(the)f(\014rst)f(example\),)j(`)p
-Fo(C-x)555 1983 y(C-r)p Fu(')c(is)h(b)q(ound)g(to)f(the)h(function)g
-Ft(re-read-init-file)p Fu(,)f(and)g(`)1731 1981 y Fn(h)p
-1743 1955 70 2 v 1743 1983 a Fm(ESC)p 1743 1991 V 1810
-1981 a Fn(i)15 b(h)p 1852 1955 10 2 v 1852 1983 a Fm([)p
-1852 1991 V 1860 1981 a Fn(i)555 2036 y(h)p 567 2010
-18 2 v 567 2038 a Fm(1)p 567 2045 V 583 2036 a Fn(i)g(h)p
-625 2010 V 625 2038 a Fm(1)p 625 2045 V 640 2036 a Fn(i)g(h)p
-683 2010 24 2 v 683 2038 a Ft(~)p 683 2045 V 704 2036
-a Fn(i)719 2038 y Fu(')g(is)h(b)q(ound)g(to)e(insert)i(the)f(text)g(`)p
-Ft(Function)f(Key)g(1)p Fu('.)315 2120 y(The)h(follo)o(wing)h
-Fp(gnu)e Fu(Emacs)h(st)o(yle)g(escap)q(e)h(sequences)g(are)e(a)o(v)m
-(ailable)j(when)e(sp)q(ecifying)315 2175 y(k)o(ey)g(sequences:)315
-2258 y Fo(\\C-)168 b Fu(con)o(trol)15 b(pre\014x)315
-2340 y Fo(\\M-)168 b Fu(meta)15 b(pre\014x)315 2423 y
-Fo(\\e)192 b Fu(an)15 b(escap)q(e)h(c)o(haracter)315
-2505 y Fo(\\\\)192 b Fu(bac)o(kslash)315 2587 y Fo(\\)p
-Ft(")555 2585 y Fn(h)p 567 2559 V 567 2587 a Ft(")p 567
-2595 V 589 2585 a Fn(i)604 2587 y Fu(,)15 b(a)f(double)j(quotation)e
-(mark)315 2670 y Fo(\\')555 2668 y Fn(h)p 567 2642 10
-2 v 567 2670 a Fm(')p 567 2678 V 575 2668 a Fn(i)590
-2670 y Fu(,)g(a)f(single)j(quote)e(or)g(ap)q(ostrophe)p
-eop
+Fo(C-x)555 2615 y(C-r)p Fu(')c(is)h(b)q(ound)g(to)f(the)h(function)g
+Ft(re-read-init-file)p Fu(,)f(and)g(`)1731 2613 y Fn(h)p
+1743 2587 70 2 v 1743 2615 a Fm(ESC)p 1743 2623 V 1810
+2613 a Fn(i)15 b(h)p 1852 2587 10 2 v 1852 2615 a Fm([)p
+1852 2623 V 1860 2613 a Fn(i)555 2668 y(h)p 567 2642
+18 2 v 567 2670 a Fm(1)p 567 2678 V 583 2668 a Fn(i)g(h)p
+625 2642 V 625 2670 a Fm(1)p 625 2678 V 640 2668 a Fn(i)g(h)p
+683 2642 24 2 v 683 2670 a Ft(~)p 683 2678 V 704 2668
+a Fn(i)719 2670 y Fu(')g(is)h(b)q(ound)g(to)e(insert)i(the)f(text)g(`)p
+Ft(Function)f(Key)g(1)p Fu('.)p eop
 %%Page: 8 10
 8 9 bop 75 -58 a Fu(8)1322 b(GNU)15 b(Readline)h(Library)315
-149 y(In)e(addition)h(to)f(the)f Fp(gnu)h Fu(Emacs)g(st)o(yle)f(escap)q
-(e)i(sequences,)g(a)e(second)i(set)e(of)h(bac)o(kslash)315
-204 y(escap)q(es)i(is)g(a)o(v)m(ailable:)315 286 y Ft(\\a)192
-b Fu(alert)15 b(\(b)q(ell\))315 368 y Ft(\\b)192 b Fu(bac)o(kspace)315
-449 y Ft(\\d)g Fu(delete)315 531 y Ft(\\f)g Fu(form)14
-b(feed)315 613 y Ft(\\n)192 b Fu(newline)315 694 y Ft(\\r)g
-Fu(carriage)15 b(return)315 776 y Ft(\\t)192 b Fu(horizon)o(tal)16
-b(tab)315 858 y Ft(\\v)192 b Fu(v)o(ertical)16 b(tab)315
-940 y Ft(\\)p Fk(nnn)141 b Fu(the)14 b(c)o(haracter)f(whose)h
-Fp(asci)q(i)e Fu(co)q(de)j(is)f(the)g(o)q(ctal)g(v)m(alue)h
-Fk(nnn)f Fu(\(one)g(to)f(three)555 994 y(digits\))315
-1076 y Ft(\\x)p Fk(nnn)117 b Fu(the)16 b(c)o(haracter)f(whose)h
-Fp(asci)q(i)f Fu(co)q(de)i(is)f(the)h(hexadecimal)g(v)m(alue)g
-Fk(nnn)g Fu(\(one)555 1131 y(to)e(three)g(digits\))315
-1213 y(When)k(en)o(tering)g(the)g(text)f(of)g(a)h(macro,)f(single)i(or)
-e(double)i(quotes)f(m)o(ust)f(b)q(e)h(used)h(to)315 1267
+149 y(The)f(follo)o(wing)h Fp(gnu)e Fu(Emacs)h(st)o(yle)g(escap)q(e)h
+(sequences)g(are)e(a)o(v)m(ailable)j(when)e(sp)q(ecifying)315
+204 y(k)o(ey)g(sequences:)315 287 y Fo(\\C-)168 b Fu(con)o(trol)15
+b(pre\014x)315 370 y Fo(\\M-)168 b Fu(meta)15 b(pre\014x)315
+453 y Fo(\\e)192 b Fu(an)15 b(escap)q(e)h(c)o(haracter)315
+536 y Fo(\\\\)192 b Fu(bac)o(kslash)315 619 y Fo(\\)p
+Ft(")555 617 y Fn(h)p 567 591 24 2 v 567 619 a Ft(")p
+567 627 V 589 617 a Fn(i)604 619 y Fu(,)15 b(a)f(double)j(quotation)e
+(mark)315 702 y Fo(\\')555 700 y Fn(h)p 567 674 10 2
+v 567 702 a Fm(')p 567 710 V 575 700 a Fn(i)590 702 y
+Fu(,)g(a)f(single)j(quote)e(or)g(ap)q(ostrophe)315 785
+y(In)f(addition)h(to)f(the)f Fp(gnu)h Fu(Emacs)g(st)o(yle)f(escap)q(e)i
+(sequences,)g(a)e(second)i(set)e(of)h(bac)o(kslash)315
+840 y(escap)q(es)i(is)g(a)o(v)m(ailable:)315 923 y Ft(\\a)192
+b Fu(alert)15 b(\(b)q(ell\))315 1006 y Ft(\\b)192 b Fu(bac)o(kspace)315
+1089 y Ft(\\d)g Fu(delete)315 1172 y Ft(\\f)g Fu(form)14
+b(feed)315 1255 y Ft(\\n)192 b Fu(newline)315 1338 y
+Ft(\\r)g Fu(carriage)15 b(return)315 1421 y Ft(\\t)192
+b Fu(horizon)o(tal)16 b(tab)315 1504 y Ft(\\v)192 b Fu(v)o(ertical)16
+b(tab)315 1587 y Ft(\\)p Fk(nnn)141 b Fu(the)17 b(eigh)o(t-bit)h(c)o
+(haracter)f(whose)g(v)m(alue)i(is)e(the)h(o)q(ctal)f(v)m(alue)i
+Fk(nnn)f Fu(\(one)f(to)555 1642 y(three)e(digits\))315
+1725 y Ft(\\x)p Fk(HH)124 b Fu(the)20 b(eigh)o(t-bit)g(c)o(haracter)f
+(whose)h(v)m(alue)h(is)f(the)g(hexadecimal)h(v)m(alue)g
+Fk(HH)555 1780 y Fu(\(one)15 b(or)g(t)o(w)o(o)f(hex)h(digits\))315
+1863 y(When)k(en)o(tering)g(the)g(text)f(of)g(a)h(macro,)f(single)i(or)
+e(double)i(quotes)f(m)o(ust)f(b)q(e)h(used)h(to)315 1917
 y(indicate)12 b(a)f(macro)f(de\014nition.)20 b(Unquoted)11
 b(text)f(is)i(assumed)e(to)h(b)q(e)g(a)f(function)i(name.)18
-b(In)315 1322 y(the)11 b(macro)f(b)q(o)q(dy)l(,)i(the)f(bac)o(kslash)g
+b(In)315 1972 y(the)11 b(macro)f(b)q(o)q(dy)l(,)i(the)f(bac)o(kslash)g
 (escap)q(es)g(describ)q(ed)i(ab)q(o)o(v)o(e)d(are)g(expanded.)20
-b(Bac)o(kslash)315 1377 y(will)i(quote)d(an)o(y)h(other)g(c)o(haracter)
+b(Bac)o(kslash)315 2027 y(will)i(quote)d(an)o(y)h(other)g(c)o(haracter)
 f(in)i(the)f(macro)f(text,)h(including)j(`)p Ft(")p Fu(')c(and)h(`)p
-Ft(')p Fu('.)34 b(F)l(or)315 1432 y(example,)14 b(the)f(follo)o(wing)g
+Ft(')p Fu('.)34 b(F)l(or)315 2082 y(example,)14 b(the)f(follo)o(wing)g
 (binding)i(will)g(mak)o(e)d(`)p Fo(C-x)i Ft(\\)p Fu(')f(insert)g(a)g
 (single)h(`)p Ft(\\)p Fu(')e(in)o(to)h(the)g(line:)435
-1497 y Ft("\\C-x\\\\":)23 b("\\\\")75 1613 y Fj(1.3.2)30
-b(Conditional)20 b(Init)g(Constructs)137 1712 y Fu(Readline)f(implemen)
+2148 y Ft("\\C-x\\\\":)23 b("\\\\")75 2267 y Fj(1.3.2)30
+b(Conditional)20 b(Init)g(Constructs)137 2366 y Fu(Readline)f(implemen)
 o(ts)g(a)f(facilit)o(y)g(similar)h(in)g(spirit)f(to)f(the)h
-(conditional)h(compilation)g(features)75 1766 y(of)e(the)g(C)g(prepro)q
+(conditional)h(compilation)g(features)75 2421 y(of)e(the)g(C)g(prepro)q
 (cessor)g(whic)o(h)i(allo)o(ws)e(k)o(ey)g(bindings)i(and)f(v)m(ariable)
-g(settings)f(to)g(b)q(e)h(p)q(erformed)f(as)75 1821 y(the)e(result)h
+g(settings)f(to)g(b)q(e)h(p)q(erformed)f(as)75 2476 y(the)e(result)h
 (of)f(tests.)k(There)c(are)g(four)g(parser)g(directiv)o(es)h(used.)75
-1904 y Ft($if)168 b Fu(The)16 b Ft($if)f Fu(construct)g(allo)o(ws)h
+2560 y Ft($if)168 b Fu(The)16 b Ft($if)f Fu(construct)g(allo)o(ws)h
 (bindings)i(to)d(b)q(e)h(made)g(based)g(on)f(the)h(editing)h(mo)q(de,)f
-(the)315 1959 y(terminal)k(b)q(eing)g(used,)g(or)f(the)g(application)i
+(the)315 2615 y(terminal)k(b)q(eing)g(used,)g(or)f(the)g(application)i
 (using)e(Readline.)33 b(The)19 b(text)g(of)f(the)i(test)315
-2013 y(extends)c(to)e(the)h(end)h(of)f(the)g(line;)i(no)e(c)o
-(haracters)f(are)h(required)i(to)d(isolate)i(it.)315
-2095 y Ft(mode)144 b Fu(The)11 b Ft(mode=)e Fu(form)h(of)g(the)h
+2670 y(extends)c(to)e(the)h(end)h(of)f(the)g(line;)i(no)e(c)o
+(haracters)f(are)h(required)i(to)d(isolate)i(it.)p eop
+%%Page: 9 11
+9 10 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
+b(9)315 149 y Ft(mode)144 b Fu(The)11 b Ft(mode=)e Fu(form)h(of)g(the)h
 Ft($if)f Fu(directiv)o(e)h(is)g(used)g(to)f(test)g(whether)h(Readline)
-555 2150 y(is)k(in)h Ft(emacs)e Fu(or)g Ft(vi)g Fu(mo)q(de.)20
+555 204 y(is)k(in)h Ft(emacs)e Fu(or)g Ft(vi)g Fu(mo)q(de.)20
 b(This)c(ma)o(y)e(b)q(e)h(used)g(in)h(conjunction)g(with)f(the)555
-2205 y(`)p Ft(set)f(keymap)p Fu(')f(command,)g(for)h(instance,)g(to)f
-(set)h(bindings)h(in)g(the)f Ft(emacs-)555 2260 y(standard)d
+259 y(`)p Ft(set)f(keymap)p Fu(')f(command,)g(for)h(instance,)g(to)f
+(set)h(bindings)h(in)g(the)f Ft(emacs-)555 314 y(standard)d
 Fu(and)i Ft(emacs-ctlx)e Fu(k)o(eymaps)h(only)i(if)f(Readline)g(is)g
-(starting)f(out)555 2314 y(in)k Ft(emacs)f Fu(mo)q(de.)315
-2396 y Ft(term)144 b Fu(The)14 b Ft(term=)e Fu(form)h(ma)o(y)g(b)q(e)h
+(starting)f(out)555 369 y(in)k Ft(emacs)f Fu(mo)q(de.)315
+448 y Ft(term)144 b Fu(The)14 b Ft(term=)e Fu(form)h(ma)o(y)g(b)q(e)h
 (used)g(to)f(include)j(terminal-sp)q(eci\014c)g(k)o(ey)d(bind-)555
-2451 y(ings,)19 b(p)q(erhaps)g(to)e(bind)i(the)g(k)o(ey)e(sequences)j
-(output)e(b)o(y)g(the)g(terminal's)555 2506 y(function)13
+503 y(ings,)19 b(p)q(erhaps)g(to)e(bind)i(the)g(k)o(ey)e(sequences)j
+(output)e(b)o(y)g(the)g(terminal's)555 558 y(function)13
 b(k)o(eys.)18 b(The)13 b(w)o(ord)e(on)h(the)g(righ)o(t)g(side)g(of)g
-(the)g(`)p Ft(=)p Fu(')f(is)h(tested)g(against)555 2560
+(the)g(`)p Ft(=)p Fu(')f(is)h(tested)g(against)555 613
 y(b)q(oth)j(the)g(full)i(name)e(of)f(the)h(terminal)h(and)f(the)g(p)q
-(ortion)h(of)e(the)h(terminal)555 2615 y(name)i(b)q(efore)g(the)g
+(ortion)h(of)e(the)h(terminal)555 667 y(name)i(b)q(efore)g(the)g
 (\014rst)f(`)p Ft(-)p Fu('.)24 b(This)17 b(allo)o(ws)g
 Ft(sun)f Fu(to)g(matc)o(h)h(b)q(oth)f Ft(sun)h Fu(and)555
-2670 y Ft(sun-cmd)p Fu(,)d(for)g(instance.)p eop
-%%Page: 9 11
-9 10 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(9)315 149 y Ft(application)555 204 y Fu(The)11 b Fk(application)i
-Fu(construct)e(is)g(used)h(to)e(include)j(application-sp)q(eci)q(\014c)
-h(set-)555 259 y(tings.)19 b(Eac)o(h)12 b(program)f(using)j(the)e
-(Readline)i(library)f(sets)f(the)g Fk(application)555
-314 y(name)p Fu(,)g(and)g(y)o(ou)f(can)h(test)f(for)g(a)g(particular)h
-(v)m(alue.)20 b(This)12 b(could)h(b)q(e)f(used)h(to)555
-369 y(bind)18 b(k)o(ey)e(sequences)i(to)d(functions)j(useful)f(for)f(a)
-g(sp)q(eci\014c)i(program.)23 b(F)l(or)555 423 y(instance,)17
-b(the)g(follo)o(wing)g(command)g(adds)f(a)g(k)o(ey)h(sequence)g(that)f
-(quotes)555 478 y(the)f(curren)o(t)g(or)g(previous)h(w)o(ord)e(in)j
-(Bash:)675 543 y Ft($if)23 b(Bash)675 594 y(#)h(Quote)f(the)g(current)g
-(or)h(previous)f(word)675 646 y("\\C-xq":)g("\\eb\\"\\ef\\"")675
-698 y($endif)75 778 y($endif)96 b Fu(This)16 b(command,)e(as)h(seen)h
-(in)g(the)f(previous)h(example,)g(terminates)f(an)g Ft($if)f
-Fu(command.)75 858 y Ft($else)120 b Fu(Commands)15 b(in)h(this)f(branc)
-o(h)h(of)e(the)i Ft($if)e Fu(directiv)o(e)j(are)e(executed)h(if)g(the)f
-(test)g(fails.)75 937 y Ft($include)48 b Fu(This)22 b(directiv)o(e)h
-(tak)o(es)e(a)h(single)h(\014lename)g(as)e(an)h(argumen)o(t)f(and)h
-(reads)f(commands)315 992 y(and)e(bindings)j(from)c(that)h(\014le.)33
+722 y Ft(sun-cmd)p Fu(,)d(for)g(instance.)315 802 y Ft(application)555
+857 y Fu(The)d Fk(application)i Fu(construct)e(is)g(used)h(to)e
+(include)j(application-sp)q(eci)q(\014c)h(set-)555 912
+y(tings.)19 b(Eac)o(h)12 b(program)f(using)j(the)e(Readline)i(library)f
+(sets)f(the)g Fk(application)555 966 y(name)p Fu(,)g(and)g(y)o(ou)f
+(can)h(test)f(for)g(a)g(particular)h(v)m(alue.)20 b(This)12
+b(could)h(b)q(e)f(used)h(to)555 1021 y(bind)18 b(k)o(ey)e(sequences)i
+(to)d(functions)j(useful)f(for)f(a)g(sp)q(eci\014c)i(program.)23
+b(F)l(or)555 1076 y(instance,)17 b(the)g(follo)o(wing)g(command)g(adds)
+f(a)g(k)o(ey)h(sequence)g(that)f(quotes)555 1131 y(the)f(curren)o(t)g
+(or)g(previous)h(w)o(ord)e(in)j(Bash:)675 1195 y Ft($if)23
+b(Bash)675 1247 y(#)h(Quote)f(the)g(current)g(or)h(previous)f(word)675
+1299 y("\\C-xq":)g("\\eb\\"\\ef\\"")675 1351 y($endif)75
+1430 y($endif)96 b Fu(This)16 b(command,)e(as)h(seen)h(in)g(the)f
+(previous)h(example,)g(terminates)f(an)g Ft($if)f Fu(command.)75
+1510 y Ft($else)120 b Fu(Commands)15 b(in)h(this)f(branc)o(h)h(of)e
+(the)i Ft($if)e Fu(directiv)o(e)j(are)e(executed)h(if)g(the)f(test)g
+(fails.)75 1590 y Ft($include)48 b Fu(This)22 b(directiv)o(e)h(tak)o
+(es)e(a)h(single)h(\014lename)g(as)e(an)h(argumen)o(t)f(and)h(reads)f
+(commands)315 1645 y(and)e(bindings)j(from)c(that)h(\014le.)33
 b(F)l(or)19 b(example,)i(the)e(follo)o(wing)h(directiv)o(e)h(reads)e
-(from)315 1047 y(`)p Ft(/etc/inputrc)p Fu(':)435 1111
-y Ft($include)k(/etc/inputrc)75 1223 y Fj(1.3.3)30 b(Sample)20
-b(Init)h(File)137 1320 y Fu(Here)16 b(is)g(an)f(example)h(of)f(an)g
+(from)315 1699 y(`)p Ft(/etc/inputrc)p Fu(':)435 1764
+y Ft($include)k(/etc/inputrc)75 1876 y Fj(1.3.3)30 b(Sample)20
+b(Init)h(File)137 1972 y Fu(Here)16 b(is)g(an)f(example)h(of)f(an)g
 Fk(inputrc)k Fu(\014le.)i(This)16 b(illustrates)g(k)o(ey)f(binding,)i
-(v)m(ariable)f(assignmen)o(t,)75 1374 y(and)f(conditional)i(syn)o(tax.)
+(v)m(ariable)f(assignmen)o(t,)75 2027 y(and)f(conditional)i(syn)o(tax.)
 p eop
 %%Page: 10 12
 10 11 bop 75 -58 a Fu(10)1299 b(GNU)15 b(Readline)h(Library)195
@@ -1962,48 +1984,51 @@ g(at)e(the)i(b)q(eginning)i(of)d(the)g(line,)j(there)315
 259 y(are)c(no)h(c)o(haracters)e(in)j(the)e(line,)j(and)e(the)f(last)h
 (c)o(haracter)e(t)o(yp)q(ed)i(w)o(as)f(not)g(b)q(ound)i(to)315
 314 y Ft(delete-char)p Fu(,)13 b(then)j(return)f Fp(eof)p
-Fu(.)75 406 y Ft(backward-delete-char)d(\(Rubout\))315
-460 y Fu(Delete)k(the)f(c)o(haracter)f(b)q(ehind)j(the)f(cursor.)j(A)c
+Fu(.)75 401 y Ft(backward-delete-char)d(\(Rubout\))315
+456 y Fu(Delete)k(the)f(c)o(haracter)f(b)q(ehind)j(the)f(cursor.)j(A)c
 (n)o(umeric)h(argumen)o(t)e(means)i(to)e(kill)j(the)315
-515 y(c)o(haracters)d(instead)i(of)f(deleting)i(them.)75
-607 y Ft(forward-backward-delete-ch)o(ar)12 b(\(\))315
-662 y Fu(Delete)20 b(the)f(c)o(haracter)f(under)i(the)f(cursor,)h
+511 y(c)o(haracters)d(instead)i(of)f(deleting)i(them.)75
+598 y Ft(forward-backward-delete-ch)o(ar)12 b(\(\))315
+653 y Fu(Delete)20 b(the)f(c)o(haracter)f(under)i(the)f(cursor,)h
 (unless)g(the)f(cursor)g(is)h(at)e(the)h(end)h(of)f(the)315
-717 y(line,)e(in)g(whic)o(h)g(case)e(the)h(c)o(haracter)g(b)q(ehind)h
+707 y(line,)e(in)g(whic)o(h)g(case)e(the)h(c)o(haracter)g(b)q(ehind)h
 (the)f(cursor)g(is)g(deleted.)23 b(By)16 b(default,)h(this)315
-771 y(is)f(not)f(b)q(ound)h(to)e(a)h(k)o(ey)l(.)75 863
-y Ft(quoted-insert)e(\(C-q)i(or)g(C-v\))315 918 y Fu(Add)j(the)f(next)g
+762 y(is)f(not)f(b)q(ound)h(to)e(a)h(k)o(ey)l(.)75 850
+y Ft(quoted-insert)e(\(C-q)i(or)g(C-v\))315 904 y Fu(Add)j(the)f(next)g
 (c)o(haracter)g(t)o(yp)q(ed)g(to)f(the)i(line)g(v)o(erbatim.)26
-b(This)18 b(is)f(ho)o(w)g(to)g(insert)g(k)o(ey)315 973
+b(This)18 b(is)f(ho)o(w)g(to)g(insert)g(k)o(ey)315 959
 y(sequences)f(lik)o(e)h Fo(C-q)p Fu(,)d(for)h(example.)75
-1065 y Ft(tab-insert)f(\(M-)401 1063 y Fn(h)p 412 1037
-74 2 v 412 1065 a Fm(T)m(AB)p 412 1072 V 484 1063 a Fn(i)499
-1065 y Ft(\))315 1119 y Fu(Insert)h(a)g(tab)g(c)o(haracter.)75
-1211 y Ft(self-insert)f(\(a,)g(b,)h(A,)g(1,)g(!,)g(...)o(\))315
-1266 y Fu(Insert)g(y)o(ourself.)75 1358 y Ft(transpose-chars)e(\(C-t\))
-315 1413 y Fu(Drag)i(the)h(c)o(haracter)f(b)q(efore)h(the)h(cursor)e
+1046 y Ft(tab-insert)f(\(M-)401 1044 y Fn(h)p 412 1018
+74 2 v 412 1046 a Fm(T)m(AB)p 412 1054 V 484 1044 a Fn(i)499
+1046 y Ft(\))315 1101 y Fu(Insert)h(a)g(tab)g(c)o(haracter.)75
+1188 y Ft(self-insert)f(\(a,)g(b,)h(A,)g(1,)g(!,)g(...)o(\))315
+1243 y Fu(Insert)g(y)o(ourself.)75 1330 y Ft(transpose-chars)e(\(C-t\))
+315 1385 y Fu(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
-1467 y(mo)o(ving)i(the)f(cursor)h(forw)o(ard)e(as)i(w)o(ell.)28
+1440 y(mo)o(ving)i(the)f(cursor)h(forw)o(ard)e(as)i(w)o(ell.)28
 b(If)18 b(the)g(insertion)h(p)q(oin)o(t)f(is)g(at)f(the)h(end)h(of)e
-(the)315 1522 y(line,)c(then)e(this)h(transp)q(oses)e(the)h(last)g(t)o
+(the)315 1495 y(line,)c(then)e(this)h(transp)q(oses)e(the)h(last)g(t)o
 (w)o(o)f(c)o(haracters)g(of)h(the)g(line.)20 b(Negativ)o(e)11
-b(argumen)o(ts)315 1577 y(ha)o(v)o(e)k(no)g(e\013ect.)75
-1669 y Ft(transpose-words)e(\(M-t\))315 1724 y Fu(Drag)i(the)h(w)o(ord)
+b(argumen)o(ts)315 1550 y(ha)o(v)o(e)k(no)g(e\013ect.)75
+1637 y Ft(transpose-words)e(\(M-t\))315 1692 y Fu(Drag)i(the)h(w)o(ord)
 g(b)q(efore)g(p)q(oin)o(t)h(past)f(the)g(w)o(ord)f(after)h(p)q(oin)o
-(t,)g(mo)o(ving)g(p)q(oin)o(t)h(past)f(that)315 1778
-y(w)o(ord)f(as)f(w)o(ell.)75 1870 y Ft(upcase-word)g(\(M-u\))315
-1925 y Fu(Upp)q(ercase)j(the)f(curren)o(t)g(\(or)f(follo)o(wing\))h(w)o
-(ord.)22 b(With)16 b(a)g(negativ)o(e)g(argumen)o(t,)f(upp)q(er-)315
-1980 y(case)g(the)g(previous)h(w)o(ord,)f(but)g(do)g(not)g(mo)o(v)o(e)f
-(the)i(cursor.)75 2072 y Ft(downcase-word)d(\(M-l\))315
-2126 y Fu(Lo)o(w)o(ercase)d(the)h(curren)o(t)g(\(or)f(follo)o(wing\))h
-(w)o(ord.)17 b(With)11 b(a)g(negativ)o(e)g(argumen)o(t,)f(lo)o(w)o
-(ercase)315 2181 y(the)15 b(previous)h(w)o(ord,)e(but)i(do)f(not)g(mo)o
-(v)o(e)f(the)h(cursor.)75 2273 y Ft(capitalize-word)e(\(M-c\))315
-2328 y Fu(Capitalize)f(the)f(curren)o(t)f(\(or)g(follo)o(wing\))h(w)o
+(t,)g(mo)o(ving)g(p)q(oin)o(t)h(past)f(that)315 1746
+y(w)o(ord)d(as)h(w)o(ell.)21 b(If)14 b(the)g(insertion)i(p)q(oin)o(t)e
+(is)h(at)f(the)g(end)h(of)e(the)i(line,)g(this)g(transp)q(oses)f(the)
+315 1801 y(last)h(t)o(w)o(o)f(w)o(ords)g(on)i(the)f(line.)75
+1888 y Ft(upcase-word)f(\(M-u\))315 1943 y Fu(Upp)q(ercase)j(the)f
+(curren)o(t)g(\(or)f(follo)o(wing\))h(w)o(ord.)22 b(With)16
+b(a)g(negativ)o(e)g(argumen)o(t,)f(upp)q(er-)315 1998
+y(case)g(the)g(previous)h(w)o(ord,)f(but)g(do)g(not)g(mo)o(v)o(e)f(the)
+i(cursor.)75 2085 y Ft(downcase-word)d(\(M-l\))315 2140
+y Fu(Lo)o(w)o(ercase)d(the)h(curren)o(t)g(\(or)f(follo)o(wing\))h(w)o
+(ord.)17 b(With)11 b(a)g(negativ)o(e)g(argumen)o(t,)f(lo)o(w)o(ercase)
+315 2195 y(the)15 b(previous)h(w)o(ord,)e(but)i(do)f(not)g(mo)o(v)o(e)f
+(the)h(cursor.)75 2282 y Ft(capitalize-word)e(\(M-c\))315
+2337 y Fu(Capitalize)f(the)f(curren)o(t)f(\(or)g(follo)o(wing\))h(w)o
 (ord.)18 b(With)11 b(a)f(negativ)o(e)h(argumen)o(t,)f(capitalize)315
-2383 y(the)15 b(previous)h(w)o(ord,)e(but)i(do)f(not)g(mo)o(v)o(e)f
-(the)h(cursor.)75 2494 y Fj(1.4.4)30 b(Killing)20 b(And)h(Y)-5
+2392 y(the)15 b(previous)h(w)o(ord,)e(but)i(do)f(not)g(mo)o(v)o(e)f
+(the)h(cursor.)75 2499 y Fj(1.4.4)30 b(Killing)20 b(And)h(Y)-5
 b(anking)75 2615 y Ft(kill-line)14 b(\(C-k\))315 2670
 y Fu(Kill)j(the)f(text)e(from)h(p)q(oin)o(t)h(to)e(the)h(end)h(of)f
 (the)g(line.)p eop
@@ -2293,1735 +2318,1771 @@ y Ft(/*)24 b(A)f(static)g(variable)g(for)h(holding)e(the)i(line.)f(*/)
 y(/*)g(If)h(the)f(line)h(has)f(any)h(text)f(in)g(it,)h(save)f(it)h(on)f
 (the)h(history.)f(*/)243 461 y(if)g(\(line_read)g(&&)g(*line_read\))290
 513 y(add_history)g(\(line_read\);)243 616 y(return)g(\(line_read\);)
-195 668 y(})137 738 y Fu(This)13 b(function)f(giv)o(es)h(the)e(user)h
-(the)g(default)h(b)q(eha)o(viour)g(of)1169 736 y Fn(h)p
-1181 710 74 2 v 1181 738 a Fm(T)m(AB)p 1181 746 V 1253
-736 a Fn(i)1280 738 y Fu(completion:)19 b(completion)13
-b(on)f(\014le)75 793 y(names.)20 b(If)c(y)o(ou)f(do)g(not)g(w)o(an)o(t)
+195 668 y(})137 735 y Fu(This)13 b(function)f(giv)o(es)h(the)e(user)h
+(the)g(default)h(b)q(eha)o(viour)g(of)1169 733 y Fn(h)p
+1181 707 74 2 v 1181 735 a Fm(T)m(AB)p 1181 743 V 1253
+733 a Fn(i)1280 735 y Fu(completion:)19 b(completion)13
+b(on)f(\014le)75 790 y(names.)20 b(If)c(y)o(ou)f(do)g(not)g(w)o(an)o(t)
 f(Readline)j(to)d(complete)j(on)e(\014lenames,)h(y)o(ou)f(can)g(c)o
-(hange)h(the)f(binding)75 848 y(of)g(the)205 846 y Fn(h)p
-217 820 V 217 848 a Fm(T)m(AB)p 217 855 V 289 846 a Fn(i)319
-848 y Fu(k)o(ey)g(with)h Ft(rl_bind_key\(\))p Fu(.)195
-914 y Ft(int)23 b(rl_bind_key)g(\(int)g Fk(k)o(ey)p Ft(,)h
-(rl_command_func_t)d(*)p Fk(function)p Ft(\);)137 984
+(hange)h(the)f(binding)75 845 y(of)g(the)205 843 y Fn(h)p
+217 817 V 217 845 a Fm(T)m(AB)p 217 853 V 289 843 a Fn(i)319
+845 y Fu(k)o(ey)g(with)h Ft(rl_bind_key\(\))p Fu(.)195
+909 y Ft(int)23 b(rl_bind_key)g(\(int)g Fk(k)o(ey)p Ft(,)h
+(rl_command_func_t)d(*)p Fk(function)p Ft(\);)137 976
 y(rl_bind_key\(\))15 b Fu(tak)o(es)h(t)o(w)o(o)g(argumen)o(ts:)22
 b Fk(k)o(ey)e Fu(is)e(the)e(c)o(haracter)g(that)g(y)o(ou)h(w)o(an)o(t)f
-(to)g(bind,)i(and)75 1039 y Fk(function)h Fu(is)f(the)g(address)g(of)g
+(to)g(bind,)i(and)75 1031 y Fk(function)h Fu(is)f(the)g(address)g(of)g
 (the)g(function)g(to)g(call)h(when)f Fk(k)o(ey)k Fu(is)c(pressed.)29
-b(Binding)1628 1037 y Fn(h)p 1641 1011 V 1641 1039 a
-Fm(T)m(AB)p 1641 1046 V 1712 1037 a Fn(i)1745 1039 y
-Fu(to)17 b Ft(rl_)75 1094 y(insert\(\))f Fu(mak)o(es)422
-1092 y Fn(h)p 434 1066 V 434 1094 a Fm(T)m(AB)p 434 1101
-V 506 1092 a Fn(i)539 1094 y Fu(insert)i(itself.)28 b
+b(Binding)1628 1029 y Fn(h)p 1641 1003 V 1641 1031 a
+Fm(T)m(AB)p 1641 1038 V 1712 1029 a Fn(i)1745 1031 y
+Fu(to)17 b Ft(rl_)75 1085 y(insert\(\))f Fu(mak)o(es)422
+1083 y Fn(h)p 434 1057 V 434 1085 a Fm(T)m(AB)p 434 1093
+V 506 1083 a Fn(i)539 1085 y Fu(insert)i(itself.)28 b
 Ft(rl_bind_key\(\))15 b Fu(returns)j(non-zero)g(if)g
-Fk(k)o(ey)j Fu(is)d(not)f(a)g(v)m(alid)75 1148 y(ASCI)q(I)f(c)o
+Fk(k)o(ey)j Fu(is)d(not)f(a)g(v)m(alid)75 1140 y(ASCI)q(I)f(c)o
 (haracter)f(co)q(de)h(\(b)q(et)o(w)o(een)f(0)g(and)g(255\).)137
-1218 y(Th)o(us,)g(to)g(disable)h(the)g(default)703 1216
-y Fn(h)p 716 1190 V 716 1218 a Fm(T)m(AB)p 716 1226 V
-787 1216 a Fn(i)817 1218 y Fu(b)q(eha)o(vior,)g(the)f(follo)o(wing)h
-(su\016ces:)195 1285 y Ft(rl_bind_key)22 b(\('\\t',)h(rl_insert\);)137
-1354 y Fu(This)14 b(co)q(de)g(should)g(b)q(e)g(executed)g(once)g(at)e
+1207 y(Th)o(us,)g(to)g(disable)h(the)g(default)703 1205
+y Fn(h)p 716 1179 V 716 1207 a Fm(T)m(AB)p 716 1215 V
+787 1205 a Fn(i)817 1207 y Fu(b)q(eha)o(vior,)g(the)f(follo)o(wing)h
+(su\016ces:)195 1271 y Ft(rl_bind_key)22 b(\('\\t',)h(rl_insert\);)137
+1338 y Fu(This)14 b(co)q(de)g(should)g(b)q(e)g(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)g(write)g(a)
-g(func-)75 1409 y(tion)k(called)h Ft(initialize_readline\(\))13
+g(func-)75 1393 y(tion)k(called)h Ft(initialize_readline\(\))13
 b Fu(whic)o(h)k(p)q(erforms)f(this)h(and)g(other)f(desired)h
-(initializations,)75 1464 y(suc)o(h)f(as)e(installing)k(custom)c
+(initializations,)75 1448 y(suc)o(h)f(as)e(installing)k(custom)c
 (completers)i(\(see)f(Section)h(2.6)f([Custom)f(Completers],)g(page)h
-(38\).)75 1599 y Fs(2.2)33 b(Custom)21 b(F)-6 b(unctions)137
-1697 y Fu(Readline)14 b(pro)o(vides)f(man)o(y)e(functions)i(for)f
+(39\).)75 1575 y Fs(2.2)33 b(Custom)21 b(F)-6 b(unctions)137
+1671 y Fu(Readline)14 b(pro)o(vides)f(man)o(y)e(functions)i(for)f
 (manipulating)i(the)e(text)g(of)g(the)g(line,)i(but)e(it)h(isn't)f(p)q
-(ossi-)75 1752 y(ble)i(to)f(an)o(ticipate)h(the)f(needs)h(of)f(all)h
+(ossi-)75 1726 y(ble)i(to)f(an)o(ticipate)h(the)f(needs)h(of)f(all)h
 (programs.)k(This)13 b(section)h(describ)q(es)h(the)e(v)m(arious)h
-(functions)g(and)75 1807 y(v)m(ariables)g(de\014ned)h(within)f(the)f
+(functions)g(and)75 1781 y(v)m(ariables)g(de\014ned)h(within)f(the)f
 (Readline)i(library)e(whic)o(h)h(allo)o(w)g(a)e(user)h(program)f(to)h
-(add)g(customized)75 1862 y(functionalit)o(y)j(to)f(Readline.)137
-1931 y(Before)j(declaring)i(an)o(y)e(functions)h(that)f(customize)g
+(add)g(customized)75 1836 y(functionalit)o(y)j(to)f(Readline.)137
+1903 y(Before)j(declaring)i(an)o(y)e(functions)h(that)f(customize)g
 (Readline's)h(b)q(eha)o(vior,)h(or)d(using)i(an)o(y)f(func-)75
-1986 y(tionalit)o(y)23 b(Readline)h(pro)o(vides)g(in)f(other)g(co)q
+1958 y(tionalit)o(y)23 b(Readline)h(pro)o(vides)g(in)f(other)g(co)q
 (de,)h(an)f(application)i(writer)d(should)i(include)h(the)e(\014le)75
-2041 y Ft(<readline/readline.h>)14 b Fu(in)j(an)o(y)g(\014le)h(that)e
+2012 y Ft(<readline/readline.h>)14 b Fu(in)j(an)o(y)g(\014le)h(that)e
 (uses)h(Readline's)g(features.)24 b(Since)19 b(some)d(of)g(the)h
-(de\014-)75 2096 y(nitions)g(in)f Ft(readline.h)e Fu(use)i(the)g
+(de\014-)75 2067 y(nitions)g(in)f Ft(readline.h)e Fu(use)i(the)g
 Ft(stdio)f Fu(library)l(,)h(the)g(\014le)g Ft(<stdio.h>)f
-Fu(should)h(b)q(e)g(included)j(b)q(efore)75 2151 y Ft(readline.h)p
-Fu(.)75 2268 y Fj(2.2.1)30 b(Readline)20 b(T)n(yp)r(edefs)137
-2366 y Fu(F)l(or)15 b(readabilt)o(y)l(,)g(w)o(e)g(declare)i(a)d(n)o(um)
+Fu(should)h(b)q(e)g(included)j(b)q(efore)75 2122 y Ft(readline.h)p
+Fu(.)137 2189 y Ft(readline.h)14 b Fu(de\014nes)i(a)f(C)h(prepro)q
+(cessor)f(v)m(ariable)i(that)d(should)i(b)q(e)g(treated)f(as)g(an)g(in)
+o(teger,)g Ft(RL_)75 2244 y(READLINE_VERSION)p Fu(,)9
+b(whic)o(h)j(ma)o(y)f(b)q(e)g(used)h(to)e(conditionally)k(compile)e
+(application)h(co)q(de)f(dep)q(ending)75 2298 y(on)17
+b(the)h(installed)h(Readline)g(v)o(ersion.)27 b(The)18
+b(v)m(alue)h(is)f(a)f(hexadecimal)i(enco)q(ding)g(of)e(the)h(ma)s(jor)e
+(and)75 2353 y(minor)h(v)o(ersion)h(n)o(um)o(b)q(ers)f(of)g(the)g
+(library)l(,)h(of)f(the)g(form)f(0x)p Fk(MMmm)p Fu(.)25
+b Fk(MM)c Fu(is)c(the)h(t)o(w)o(o-digit)e(ma)s(jor)75
+2408 y(v)o(ersion)f(n)o(um)o(b)q(er;)f Fk(mm)h Fu(is)g(the)f(t)o(w)o
+(o-digit)g(minor)h(v)o(ersion)g(n)o(um)o(b)q(er.)20 b(F)l(or)14
+b(Readline)h(4.2,)f(for)f(example,)75 2463 y(the)i(v)m(alue)i(of)d
+Ft(RL_READLINE_VERSION)f Fu(w)o(ould)j(b)q(e)f Ft(0x0402)p
+Fu(.)75 2574 y Fj(2.2.1)30 b(Readline)20 b(T)n(yp)r(edefs)137
+2670 y Fu(F)l(or)15 b(readabilt)o(y)l(,)g(w)o(e)g(declare)i(a)d(n)o(um)
 o(b)q(er)i(of)f(new)g(ob)s(ject)g(t)o(yp)q(es,)g(all)h(p)q(oin)o(ters)f
-(to)g(functions.)137 2436 y(The)j(reason)g(for)f(declaring)i(these)f
-(new)g(t)o(yp)q(es)g(is)h(to)e(mak)o(e)g(it)h(easier)h(to)e(write)h(co)
-q(de)g(describing)75 2491 y(p)q(oin)o(ters)e(to)e(C)h(functions)h(with)
-g(appropriately)f(protot)o(yp)q(ed)g(argumen)o(ts)g(and)g(return)g(v)m
-(alues.)137 2560 y(F)l(or)j(instance,)i(sa)o(y)e(w)o(e)g(w)o(an)o(t)f
-(to)h(declare)h(a)f(v)m(ariable)i Fk(func)i Fu(as)c(a)g(p)q(oin)o(ter)h
-(to)f(a)g(function)h(whic)o(h)75 2615 y(tak)o(es)12 b(t)o(w)o(o)g
-Ft(int)g Fu(argumen)o(ts)g(and)h(returns)g(an)g Ft(int)f
-Fu(\(this)h(is)g(the)g(t)o(yp)q(e)g(of)g(all)g(of)g(the)g(Readline)h
-(bindable)75 2670 y(functions\).)20 b(Instead)c(of)f(the)g(classic)h(C)
-f(declaration)p eop
+(to)g(functions.)p eop
 %%Page: 21 23
 21 22 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(21)137 149 y Ft(int)15 b(\(*func\)\(\);)75
-220 y Fu(or)g(the)g(ANSI-C)h(st)o(yle)f(declaration)137
-290 y Ft(int)g(\(*func\)\(int,)f(int\);)75 360 y Fu(w)o(e)h(ma)o(y)f
-(write)137 430 y Ft(rl_command_func_t)f(*func;)137 500
+(Readline)843 b(21)137 149 y(The)18 b(reason)g(for)f(declaring)i(these)
+f(new)g(t)o(yp)q(es)g(is)h(to)e(mak)o(e)g(it)h(easier)h(to)e(write)h
+(co)q(de)g(describing)75 204 y(p)q(oin)o(ters)e(to)e(C)h(functions)h
+(with)g(appropriately)f(protot)o(yp)q(ed)g(argumen)o(ts)g(and)g(return)
+g(v)m(alues.)137 271 y(F)l(or)j(instance,)i(sa)o(y)e(w)o(e)g(w)o(an)o
+(t)f(to)h(declare)h(a)f(v)m(ariable)i Fk(func)i Fu(as)c(a)g(p)q(oin)o
+(ter)h(to)f(a)g(function)h(whic)o(h)75 326 y(tak)o(es)12
+b(t)o(w)o(o)g Ft(int)g Fu(argumen)o(ts)g(and)h(returns)g(an)g
+Ft(int)f Fu(\(this)h(is)g(the)g(t)o(yp)q(e)g(of)g(all)g(of)g(the)g
+(Readline)h(bindable)75 381 y(functions\).)20 b(Instead)c(of)f(the)g
+(classic)h(C)f(declaration)137 447 y Ft(int)g(\(*func\)\(\);)75
+514 y Fu(or)g(the)g(ANSI-C)h(st)o(yle)f(declaration)137
+581 y Ft(int)g(\(*func\)\(int,)f(int\);)75 647 y Fu(w)o(e)h(ma)o(y)f
+(write)137 714 y Ft(rl_command_func_t)f(*func;)137 781
 y Fu(The)j(full)g(list)g(of)f(function)h(p)q(oin)o(ter)g(t)o(yp)q(es)f
-(a)o(v)m(ailable)i(is)75 584 y Ft(typedef)d(int)h(rl_command_func_t)e
-(\(int,)h(int\);)75 652 y(typedef)g(char)h(*rl_compentry_func_t)d
-(\(const)j(char)f(*,)h(int\);)75 721 y(typedef)f(char)h
+(a)o(v)m(ailable)i(is)75 859 y Ft(typedef)d(int)h(rl_command_func_t)e
+(\(int,)h(int\);)75 926 y(typedef)g(char)h(*rl_compentry_func_t)d
+(\(const)j(char)f(*,)h(int\);)75 993 y(typedef)f(char)h
 (**rl_completion_func_t)d(\(const)i(char)h(*,)g(int,)f(int\);)75
-790 y(typedef)g(char)h(*rl_quote_func_t)e(\(char)h(*,)h(int,)g(char)f
-(*\);)75 858 y(typedef)g(char)h(*rl_dequote_func_t)d(\(char)j(*,)g
-(int\);)75 927 y(typedef)f(int)h(rl_compignore_func_t)d(\(char)j(**\);)
-75 996 y(typedef)f(void)h(rl_compdisp_func_t)d(\(char)j(**,)g(int,)f
-(int\);)75 1064 y(typedef)g(int)h(rl_hook_func_t)e(\(void\);)75
-1133 y(typedef)h(int)h(rl_getc_func_t)e(\(FILE)i(*\);)75
-1202 y(typedef)f(int)h(rl_linebuf_func_t)e(\(char)h(*,)h(int\);)75
-1270 y(typedef)f(int)h(rl_intfunc_t)e(\(int\);)75 1339
-y(#define)h(rl_ivoidfunc_t)f(rl_hook_func_t)75 1408 y(typedef)h(int)h
-(rl_icpfunc_t)e(\(char)i(*\);)75 1476 y(typedef)f(int)h(rl_icppfunc_t)e
-(\(char)i(**\);)75 1545 y(typedef)f(void)h(rl_voidfunc_t)e(\(void\);)75
-1614 y(typedef)h(void)h(rl_vintfunc_t)e(\(int\);)75 1682
-y(typedef)h(void)h(rl_vcpfunc_t)e(\(char)i(*\);)75 1751
+1059 y(typedef)g(char)h(*rl_quote_func_t)e(\(char)h(*,)h(int,)g(char)f
+(*\);)75 1126 y(typedef)g(char)h(*rl_dequote_func_t)d(\(char)j(*,)g
+(int\);)75 1193 y(typedef)f(int)h(rl_compignore_func_t)d(\(char)j
+(**\);)75 1259 y(typedef)f(void)h(rl_compdisp_func_t)d(\(char)j(**,)g
+(int,)f(int\);)75 1326 y(typedef)g(int)h(rl_hook_func_t)e(\(void\);)75
+1393 y(typedef)h(int)h(rl_getc_func_t)e(\(FILE)i(*\);)75
+1459 y(typedef)f(int)h(rl_linebuf_func_t)e(\(char)h(*,)h(int\);)75
+1526 y(typedef)f(int)h(rl_intfunc_t)e(\(int\);)75 1593
+y(#define)h(rl_ivoidfunc_t)f(rl_hook_func_t)75 1659 y(typedef)h(int)h
+(rl_icpfunc_t)e(\(char)i(*\);)75 1726 y(typedef)f(int)h(rl_icppfunc_t)e
+(\(char)i(**\);)75 1793 y(typedef)f(void)h(rl_voidfunc_t)e(\(void\);)75
+1859 y(typedef)h(void)h(rl_vintfunc_t)e(\(int\);)75 1926
+y(typedef)h(void)h(rl_vcpfunc_t)e(\(char)i(*\);)75 1993
 y(typedef)f(void)h(rl_vcppfunc_t)e(\(char)i(**\);)75
-1855 y Fj(2.2.2)30 b(W)-5 b(riting)20 b(a)h(New)f(F)-5
-b(unction)137 1954 y Fu(In)17 b(order)f(to)f(write)h(new)h(functions)g
+2091 y Fj(2.2.2)30 b(W)-5 b(riting)20 b(a)h(New)f(F)-5
+b(unction)137 2187 y Fu(In)17 b(order)f(to)f(write)h(new)h(functions)g
 (for)e(Readline,)i(y)o(ou)f(need)h(to)e(kno)o(w)h(the)g(calling)i(con)o
-(v)o(en)o(tions)75 2009 y(for)g(k)o(eyb)q(oard-in)o(v)o(ok)o(ed)h
+(v)o(en)o(tions)75 2242 y(for)g(k)o(eyb)q(oard-in)o(v)o(ok)o(ed)h
 (functions,)g(and)g(the)f(names)h(of)f(the)g(v)m(ariables)i(that)d
-(describ)q(e)k(the)d(curren)o(t)75 2064 y(state)c(of)h(the)g(line)i
-(read)e(so)g(far.)137 2134 y(The)h(calling)h(sequence)f(for)f(a)f
-(command)i Ft(foo)e Fu(lo)q(oks)i(lik)o(e)195 2201 y
-Ft(foo)23 b(\(int)h(count,)f(int)g(key\))75 2271 y Fu(where)18
+(describ)q(e)k(the)d(curren)o(t)75 2297 y(state)c(of)h(the)g(line)i
+(read)e(so)g(far.)137 2363 y(The)h(calling)h(sequence)f(for)f(a)f
+(command)i Ft(foo)e Fu(lo)q(oks)i(lik)o(e)195 2427 y
+Ft(foo)23 b(\(int)h(count,)f(int)g(key\))75 2494 y Fu(where)18
 b Fk(coun)o(t)h Fu(is)f(the)g(n)o(umeric)h(argumen)o(t)e(\(or)h(1)f(if)
 i(defaulted\))f(and)g Fk(k)o(ey)k Fu(is)d(the)f(k)o(ey)g(that)f(in)o(v)
-o(ok)o(ed)75 2326 y(this)f(function.)137 2396 y(It)c(is)g(completely)h
+o(ok)o(ed)75 2549 y(this)f(function.)137 2615 y(It)c(is)g(completely)h
 (up)f(to)f(the)g(function)i(as)e(to)g(what)g(should)h(b)q(e)g(done)g
-(with)g(the)g(n)o(umeric)g(argumen)o(t.)75 2451 y(Some)20
+(with)g(the)g(n)o(umeric)g(argumen)o(t.)75 2670 y(Some)20
 b(functions)h(use)f(it)g(as)g(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
-2506 y(b)q(eha)o(vior)i(\(refreshing)g(the)g(curren)o(t)f(line)j(as)d
+(a)f(\015ag,)i(and)f(others)g(to)f(c)o(ho)q(ose)h(alternate)p
+eop
+%%Page: 22 24
+22 23 bop 75 -58 a Fu(22)1299 b(GNU)15 b(Readline)h(Library)75
+149 y(b)q(eha)o(vior)22 b(\(refreshing)g(the)g(curren)o(t)f(line)j(as)d
 (opp)q(osed)h(to)f(refreshing)i(the)e(screen,)j(for)d(example\).)75
-2560 y(Some)c(c)o(ho)q(ose)f(to)g(ignore)h(it.)24 b(In)18
+204 y(Some)c(c)o(ho)q(ose)f(to)g(ignore)h(it.)24 b(In)18
 b(general,)f(if)g(a)f(function)h(uses)g(the)g(n)o(umeric)h(argumen)o(t)
-d(as)i(a)f(rep)q(eat)75 2615 y(coun)o(t,)e(it)g(should)h(b)q(e)f(able)h
+d(as)i(a)f(rep)q(eat)75 259 y(coun)o(t,)e(it)g(should)h(b)q(e)f(able)h
 (to)e(do)h(something)h(useful)g(with)f(b)q(oth)g(negativ)o(e)g(and)g(p)
-q(ositiv)o(e)h(argumen)o(ts.)75 2670 y(A)o(t)g(the)g(v)o(ery)g(least,)g
+q(ositiv)o(e)h(argumen)o(ts.)75 314 y(A)o(t)g(the)g(v)o(ery)g(least,)g
 (it)g(should)h(b)q(e)g(a)o(w)o(are)e(that)h(it)g(can)g(b)q(e)h(passed)g
-(a)f(negativ)o(e)g(argumen)o(t.)p eop
-%%Page: 22 24
-22 23 bop 75 -58 a Fu(22)1299 b(GNU)15 b(Readline)h(Library)75
-149 y Fs(2.3)33 b(Readline)23 b(V)-6 b(ariables)137 245
-y Fu(These)16 b(v)m(ariables)g(are)f(a)o(v)m(ailable)i(to)e(function)h
-(writers.)1773 356 y(V)l(ariable)-1861 b Fi(char)20 b(*)f
-Fh(rl)p 286 356 18 3 v 21 w(line)p 395 356 V 23 w(bu\013er)195
-410 y Fu(This)d(is)g(the)g(line)h(gathered)f(so)f(far.)20
-b(Y)l(ou)c(are)f(w)o(elcome)h(to)f(mo)q(dify)h(the)g(con)o(ten)o(ts)f
-(of)g(the)h(line,)195 465 y(but)i(see)g(Section)h(2.4.5)d([Allo)o(wing)
-i(Undoing],)h(page)e(29.)27 b(The)18 b(function)h Ft(rl_extend_line_)
-195 520 y(buffer)14 b Fu(is)i(a)o(v)m(ailable)h(to)d(increase)j(the)e
-(memory)f(allo)q(cated)j(to)d Ft(rl_line_buffer)p Fu(.)1773
-631 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 631
-V 21 w(p)r(oin)n(t)195 686 y Fu(The)15 b(o\013set)g(of)f(the)i(curren)o
-(t)f(cursor)g(p)q(osition)h(in)g Ft(rl_line_buffer)d
-Fu(\(the)i Fl(p)n(oint)t Fu(\).)1773 797 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 797 V 21 w(end)195 852 y Fu(The)14
-b(n)o(um)o(b)q(er)g(of)g(c)o(haracters)f(presen)o(t)h(in)h
-Ft(rl_line_buffer)p Fu(.)i(When)e Ft(rl_point)e Fu(is)h(at)f(the)h(end)
-195 906 y(of)h(the)g(line,)i Ft(rl_point)d Fu(and)h Ft(rl_end)f
-Fu(are)h(equal.)1773 1017 y(V)l(ariable)-1861 b Fi(int)20
-b Fh(rl)p 215 1017 V 21 w(mark)195 1072 y Fu(The)f Fk(mark)h
-Fu(\(sa)o(v)o(ed)e(p)q(osition\))h(in)g(the)g(curren)o(t)f(line.)31
-b(If)19 b(set,)g(the)f(mark)g(and)h(p)q(oin)o(t)g(de\014ne)g(a)195
-1127 y Fl(r)n(e)n(gion)p Fu(.)1773 1238 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 1238 V 21 w(done)195 1293 y
+(a)f(negativ)o(e)g(argumen)o(t.)75 438 y Fs(2.3)33 b(Readline)23
+b(V)-6 b(ariables)137 533 y Fu(These)16 b(v)m(ariables)g(are)f(a)o(v)m
+(ailable)i(to)e(function)h(writers.)1773 642 y(V)l(ariable)-1861
+b Fi(char)20 b(*)f Fh(rl)p 286 642 18 3 v 21 w(line)p
+395 642 V 23 w(bu\013er)195 697 y Fu(This)d(is)g(the)g(line)h(gathered)
+f(so)f(far.)20 b(Y)l(ou)c(are)f(w)o(elcome)h(to)f(mo)q(dify)h(the)g
+(con)o(ten)o(ts)f(of)g(the)h(line,)195 752 y(but)i(see)g(Section)h
+(2.4.5)d([Allo)o(wing)i(Undoing],)h(page)e(29.)27 b(The)18
+b(function)h Ft(rl_extend_line_)195 807 y(buffer)14 b
+Fu(is)i(a)o(v)m(ailable)h(to)d(increase)j(the)e(memory)f(allo)q(cated)j
+(to)d Ft(rl_line_buffer)p Fu(.)1773 916 y(V)l(ariable)-1861
+b Fi(int)20 b Fh(rl)p 215 916 V 21 w(p)r(oin)n(t)195
+971 y Fu(The)15 b(o\013set)g(of)f(the)i(curren)o(t)f(cursor)g(p)q
+(osition)h(in)g Ft(rl_line_buffer)d Fu(\(the)i Fl(p)n(oint)t
+Fu(\).)1773 1081 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p
+215 1081 V 21 w(end)195 1136 y Fu(The)14 b(n)o(um)o(b)q(er)g(of)g(c)o
+(haracters)f(presen)o(t)h(in)h Ft(rl_line_buffer)p Fu(.)i(When)e
+Ft(rl_point)e Fu(is)h(at)f(the)h(end)195 1190 y(of)h(the)g(line,)i
+Ft(rl_point)d Fu(and)h Ft(rl_end)f Fu(are)h(equal.)1773
+1300 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 1300
+V 21 w(mark)195 1355 y Fu(The)f Fk(mark)h Fu(\(sa)o(v)o(ed)e(p)q
+(osition\))h(in)g(the)g(curren)o(t)f(line.)31 b(If)19
+b(set,)g(the)f(mark)g(and)h(p)q(oin)o(t)g(de\014ne)g(a)195
+1410 y Fl(r)n(e)n(gion)p Fu(.)1773 1519 y(V)l(ariable)-1861
+b Fi(int)20 b Fh(rl)p 215 1519 V 21 w(done)195 1574 y
 Fu(Setting)11 b(this)g(to)g(a)f(non-zero)h(v)m(alue)h(causes)f
 (Readline)h(to)f(return)f(the)h(curren)o(t)g(line)h(immediately)l(.)
-1773 1404 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215
-1404 V 21 w(n)n(um)p 347 1404 V 19 w(c)n(hars)p 496 1404
-V 20 w(to)p 567 1404 V 21 w(read)195 1459 y Fu(Setting)d(this)g(to)f(a)
+1773 1684 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215
+1684 V 21 w(n)n(um)p 347 1684 V 19 w(c)n(hars)p 496 1684
+V 20 w(to)p 567 1684 V 21 w(read)195 1738 y Fu(Setting)d(this)g(to)f(a)
 g(p)q(ositiv)o(e)h(v)m(alue)h(b)q(efore)f(calling)h Ft(readline\(\))d
-Fu(causes)h(Readline)i(to)e(return)195 1514 y(after)h(accepting)i(that)
+Fu(causes)h(Readline)i(to)e(return)195 1793 y(after)h(accepting)i(that)
 e(man)o(y)g(c)o(haracters,)h(rather)f(than)h(reading)g(up)g(to)f(a)h(c)
-o(haracter)f(b)q(ound)195 1568 y(to)e Ft(accept-line)p
-Fu(.)1773 1679 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p
-215 1679 V 21 w(p)r(ending)p 436 1679 V 20 w(input)195
-1734 y Fu(Setting)13 b(this)g(to)f(a)g(v)m(alue)i(mak)o(es)e(it)h(the)f
+o(haracter)f(b)q(ound)195 1848 y(to)e Ft(accept-line)p
+Fu(.)1773 1958 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p
+215 1958 V 21 w(p)r(ending)p 436 1958 V 20 w(input)195
+2012 y Fu(Setting)13 b(this)g(to)f(a)g(v)m(alue)i(mak)o(es)e(it)h(the)f
 (next)h(k)o(eystrok)o(e)f(read.)19 b(This)13 b(is)g(a)f(w)o(a)o(y)g(to)
-f(stu\013)h(a)h(single)195 1789 y(c)o(haracter)h(in)o(to)i(the)f(input)
-h(stream.)1773 1900 y(V)l(ariable)-1861 b Fi(int)20 b
-Fh(rl)p 215 1900 V 21 w(dispatc)n(hing)195 1955 y Fu(Set)12
+f(stu\013)h(a)h(single)195 2067 y(c)o(haracter)h(in)o(to)i(the)f(input)
+h(stream.)1773 2177 y(V)l(ariable)-1861 b Fi(int)20 b
+Fh(rl)p 215 2177 V 21 w(dispatc)n(hing)195 2232 y Fu(Set)12
 b(to)g(a)f(non-zero)i(v)m(alue)g(if)g(a)f(function)h(is)f(b)q(eing)i
 (called)f(from)f(a)f(k)o(ey)h(binding;)j(zero)d(otherwise.)195
-2010 y(Application)20 b(functions)e(can)g(test)g(this)g(to)f(disco)o(v)
+2286 y(Application)20 b(functions)e(can)g(test)g(this)g(to)f(disco)o(v)
 o(er)h(whether)g(they)g(w)o(ere)g(called)h(directly)g(or)195
-2064 y(b)o(y)c(Readline's)h(dispatc)o(hing)h(mec)o(hanism.)1773
-2175 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 2175
-V 21 w(erase)p 363 2175 V 20 w(empt)n(y)p 540 2175 V
-20 w(line)195 2230 y Fu(Setting)j(this)h(to)e(a)h(non-zero)g(v)m(alue)h
+2341 y(b)o(y)c(Readline's)h(dispatc)o(hing)h(mec)o(hanism.)1773
+2451 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 2451
+V 21 w(erase)p 363 2451 V 20 w(empt)n(y)p 540 2451 V
+20 w(line)195 2506 y Fu(Setting)j(this)h(to)e(a)h(non-zero)g(v)m(alue)h
 (causes)f(Readline)i(to)d(completely)i(erase)f(the)g(curren)o(t)195
-2285 y(line,)g(including)h(an)o(y)c(prompt,)h(an)o(y)g(time)g(a)f
+2560 y(line,)g(including)h(an)o(y)c(prompt,)h(an)o(y)g(time)g(a)f
 (newline)j(is)e(t)o(yp)q(ed)g(as)f(the)h(only)g(c)o(haracter)f(on)195
-2340 y(an)e(otherwise-empt)o(y)g(line.)31 b(The)18 b(cursor)g(is)h(mo)o
+2615 y(an)e(otherwise-empt)o(y)g(line.)31 b(The)18 b(cursor)g(is)h(mo)o
 (v)o(ed)e(to)h(the)g(b)q(eginning)i(of)e(the)g(newly-blank)195
-2395 y(line.)1773 2506 y(V)l(ariable)-1861 b Fi(char)20
-b(*)f Fh(rl)p 286 2506 V 21 w(prompt)195 2560 y Fu(The)13
-b(prompt)g(Readline)h(uses.)20 b(This)13 b(is)h(set)f(from)f(the)h
-(argumen)o(t)g(to)f Ft(readline\(\))p Fu(,)g(and)h(should)195
-2615 y(not)g(b)q(e)h(assigned)g(to)f(directly)l(.)21
-b(The)14 b Ft(rl_set_prompt\(\))d Fu(function)j(\(see)g(Section)g
-(2.4.6)e([Redis-)195 2670 y(pla)o(y],)j(page)g(30\))f(ma)o(y)h(b)q(e)g
-(used)h(to)f(mo)q(dify)h(the)f(prompt)g(string)g(after)f(calling)j
-Ft(readline\(\))p Fu(.)p eop
+2670 y(line.)p eop
 %%Page: 23 25
 23 24 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(23)1773 149 y(V)l(ariable)-1861 b Fi(int)20
-b Fh(rl)p 215 149 18 3 v 21 w(already)p 419 149 V 21
-w(prompted)195 204 y Fu(If)e(an)g(application)i(wishes)f(to)f(displa)o
-(y)h(the)f(prompt)g(itself,)h(rather)f(than)g(ha)o(v)o(e)g(Readline)h
-(do)195 259 y(it)e(the)f(\014rst)g(time)h Ft(readline\(\))e
-Fu(is)i(called,)h(it)e(should)i(set)e(this)h(v)m(ariable)g(to)f(a)g
-(non-zero)h(v)m(alue)195 314 y(after)h(displa)o(ying)j(the)e(prompt.)31
-b(The)19 b(prompt)g(m)o(ust)f(also)h(b)q(e)h(passed)f(as)f(the)h
-(argumen)o(t)g(to)195 369 y Ft(readline\(\))c Fu(so)h(the)h(redispla)o
-(y)g(functions)h(can)e(up)q(date)h(the)g(displa)o(y)h(prop)q(erly)l(.)
-24 b(The)17 b(calling)195 423 y(application)g(is)f(resp)q(onsible)h
-(for)d(managing)h(the)h(v)m(alue;)g(Readline)g(nev)o(er)g(sets)e(it.)
-1773 549 y(V)l(ariable)-1861 b Fi(const)20 b(char)g(*)f
-Fh(rl)p 436 549 V 21 w(library)p 625 549 V 21 w(v)n(ersion)195
-604 y Fu(The)c(v)o(ersion)h(n)o(um)o(b)q(er)f(of)g(this)h(revision)g
-(of)f(the)g(library)l(.)1773 730 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 730 V 21 w(gn)n(u)p 327 730
-V 20 w(readline)p 545 730 V 22 w(p)195 785 y Fu(Alw)o(a)o(ys)15
-b(set)g(to)f(1,)h(denoting)h(that)e(this)i(is)g Fp(gnu)f
-Fu(readline)h(rather)f(than)g(some)g(em)o(ulation.)1773
-911 y(V)l(ariable)-1861 b Fi(const)20 b(char)g(*)f Fh(rl)p
-436 911 V 21 w(terminal)p 668 911 V 21 w(name)195 966
-y Fu(The)14 b(terminal)h(t)o(yp)q(e,)f(used)h(for)e(initialization.)23
-b(If)14 b(not)f(set)h(b)o(y)g(the)g(application,)i(Readline)f(sets)195
-1021 y(this)h(to)e(the)h(v)m(alue)i(of)e(the)g Ft(TERM)g
-Fu(en)o(vironmen)o(t)g(v)m(ariable)i(the)e(\014rst)g(time)g(it)h(is)f
-(called.)1773 1147 y(V)l(ariable)-1861 b Fi(const)20
-b(char)g(*)f Fh(rl)p 436 1147 V 21 w(readline)p 655 1147
-V 22 w(name)195 1201 y Fu(This)d(v)m(ariable)h(is)f(set)g(to)f(a)g
+(Readline)843 b(23)1773 149 y(V)l(ariable)-1861 b Fi(char)20
+b(*)f Fh(rl)p 286 149 18 3 v 21 w(prompt)195 204 y Fu(The)13
+b(prompt)g(Readline)h(uses.)20 b(This)13 b(is)h(set)f(from)f(the)h
+(argumen)o(t)g(to)f Ft(readline\(\))p Fu(,)g(and)h(should)195
+259 y(not)g(b)q(e)h(assigned)g(to)f(directly)l(.)21 b(The)14
+b Ft(rl_set_prompt\(\))d Fu(function)j(\(see)g(Section)g(2.4.6)e
+([Redis-)195 314 y(pla)o(y],)j(page)g(30\))f(ma)o(y)h(b)q(e)g(used)h
+(to)f(mo)q(dify)h(the)f(prompt)g(string)g(after)f(calling)j
+Ft(readline\(\))p Fu(.)1773 429 y(V)l(ariable)-1861 b
+Fi(int)20 b Fh(rl)p 215 429 V 21 w(already)p 419 429
+V 21 w(prompted)195 484 y Fu(If)e(an)g(application)i(wishes)f(to)f
+(displa)o(y)h(the)f(prompt)g(itself,)h(rather)f(than)g(ha)o(v)o(e)g
+(Readline)h(do)195 538 y(it)e(the)f(\014rst)g(time)h
+Ft(readline\(\))e Fu(is)i(called,)h(it)e(should)i(set)e(this)h(v)m
+(ariable)g(to)f(a)g(non-zero)h(v)m(alue)195 593 y(after)h(displa)o
+(ying)j(the)e(prompt.)31 b(The)19 b(prompt)g(m)o(ust)f(also)h(b)q(e)h
+(passed)f(as)f(the)h(argumen)o(t)g(to)195 648 y Ft(readline\(\))c
+Fu(so)h(the)h(redispla)o(y)g(functions)h(can)e(up)q(date)h(the)g
+(displa)o(y)h(prop)q(erly)l(.)24 b(The)17 b(calling)195
+703 y(application)g(is)f(resp)q(onsible)h(for)d(managing)h(the)h(v)m
+(alue;)g(Readline)g(nev)o(er)g(sets)e(it.)1773 818 y(V)l(ariable)-1861
+b Fi(const)20 b(char)g(*)f Fh(rl)p 436 818 V 21 w(library)p
+625 818 V 21 w(v)n(ersion)195 873 y Fu(The)c(v)o(ersion)h(n)o(um)o(b)q
+(er)f(of)g(this)h(revision)g(of)f(the)g(library)l(.)1773
+988 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 988
+V 21 w(readline)p 434 988 V 22 w(v)n(ersion)195 1043
+y Fu(An)d(in)o(teger)h(enco)q(ding)g(the)f(curren)o(t)g(v)o(ersion)g
+(of)g(the)g(library)l(.)27 b(The)17 b(enco)q(ding)h(is)g(of)f(the)g
+(form)195 1097 y(0x)p Fk(MMmm)p Fu(,)g(where)i Fk(MM)j
+Fu(is)d(the)f(t)o(w)o(o-digit)g(ma)s(jor)f(v)o(ersion)i(n)o(um)o(b)q
+(er,)g(and)f Fk(mm)g Fu(is)h(the)f(t)o(w)o(o-)195 1152
+y(digit)i(minor)e(v)o(ersion)h(n)o(um)o(b)q(er.)31 b(F)l(or)18
+b(example,)i(for)e(Readline-4.2,)i Ft(rl_readline_version)195
+1207 y Fu(w)o(ould)c(ha)o(v)o(e)e(the)i(v)m(alue)g(0x0402.)1773
+1322 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 1322
+V 21 w(gn)n(u)p 327 1322 V 20 w(readline)p 545 1322 V
+22 w(p)195 1377 y Fu(Alw)o(a)o(ys)15 b(set)g(to)f(1,)h(denoting)h(that)
+e(this)i(is)g Fp(gnu)f Fu(readline)h(rather)f(than)g(some)g(em)o
+(ulation.)1773 1492 y(V)l(ariable)-1861 b Fi(const)20
+b(char)g(*)f Fh(rl)p 436 1492 V 21 w(terminal)p 668 1492
+V 21 w(name)195 1547 y Fu(The)14 b(terminal)h(t)o(yp)q(e,)f(used)h(for)
+e(initialization.)23 b(If)14 b(not)f(set)h(b)o(y)g(the)g(application,)i
+(Readline)f(sets)195 1601 y(this)h(to)e(the)h(v)m(alue)i(of)e(the)g
+Ft(TERM)g Fu(en)o(vironmen)o(t)g(v)m(ariable)i(the)e(\014rst)g(time)g
+(it)h(is)f(called.)1773 1717 y(V)l(ariable)-1861 b Fi(const)20
+b(char)g(*)f Fh(rl)p 436 1717 V 21 w(readline)p 655 1717
+V 22 w(name)195 1771 y Fu(This)d(v)m(ariable)h(is)f(set)g(to)f(a)g
 (unique)i(name)f(b)o(y)f(eac)o(h)h(application)h(using)f(Readline.)23
-b(The)16 b(v)m(alue)195 1256 y(allo)o(ws)e(conditional)i(parsing)e(of)g
+b(The)16 b(v)m(alue)195 1826 y(allo)o(ws)e(conditional)i(parsing)e(of)g
 (the)g(inputrc)h(\014le)g(\(see)f(Section)h(1.3.2)d([Conditional)j
-(Init)g(Con-)195 1311 y(structs],)f(page)h(8\).)1773
-1437 y(V)l(ariable)-1861 b Fi(FILE)20 b(*)f Fh(rl)p 286
-1437 V 21 w(instream)195 1492 y Fu(The)c(stdio)h(stream)e(from)h(whic)o
-(h)h(Readline)g(reads)f(input.)1773 1618 y(V)l(ariable)-1861
-b Fi(FILE)20 b(*)f Fh(rl)p 286 1618 V 21 w(outstream)195
-1673 y Fu(The)c(stdio)h(stream)e(to)h(whic)o(h)h(Readline)g(p)q
-(erforms)f(output.)1773 1799 y(V)l(ariable)-1861 b Fi
-(rl_command_func_t)22 b(*)d Fh(rl)p 626 1799 V 21 w(last)p
-735 1799 V 21 w(func)195 1854 y Fu(The)f(address)f(of)g(the)g(last)h
+(Init)g(Con-)195 1881 y(structs],)f(page)h(8\).)1773
+1996 y(V)l(ariable)-1861 b Fi(FILE)20 b(*)f Fh(rl)p 286
+1996 V 21 w(instream)195 2051 y Fu(The)c(stdio)h(stream)e(from)h(whic)o
+(h)h(Readline)g(reads)f(input.)1773 2166 y(V)l(ariable)-1861
+b Fi(FILE)20 b(*)f Fh(rl)p 286 2166 V 21 w(outstream)195
+2221 y Fu(The)c(stdio)h(stream)e(to)h(whic)o(h)h(Readline)g(p)q
+(erforms)f(output.)1773 2336 y(V)l(ariable)-1861 b Fi
+(rl_command_func_t)22 b(*)d Fh(rl)p 626 2336 V 21 w(last)p
+735 2336 V 21 w(func)195 2391 y Fu(The)f(address)f(of)g(the)g(last)h
 (command)f(function)h(Readline)h(executed.)27 b(Ma)o(y)17
-b(b)q(e)h(used)g(to)f(test)195 1908 y(whether)e(or)g(not)g(a)g
+b(b)q(e)h(used)g(to)f(test)195 2445 y(whether)e(or)g(not)g(a)g
 (function)h(is)f(b)q(eing)i(executed)f(t)o(wice)g(in)g(succession,)g
-(for)e(example.)1773 2034 y(V)l(ariable)-1861 b Fi(rl_hook_func_t)21
-b(*)e Fh(rl)p 547 2034 V 22 w(startup)p 752 2034 V 19
-w(ho)r(ok)195 2089 y Fu(If)e(non-zero,)h(this)g(is)f(the)h(address)f
+(for)e(example.)1773 2560 y(V)l(ariable)-1861 b Fi(rl_hook_func_t)21
+b(*)e Fh(rl)p 547 2560 V 22 w(startup)p 752 2560 V 19
+w(ho)r(ok)195 2615 y Fu(If)e(non-zero,)h(this)g(is)f(the)h(address)f
 (of)f(a)h(function)h(to)f(call)h(just)f(b)q(efore)g Ft(readline)f
-Fu(prin)o(ts)i(the)195 2144 y(\014rst)d(prompt.)1773
-2270 y(V)l(ariable)-1861 b Fi(rl_hook_func_t)21 b(*)e
-Fh(rl)p 547 2270 V 22 w(pre)p 651 2270 V 20 w(input)p
-804 2270 V 21 w(ho)r(ok)195 2325 y Fu(If)f(non-zero,)g(this)g(is)h(the)
-f(address)f(of)h(a)f(function)i(to)e(call)i(after)e(the)h(\014rst)f
-(prompt)g(has)h(b)q(een)195 2380 y(prin)o(ted)e(and)f(just)g(b)q(efore)
-h Ft(readline)e Fu(starts)g(reading)h(input)i(c)o(haracters.)1773
-2506 y(V)l(ariable)-1861 b Fi(rl_hook_func_t)21 b(*)e
-Fh(rl)p 547 2506 V 22 w(ev)n(en)n(t)p 701 2506 V 22 w(ho)r(ok)195
-2560 y Fu(If)i(non-zero,)g(this)g(is)g(the)f(address)g(of)g(a)g
-(function)h(to)f(call)i(p)q(erio)q(dically)h(when)e(Readline)g(is)195
-2615 y(w)o(aiting)15 b(for)f(terminal)h(input.)21 b(By)14
-b(default,)h(this)g(will)i(b)q(e)e(called)h(at)e(most)g(ten)g(times)h
-(a)f(second)195 2670 y(if)i(there)f(is)h(no)f(k)o(eyb)q(oard)g(input.)p
-eop
+Fu(prin)o(ts)i(the)195 2670 y(\014rst)d(prompt.)p eop
 %%Page: 24 26
 24 25 bop 75 -58 a Fu(24)1299 b(GNU)15 b(Readline)h(Library)1773
-149 y(V)l(ariable)-1861 b Fi(rl_getc_func_t)21 b(*)e
-Fh(rl)p 547 149 18 3 v 22 w(getc)p 671 149 V 21 w(function)195
-204 y Fu(If)c(non-zero,)h(Readline)g(will)h(call)f(indirectly)i
+149 y(V)l(ariable)-1861 b Fi(rl_hook_func_t)21 b(*)e
+Fh(rl)p 547 149 18 3 v 22 w(pre)p 651 149 V 20 w(input)p
+804 149 V 21 w(ho)r(ok)195 204 y Fu(If)f(non-zero,)g(this)g(is)h(the)f
+(address)f(of)h(a)f(function)i(to)e(call)i(after)e(the)h(\014rst)f
+(prompt)g(has)h(b)q(een)195 259 y(prin)o(ted)e(and)f(just)g(b)q(efore)h
+Ft(readline)e Fu(starts)g(reading)h(input)i(c)o(haracters.)1773
+375 y(V)l(ariable)-1861 b Fi(rl_hook_func_t)21 b(*)e
+Fh(rl)p 547 375 V 22 w(ev)n(en)n(t)p 701 375 V 22 w(ho)r(ok)195
+430 y Fu(If)i(non-zero,)g(this)g(is)g(the)f(address)g(of)g(a)g
+(function)h(to)f(call)i(p)q(erio)q(dically)h(when)e(Readline)g(is)195
+484 y(w)o(aiting)15 b(for)f(terminal)h(input.)21 b(By)14
+b(default,)h(this)g(will)i(b)q(e)e(called)h(at)e(most)g(ten)g(times)h
+(a)f(second)195 539 y(if)i(there)f(is)h(no)f(k)o(eyb)q(oard)g(input.)
+1773 655 y(V)l(ariable)-1861 b Fi(rl_getc_func_t)21 b(*)e
+Fh(rl)p 547 655 V 22 w(getc)p 671 655 V 21 w(function)195
+710 y Fu(If)c(non-zero,)h(Readline)g(will)h(call)f(indirectly)i
 (through)d(this)g(p)q(oin)o(ter)h(to)f(get)f(a)h(c)o(haracter)g(from)
-195 259 y(the)k(input)i(stream.)31 b(By)19 b(default,)h(it)g(is)g(set)f
+195 764 y(the)k(input)i(stream.)31 b(By)19 b(default,)h(it)g(is)g(set)f
 (to)f Ft(rl_getc)p Fu(,)h(the)g(default)h(Readline)h(c)o(haracter)195
-314 y(input)16 b(function)g(\(see)f(Section)h(2.4.8)e([Character)g
-(Input],)h(page)g(32\).)1773 442 y(V)l(ariable)-1861
-b Fi(rl_voidfunc_t)21 b(*)e Fh(rl)p 521 442 V 21 w(redispla)n(y)p
-765 442 V 22 w(function)195 497 y Fu(If)f(non-zero,)h(Readline)g(will)h
+819 y(input)16 b(function)g(\(see)f(Section)h(2.4.8)e([Character)g
+(Input],)h(page)g(32\).)1773 935 y(V)l(ariable)-1861
+b Fi(rl_voidfunc_t)21 b(*)e Fh(rl)p 521 935 V 21 w(redispla)n(y)p
+765 935 V 22 w(function)195 990 y Fu(If)f(non-zero,)h(Readline)g(will)h
 (call)f(indirectly)h(through)e(this)g(p)q(oin)o(ter)h(to)e(up)q(date)i
-(the)f(displa)o(y)195 552 y(with)c(the)f(curren)o(t)h(con)o(ten)o(ts)f
+(the)f(displa)o(y)195 1044 y(with)c(the)f(curren)o(t)h(con)o(ten)o(ts)f
 (of)g(the)g(editing)i(bu\013er.)k(By)14 b(default,)g(it)g(is)g(set)f
-(to)g Ft(rl_redisplay)p Fu(,)195 607 y(the)i(default)h(Readline)h
+(to)g Ft(rl_redisplay)p Fu(,)195 1099 y(the)i(default)h(Readline)h
 (redispla)o(y)f(function)g(\(see)f(Section)h(2.4.6)e([Redispla)o(y],)h
-(page)g(30\).)1773 735 y(V)l(ariable)-1861 b Fi(rl_vintfunc_t)21
-b(*)e Fh(rl)p 521 735 V 21 w(prep)p 656 735 V 21 w(term)p
-798 735 V 19 w(function)195 790 y Fu(If)12 b(non-zero,)h(Readline)g
+(page)g(30\).)1773 1215 y(V)l(ariable)-1861 b Fi(rl_vintfunc_t)21
+b(*)e Fh(rl)p 521 1215 V 21 w(prep)p 656 1215 V 21 w(term)p
+798 1215 V 19 w(function)195 1270 y Fu(If)12 b(non-zero,)h(Readline)g
 (will)h(call)f(indirectly)h(through)e(this)g(p)q(oin)o(ter)h(to)e
-(initialize)k(the)e(terminal.)195 844 y(The)19 b(function)g(tak)o(es)f
+(initialize)k(the)e(terminal.)195 1324 y(The)19 b(function)g(tak)o(es)f
 (a)g(single)i(argumen)o(t,)e(an)h Ft(int)f Fu(\015ag)g(that)g(sa)o(ys)g
-(whether)g(or)h(not)f(to)g(use)195 899 y(eigh)o(t-bit)g(c)o(haracters.)
-25 b(By)17 b(default,)h(this)f(is)h(set)e(to)h Ft(rl_prep_terminal)e
-Fu(\(see)i(Section)h(2.4.9)195 954 y([T)l(erminal)e(Managemen)o(t],)d
-(page)i(32\).)1773 1082 y(V)l(ariable)-1861 b Fi(rl_voidfunc_t)21
-b(*)e Fh(rl)p 521 1082 V 21 w(deprep)p 714 1082 V 21
-w(term)p 856 1082 V 19 w(function)195 1137 y Fu(If)g(non-zero,)g
-(Readline)g(will)h(call)g(indirectly)g(through)e(this)h(p)q(oin)o(ter)f
-(to)g(reset)g(the)h(terminal.)195 1192 y(This)f(function)g(should)h
-(undo)f(the)f(e\013ects)h(of)f Ft(rl_prep_term_function)p
-Fu(.)24 b(By)17 b(default,)i(this)195 1247 y(is)d(set)f(to)f
+(whether)g(or)h(not)f(to)g(use)195 1379 y(eigh)o(t-bit)g(c)o
+(haracters.)25 b(By)17 b(default,)h(this)f(is)h(set)e(to)h
+Ft(rl_prep_terminal)e Fu(\(see)i(Section)h(2.4.9)195
+1434 y([T)l(erminal)e(Managemen)o(t],)d(page)i(33\).)1773
+1550 y(V)l(ariable)-1861 b Fi(rl_voidfunc_t)21 b(*)e
+Fh(rl)p 521 1550 V 21 w(deprep)p 714 1550 V 21 w(term)p
+856 1550 V 19 w(function)195 1605 y Fu(If)g(non-zero,)g(Readline)g
+(will)h(call)g(indirectly)g(through)e(this)h(p)q(oin)o(ter)f(to)g
+(reset)g(the)h(terminal.)195 1659 y(This)f(function)g(should)h(undo)f
+(the)f(e\013ects)h(of)f Ft(rl_prep_term_function)p Fu(.)24
+b(By)17 b(default,)i(this)195 1714 y(is)d(set)f(to)f
 Ft(rl_deprep_terminal)f Fu(\(see)i(Section)h(2.4.9)e([T)l(erminal)i
-(Managemen)o(t],)d(page)i(32\).)1773 1375 y(V)l(ariable)-1861
-b Fi(Keymap)20 b Fh(rl)p 293 1375 V 21 w(executing)p
-551 1375 V 22 w(k)n(eymap)195 1430 y Fu(This)f(v)m(ariable)g(is)f(set)g
+(Managemen)o(t],)d(page)i(33\).)1773 1830 y(V)l(ariable)-1861
+b Fi(Keymap)20 b Fh(rl)p 293 1830 V 21 w(executing)p
+551 1830 V 22 w(k)n(eymap)195 1885 y Fu(This)f(v)m(ariable)g(is)f(set)g
 (to)g(the)g(k)o(eymap)f(\(see)h(Section)h(2.4.2)e([Keymaps],)g(page)h
-(26\))f(in)i(whic)o(h)195 1485 y(the)c(curren)o(tly)h(executing)g
-(readline)h(function)f(w)o(as)f(found.)1773 1613 y(V)l(ariable)-1861
-b Fi(Keymap)20 b Fh(rl)p 293 1613 V 21 w(binding)p 501
-1613 V 22 w(k)n(eymap)195 1668 y Fu(This)f(v)m(ariable)g(is)f(set)g(to)
+(26\))f(in)i(whic)o(h)195 1939 y(the)c(curren)o(tly)h(executing)g
+(readline)h(function)f(w)o(as)f(found.)1773 2055 y(V)l(ariable)-1861
+b Fi(Keymap)20 b Fh(rl)p 293 2055 V 21 w(binding)p 501
+2055 V 22 w(k)n(eymap)195 2110 y Fu(This)f(v)m(ariable)g(is)f(set)g(to)
 g(the)g(k)o(eymap)f(\(see)h(Section)h(2.4.2)e([Keymaps],)g(page)h(26\))
-f(in)i(whic)o(h)195 1723 y(the)c(last)g(k)o(ey)g(binding)j(o)q
-(ccurred.)1773 1851 y(V)l(ariable)-1861 b Fi(char)20
-b(*)f Fh(rl)p 286 1851 V 21 w(executing)p 544 1851 V
-22 w(macro)195 1906 y Fu(This)d(v)m(ariable)g(is)g(set)f(to)g(the)g
+f(in)i(whic)o(h)195 2165 y(the)c(last)g(k)o(ey)g(binding)j(o)q
+(ccurred.)1773 2280 y(V)l(ariable)-1861 b Fi(char)20
+b(*)f Fh(rl)p 286 2280 V 21 w(executing)p 544 2280 V
+22 w(macro)195 2335 y Fu(This)d(v)m(ariable)g(is)g(set)f(to)g(the)g
 (text)g(of)f(an)o(y)h(curren)o(tly-executing)i(macro.)1773
-2034 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 2034
-V 21 w(readline)p 434 2034 V 22 w(state)195 2089 y Fu(A)d(v)m(ariable)i
+2451 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 2451
+V 21 w(readline)p 434 2451 V 22 w(state)195 2506 y Fu(A)d(v)m(ariable)i
 (with)e(bit)h(v)m(alues)h(that)d(encapsulate)i(the)g(curren)o(t)f
-(Readline)h(state.)25 b(A)18 b(bit)f(is)h(set)195 2144
+(Readline)h(state.)25 b(A)18 b(bit)f(is)h(set)195 2560
 y(with)h(the)g Ft(RL_SETSTATE)f Fu(macro,)h(and)g(unset)g(with)g(the)g
-Ft(RL_UNSETSTATE)e Fu(macro.)31 b(Use)19 b(the)195 2199
+Ft(RL_UNSETSTATE)e Fu(macro.)31 b(Use)19 b(the)195 2615
 y Ft(RL_ISSTATE)e Fu(macro)h(to)g(test)g(whether)h(a)f(particular)i
 (state)d(bit)j(is)f(set.)30 b(Curren)o(t)18 b(state)g(bits)195
-2253 y(include:)195 2339 y Ft(RL_STATE_NONE)435 2393
-y Fu(Readline)e(has)g(not)e(y)o(et)h(b)q(een)h(called,)h(nor)e(has)g
-(it)g(b)q(egun)h(to)f(in)o(tialize.)195 2477 y Ft
-(RL_STATE_INITIALIZING)435 2532 y Fu(Readline)h(is)g(initializi)q(ng)i
-(its)d(in)o(ternal)h(data)f(structures.)195 2615 y Ft
-(RL_STATE_INITIALIZED)435 2670 y Fu(Readline)h(has)g(completed)g(its)f
-(initialization.)p eop
+2670 y(include:)p eop
 %%Page: 25 27
 25 26 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(25)195 149 y Ft(RL_STATE_TERMPREPPED)435
-204 y Fu(Readline)16 b(has)e(mo)q(di\014ed)i(the)e(terminal)h(mo)q(des)
-g(to)e(do)i(its)f(o)o(wn)g(input)h(and)g(redis-)435 259
-y(pla)o(y)l(.)195 342 y Ft(RL_STATE_READCMD)435 397 y
-Fu(Readline)h(is)g(reading)g(a)f(command)g(from)f(the)i(k)o(eyb)q
-(oard.)195 480 y Ft(RL_STATE_METANEXT)435 534 y Fu(Readline)g(is)g
+(Readline)843 b(25)195 149 y Ft(RL_STATE_NONE)435 204
+y Fu(Readline)16 b(has)g(not)e(y)o(et)h(b)q(een)h(called,)h(nor)e(has)g
+(it)g(b)q(egun)h(to)f(in)o(tialize.)195 277 y Ft(RL_STATE_INITIALIZING)
+435 332 y Fu(Readline)h(is)g(initializi)q(ng)i(its)d(in)o(ternal)h
+(data)f(structures.)195 405 y Ft(RL_STATE_INITIALIZED)435
+460 y Fu(Readline)h(has)g(completed)g(its)f(initialization.)195
+533 y Ft(RL_STATE_TERMPREPPED)435 588 y Fu(Readline)h(has)e(mo)q
+(di\014ed)i(the)e(terminal)h(mo)q(des)g(to)e(do)i(its)f(o)o(wn)g(input)
+h(and)g(redis-)435 643 y(pla)o(y)l(.)195 716 y Ft(RL_STATE_READCMD)435
+770 y Fu(Readline)h(is)g(reading)g(a)f(command)g(from)f(the)i(k)o(eyb)q
+(oard.)195 844 y Ft(RL_STATE_METANEXT)435 898 y Fu(Readline)g(is)g
 (reading)g(more)f(input)h(after)e(reading)i(the)f(meta-pre\014x)h(c)o
-(haracter.)195 617 y Ft(RL_STATE_DISPATCHING)435 672
+(haracter.)195 971 y Ft(RL_STATE_DISPATCHING)435 1026
 y Fu(Readline)g(is)g(dispatc)o(hing)h(to)d(a)h(command.)195
-755 y Ft(RL_STATE_MOREINPUT)435 810 y Fu(Readline)h(is)g(reading)g
+1099 y Ft(RL_STATE_MOREINPUT)435 1154 y Fu(Readline)h(is)g(reading)g
 (more)f(input)h(while)h(executing)f(an)f(editing)i(command.)195
-893 y Ft(RL_STATE_ISEARCH)435 947 y Fu(Readline)f(is)g(p)q(erforming)g
-(an)f(incremen)o(tal)h(history)f(searc)o(h.)195 1030
-y Ft(RL_STATE_NSEARCH)435 1085 y Fu(Readline)h(is)g(p)q(erforming)g(a)f
-(non-incremen)o(tal)h(history)g(searc)o(h.)195 1168 y
-Ft(RL_STATE_SEARCH)435 1223 y Fu(Readline)11 b(is)g(searc)o(hing)g(bac)
+1227 y Ft(RL_STATE_ISEARCH)435 1282 y Fu(Readline)f(is)g(p)q(erforming)
+g(an)f(incremen)o(tal)h(history)f(searc)o(h.)195 1355
+y Ft(RL_STATE_NSEARCH)435 1410 y Fu(Readline)h(is)g(p)q(erforming)g(a)f
+(non-incremen)o(tal)h(history)g(searc)o(h.)195 1483 y
+Ft(RL_STATE_SEARCH)435 1538 y Fu(Readline)11 b(is)g(searc)o(hing)g(bac)
 o(kw)o(ard)e(or)h(forw)o(ard)f(through)h(the)g(history)g(for)f(a)h
-(string.)195 1306 y Ft(RL_STATE_NUMERICARG)435 1360 y
+(string.)195 1611 y Ft(RL_STATE_NUMERICARG)435 1665 y
 Fu(Readline)16 b(is)g(reading)g(a)f(n)o(umeric)h(argumen)o(t.)195
-1443 y Ft(RL_STATE_MACROINPUT)435 1498 y Fu(Readline)d(is)g(curren)o
+1738 y Ft(RL_STATE_MACROINPUT)435 1793 y Fu(Readline)d(is)g(curren)o
 (tly)g(getting)f(its)g(input)h(from)e(a)h(previously-de\014ned)j(k)o
-(eyb)q(oard)435 1553 y(macro.)195 1636 y Ft(RL_STATE_MACRODEF)435
-1691 y Fu(Readline)h(is)g(curren)o(tly)g(reading)g(c)o(haracters)e
-(de\014ning)j(a)e(k)o(eyb)q(oard)g(macro.)195 1773 y
-Ft(RL_STATE_OVERWRITE)435 1828 y Fu(Readline)h(is)g(in)g(o)o(v)o
-(erwrite)f(mo)q(de.)195 1911 y Ft(RL_STATE_COMPLETING)435
-1966 y Fu(Readline)h(is)g(p)q(erforming)g(w)o(ord)e(completion.)195
-2049 y Ft(RL_STATE_SIGHANDLER)435 2104 y Fu(Readline)i(is)g(curren)o
+(eyb)q(oard)435 1848 y(macro.)195 1921 y Ft(RL_STATE_MACRODEF)435
+1976 y Fu(Readline)h(is)g(curren)o(tly)g(reading)g(c)o(haracters)e
+(de\014ning)j(a)e(k)o(eyb)q(oard)g(macro.)195 2049 y
+Ft(RL_STATE_OVERWRITE)435 2104 y Fu(Readline)h(is)g(in)g(o)o(v)o
+(erwrite)f(mo)q(de.)195 2177 y Ft(RL_STATE_COMPLETING)435
+2232 y Fu(Readline)h(is)g(p)q(erforming)g(w)o(ord)e(completion.)195
+2305 y Ft(RL_STATE_SIGHANDLER)435 2359 y Fu(Readline)i(is)g(curren)o
 (tly)g(executing)g(the)f(readline)i(signal)f(handler.)195
-2187 y Ft(RL_STATE_UNDOING)435 2241 y Fu(Readline)g(is)g(p)q(erforming)
-g(an)f(undo.)195 2324 y Ft(RL_STATE_DONE)435 2379 y Fu(Readline)g(has)f
+2433 y Ft(RL_STATE_UNDOING)435 2487 y Fu(Readline)g(is)g(p)q(erforming)
+g(an)f(undo.)195 2560 y Ft(RL_STATE_DONE)435 2615 y Fu(Readline)g(has)f
 (read)g(a)f(k)o(ey)h(sequence)h(b)q(ound)g(to)e Ft(accept-line)f
-Fu(and)i(is)h(ab)q(out)f(to)435 2434 y(return)h(the)g(line)i(to)e(the)g
-(caller.)1773 2560 y(V)l(ariable)-1861 b Fi(int)20 b
-Fh(rl)p 215 2560 18 3 v 21 w(explicit)p 417 2560 V 24
-w(arg)195 2615 y Fu(Set)f(to)g(a)g(non-zero)h(v)m(alue)h(if)e(an)h
-(explicit)h(n)o(umeric)g(argumen)o(t)d(w)o(as)h(sp)q(eci\014ed)i(b)o(y)
-f(the)f(user.)195 2670 y(Only)d(v)m(alid)h(in)f(a)f(bindable)i(command)
-f(function.)p eop
+Fu(and)i(is)h(ab)q(out)f(to)435 2670 y(return)h(the)g(line)i(to)e(the)g
+(caller.)p eop
 %%Page: 26 28
 26 27 bop 75 -58 a Fu(26)1299 b(GNU)15 b(Readline)h(Library)1773
 149 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 149
-18 3 v 21 w(n)n(umeric)p 437 149 V 20 w(arg)195 204 y
-Fu(Set)j(to)f(the)g(v)m(alue)i(of)f(an)o(y)f(n)o(umeric)h(argumen)o(t)f
-(explicitly)k(sp)q(eci\014ed)f(b)o(y)d(the)h(user)g(b)q(efore)195
-259 y(executing)14 b(the)f(curren)o(t)g(Readline)h(function.)20
-b(Only)14 b(v)m(alid)h(in)f(a)f(bindable)i(command)d(function.)1773
-368 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 368
-V 21 w(editing)p 407 368 V 22 w(mo)r(de)195 423 y Fu(Set)13
+18 3 v 21 w(explicit)p 417 149 V 24 w(arg)195 204 y Fu(Set)f(to)g(a)g
+(non-zero)h(v)m(alue)h(if)e(an)h(explicit)h(n)o(umeric)g(argumen)o(t)d
+(w)o(as)h(sp)q(eci\014ed)i(b)o(y)f(the)f(user.)195 259
+y(Only)d(v)m(alid)h(in)f(a)f(bindable)i(command)f(function.)1773
+374 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 374
+V 21 w(n)n(umeric)p 437 374 V 20 w(arg)195 429 y Fu(Set)j(to)f(the)g(v)
+m(alue)i(of)f(an)o(y)f(n)o(umeric)h(argumen)o(t)f(explicitly)k(sp)q
+(eci\014ed)f(b)o(y)d(the)h(user)g(b)q(efore)195 484 y(executing)14
+b(the)f(curren)o(t)g(Readline)h(function.)20 b(Only)14
+b(v)m(alid)h(in)f(a)f(bindable)i(command)d(function.)1773
+599 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 599
+V 21 w(editing)p 407 599 V 22 w(mo)r(de)195 654 y Fu(Set)13
 b(to)f(a)g(v)m(alue)i(denoting)f(Readline's)g(curren)o(t)g(editing)h
 (mo)q(de.)19 b(A)12 b(v)m(alue)i(of)e Fk(1)k Fu(means)d(Readline)195
-477 y(is)j(curren)o(tly)f(in)h(emacs)g(mo)q(de;)f Fk(0)j
-Fu(means)d(that)g(vi)h(mo)q(de)f(is)h(activ)o(e.)75 601
+709 y(is)j(curren)o(tly)f(in)h(emacs)g(mo)q(de;)f Fk(0)j
+Fu(means)d(that)g(vi)h(mo)q(de)f(is)h(activ)o(e.)75 837
 y Fs(2.4)33 b(Readline)23 b(Con)n(v)n(enience)g(F)-6
-b(unctions)75 737 y Fj(2.4.1)30 b(Naming)20 b(a)g(F)-5
-b(unction)137 832 y Fu(The)20 b(user)g(can)g(dynamically)i(c)o(hange)e
+b(unctions)75 977 y Fj(2.4.1)30 b(Naming)20 b(a)g(F)-5
+b(unction)137 1073 y Fu(The)20 b(user)g(can)g(dynamically)i(c)o(hange)e
 (the)g(bindings)i(of)d(k)o(eys)h(while)h(using)g(Readline.)35
-b(This)20 b(is)75 887 y(done)f(b)o(y)f(represen)o(ting)h(the)g
+b(This)20 b(is)75 1128 y(done)f(b)o(y)f(represen)o(ting)h(the)g
 (function)g(with)g(a)f(descriptiv)o(e)i(name.)29 b(The)19
-b(user)f(is)h(able)h(to)d(t)o(yp)q(e)i(the)75 941 y(descriptiv)o(e)e
+b(user)f(is)h(able)h(to)d(t)o(yp)q(e)i(the)75 1182 y(descriptiv)o(e)e
 (name)e(when)h(referring)f(to)g(the)g(function.)21 b(Th)o(us,)14
 b(in)i(an)f(init)i(\014le,)f(one)f(migh)o(t)g(\014nd)195
-1004 y Ft(Meta-Rubout:)46 b(backward-kill-word)137 1070
-y Fu(This)21 b(binds)g(the)f(k)o(eystrok)o(e)661 1068
-y Fn(h)p 673 1042 209 2 v 673 1070 a Fm(Meta-Rub)q(out)p
-673 1077 V 879 1068 a Fn(i)914 1070 y Fu(to)g(the)g(function)g
-Fl(descriptively)k Fu(named)c Ft(backward-)75 1124 y(kill-word)p
+1246 y Ft(Meta-Rubout:)46 b(backward-kill-word)137 1313
+y Fu(This)21 b(binds)g(the)f(k)o(eystrok)o(e)661 1311
+y Fn(h)p 673 1285 209 2 v 673 1313 a Fm(Meta-Rub)q(out)p
+673 1321 V 879 1311 a Fn(i)914 1313 y Fu(to)g(the)g(function)g
+Fl(descriptively)k Fu(named)c Ft(backward-)75 1368 y(kill-word)p
 Fu(.)29 b(Y)l(ou,)19 b(as)f(the)h(programmer,)f(should)i(bind)f(the)g
 (functions)h(y)o(ou)e(write)h(to)e(descriptiv)o(e)75
-1179 y(names)e(as)g(w)o(ell.)21 b(Readline)16 b(pro)o(vides)g(a)f
-(function)h(for)e(doing)i(that:)1762 1288 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1288 18 3 v 21 w(add)p 328
-1288 V 20 w(defun)i Fg(\()p Ft(const)14 b(char)h(*name,)f
-(rl_command_func_t)283 1343 y(*function,)f(int)i(key)p
-Fg(\))195 1397 y Fu(Add)j Fk(name)i Fu(to)d(the)h(list)h(of)e(named)h
+1423 y(names)e(as)g(w)o(ell.)21 b(Readline)16 b(pro)o(vides)g(a)f
+(function)h(for)e(doing)i(that:)1762 1538 y(F)l(unction)-1861
+b Fi(int)20 b Fh(rl)p 215 1538 18 3 v 21 w(add)p 328
+1538 V 20 w(defun)i Fg(\()p Ft(const)14 b(char)h(*name,)f
+(rl_command_func_t)283 1593 y(*function,)f(int)i(key)p
+Fg(\))195 1648 y Fu(Add)j Fk(name)i Fu(to)d(the)h(list)h(of)e(named)h
 (functions.)28 b(Mak)o(e)17 b Fk(function)h Fu(b)q(e)g(the)g(function)h
-(that)d(gets)195 1452 y(called.)21 b(If)16 b Fk(k)o(ey)j
+(that)d(gets)195 1703 y(called.)21 b(If)16 b Fk(k)o(ey)j
 Fu(is)d(not)e(-1,)h(then)h(bind)g(it)g(to)e Fk(function)i
-Fu(using)g Ft(rl_bind_key\(\))p Fu(.)137 1539 y(Using)g(this)f
+Fu(using)g Ft(rl_bind_key\(\))p Fu(.)137 1794 y(Using)g(this)f
 (function)h(alone)g(is)f(su\016cien)o(t)h(for)f(most)f(applications.)21
-b(It)15 b(is)h(the)f(recommended)h(w)o(a)o(y)75 1594
+b(It)15 b(is)h(the)f(recommended)h(w)o(a)o(y)75 1849
 y(to)d(add)h(a)f(few)g(functions)h(to)f(the)h(default)g(functions)g
 (that)f(Readline)i(has)e(built)i(in.)20 b(If)14 b(y)o(ou)f(need)h(to)f
-(do)75 1649 y(something)k(other)g(than)f(adding)i(a)e(function)i(to)e
+(do)75 1903 y(something)k(other)g(than)f(adding)i(a)e(function)i(to)e
 (Readline,)i(y)o(ou)f(ma)o(y)f(need)i(to)e(use)h(the)g(underlying)75
-1704 y(functions)f(describ)q(ed)h(b)q(elo)o(w.)75 1811
-y Fj(2.4.2)30 b(Selecting)20 b(a)h(Keymap)137 1906 y
+1958 y(functions)f(describ)q(ed)h(b)q(elo)o(w.)75 2069
+y Fj(2.4.2)30 b(Selecting)20 b(a)h(Keymap)137 2165 y
 Fu(Key)16 b(bindings)i(tak)o(e)c(place)j(on)e(a)g Fk(k)o(eymap)p
 Fu(.)21 b(The)15 b(k)o(eymap)h(is)f(the)h(asso)q(ciation)g(b)q(et)o(w)o
-(een)g(the)f(k)o(eys)75 1960 y(that)f(the)g(user)g(t)o(yp)q(es)g(and)h
+(een)g(the)f(k)o(eys)75 2220 y(that)f(the)g(user)g(t)o(yp)q(es)g(and)h
 (the)f(functions)h(that)f(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 2015 y(existing)i(k)o(eymaps,)
+(our)g(o)o(wn)f(k)o(eymaps,)h(cop)o(y)75 2275 y(existing)i(k)o(eymaps,)
 f(and)g(tell)h(Readline)h(whic)o(h)f(k)o(eymap)f(to)f(use.)1762
-2124 y(F)l(unction)-1861 b Fi(Keymap)20 b Fh(rl)p 293
-2124 V 21 w(mak)n(e)p 445 2124 V 20 w(bare)p 575 2124
-V 20 w(k)n(eymap)j Fg(\()p Ft(void)p Fg(\))195 2179 y
+2390 y(F)l(unction)-1861 b Fi(Keymap)20 b Fh(rl)p 293
+2390 V 21 w(mak)n(e)p 445 2390 V 20 w(bare)p 575 2390
+V 20 w(k)n(eymap)j Fg(\()p Ft(void)p Fg(\))195 2445 y
 Fu(Returns)12 b(a)f(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)i(allo)q(cated)g(with)f
-Ft(malloc\(\))p Fu(;)195 2233 y(the)j(caller)i(should)f(free)f(it)h(b)o
+Ft(malloc\(\))p Fu(;)195 2500 y(the)j(caller)i(should)f(free)f(it)h(b)o
 (y)f(calling)i Ft(rl_discard_keymap\(\))12 b Fu(when)k(done.)1762
-2342 y(F)l(unction)-1861 b Fi(Keymap)20 b Fh(rl)p 293
-2342 V 21 w(cop)n(y)p 428 2342 V 21 w(k)n(eymap)j Fg(\()p
-Ft(Keymap)14 b(map)p Fg(\))195 2397 y Fu(Return)h(a)g(new)g(k)o(eymap)g
-(whic)o(h)h(is)g(a)f(cop)o(y)g(of)g Fk(map)p Fu(.)1762
-2506 y(F)l(unction)-1861 b Fi(Keymap)20 b Fh(rl)p 293
-2506 V 21 w(mak)n(e)p 445 2506 V 20 w(k)n(eymap)j Fg(\()p
-Ft(void)p Fg(\))195 2560 y Fu(Return)16 b(a)f(new)i(k)o(eymap)e(with)i
-(the)f(prin)o(ting)h(c)o(haracters)e(b)q(ound)i(to)e(rl)p
-1457 2560 14 2 v 17 w(insert,)h(the)g(lo)o(w)o(ercase)195
-2615 y(Meta)11 b(c)o(haracters)f(b)q(ound)i(to)f(run)h(their)f(equiv)m
-(alen)o(ts,)j(and)d(the)h(Meta)e(digits)i(b)q(ound)g(to)f(pro)q(duce)
-195 2670 y(n)o(umeric)16 b(argumen)o(ts.)p eop
+2615 y(F)l(unction)-1861 b Fi(Keymap)20 b Fh(rl)p 293
+2615 V 21 w(cop)n(y)p 428 2615 V 21 w(k)n(eymap)j Fg(\()p
+Ft(Keymap)14 b(map)p Fg(\))195 2670 y Fu(Return)h(a)g(new)g(k)o(eymap)g
+(whic)o(h)h(is)g(a)f(cop)o(y)g(of)g Fk(map)p Fu(.)p eop
 %%Page: 27 29
 27 28 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(27)1762 149 y(F)l(unction)-1861 b Fi(void)20
-b Fh(rl)p 241 149 18 3 v 21 w(discard)p 441 149 V 21
-w(k)n(eymap)i Fg(\()p Ft(Keymap)14 b(keymap)p Fg(\))195
-204 y Fu(F)l(ree)h(the)h(storage)d(asso)q(ciated)j(with)f
-Fk(k)o(eymap)p Fu(.)137 293 y(Readline)24 b(has)f(sev)o(eral)g(in)o
-(ternal)g(k)o(eymaps.)42 b(These)23 b(functions)g(allo)o(w)g(y)o(ou)f
-(to)g(c)o(hange)h(whic)o(h)75 348 y(k)o(eymap)15 b(is)h(activ)o(e.)1762
-459 y(F)l(unction)-1861 b Fi(Keymap)20 b Fh(rl)p 293
-459 V 21 w(get)p 391 459 V 21 w(k)n(eymap)i Fg(\()p Ft(void)p
-Fg(\))195 514 y Fu(Returns)15 b(the)g(curren)o(tly)h(activ)o(e)f(k)o
-(eymap.)1762 625 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p
-241 625 V 21 w(set)p 333 625 V 21 w(k)n(eymap)i Fg(\()p
-Ft(Keymap)14 b(keymap)p Fg(\))195 680 y Fu(Mak)o(es)g
-Fk(k)o(eymap)j Fu(the)e(curren)o(tly)h(activ)o(e)f(k)o(eymap.)1762
-791 y(F)l(unction)-1861 b Fi(Keymap)20 b Fh(rl)p 293
-791 V 21 w(get)p 391 791 V 21 w(k)n(eymap)p 605 791 V
-20 w(b)n(y)p 685 791 V 21 w(name)i Fg(\()p Ft(const)14
-b(char)g(*name)p Fg(\))195 846 y Fu(Return)i(the)h(k)o(eymap)f(matc)o
+(Readline)843 b(27)1762 149 y(F)l(unction)-1861 b Fi(Keymap)20
+b Fh(rl)p 293 149 18 3 v 21 w(mak)n(e)p 445 149 V 20
+w(k)n(eymap)j Fg(\()p Ft(void)p Fg(\))195 204 y Fu(Return)16
+b(a)f(new)i(k)o(eymap)e(with)i(the)f(prin)o(ting)h(c)o(haracters)e(b)q
+(ound)i(to)e(rl)p 1457 204 14 2 v 17 w(insert,)h(the)g(lo)o(w)o(ercase)
+195 259 y(Meta)11 b(c)o(haracters)f(b)q(ound)i(to)f(run)h(their)f
+(equiv)m(alen)o(ts,)j(and)d(the)h(Meta)e(digits)i(b)q(ound)g(to)f(pro)q
+(duce)195 314 y(n)o(umeric)16 b(argumen)o(ts.)1762 437
+y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241 437 18
+3 v 21 w(discard)p 441 437 V 21 w(k)n(eymap)i Fg(\()p
+Ft(Keymap)14 b(keymap)p Fg(\))195 492 y Fu(F)l(ree)h(the)h(storage)d
+(asso)q(ciated)j(with)f Fk(k)o(eymap)p Fu(.)137 589 y(Readline)24
+b(has)f(sev)o(eral)g(in)o(ternal)g(k)o(eymaps.)42 b(These)23
+b(functions)g(allo)o(w)g(y)o(ou)f(to)g(c)o(hange)h(whic)o(h)75
+643 y(k)o(eymap)15 b(is)h(activ)o(e.)1762 767 y(F)l(unction)-1861
+b Fi(Keymap)20 b Fh(rl)p 293 767 V 21 w(get)p 391 767
+V 21 w(k)n(eymap)i Fg(\()p Ft(void)p Fg(\))195 822 y
+Fu(Returns)15 b(the)g(curren)o(tly)h(activ)o(e)f(k)o(eymap.)1762
+945 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241 945
+V 21 w(set)p 333 945 V 21 w(k)n(eymap)i Fg(\()p Ft(Keymap)14
+b(keymap)p Fg(\))195 1000 y Fu(Mak)o(es)g Fk(k)o(eymap)j
+Fu(the)e(curren)o(tly)h(activ)o(e)f(k)o(eymap.)1762 1124
+y(F)l(unction)-1861 b Fi(Keymap)20 b Fh(rl)p 293 1124
+V 21 w(get)p 391 1124 V 21 w(k)n(eymap)p 605 1124 V 20
+w(b)n(y)p 685 1124 V 21 w(name)i Fg(\()p Ft(const)14
+b(char)g(*name)p Fg(\))195 1178 y Fu(Return)i(the)h(k)o(eymap)f(matc)o
 (hing)h Fk(name)p Fu(.)24 b Fk(name)19 b Fu(is)e(one)g(whic)o(h)g(w)o
-(ould)g(b)q(e)h(supplied)h(in)e(a)f Ft(set)195 901 y(keymap)e
+(ould)g(b)q(e)h(supplied)h(in)e(a)f Ft(set)195 1233 y(keymap)e
 Fu(inputrc)j(line)f(\(see)g(Section)g(1.3)e([Readline)i(Init)g(File],)g
-(page)f(4\).)1762 1012 y(F)l(unction)-1861 b Fi(char)20
-b(*)f Fh(rl)p 286 1012 V 21 w(get)p 384 1012 V 21 w(k)n(eymap)p
-598 1012 V 20 w(name)i Fg(\()p Ft(Keymap)14 b(keymap)p
-Fg(\))195 1067 y Fu(Return)i(the)h(name)g(matc)o(hing)f
+(page)f(4\).)1762 1357 y(F)l(unction)-1861 b Fi(char)20
+b(*)f Fh(rl)p 286 1357 V 21 w(get)p 384 1357 V 21 w(k)n(eymap)p
+598 1357 V 20 w(name)i Fg(\()p Ft(Keymap)14 b(keymap)p
+Fg(\))195 1412 y Fu(Return)i(the)h(name)g(matc)o(hing)f
 Fk(k)o(eymap)p Fu(.)24 b Fk(name)19 b Fu(is)e(one)g(whic)o(h)g(w)o
-(ould)g(b)q(e)h(supplied)h(in)e(a)f Ft(set)195 1122 y(keymap)e
+(ould)g(b)q(e)h(supplied)h(in)e(a)f Ft(set)195 1466 y(keymap)e
 Fu(inputrc)j(line)f(\(see)g(Section)g(1.3)e([Readline)i(Init)g(File],)g
-(page)f(4\).)75 1230 y Fj(2.4.3)30 b(Binding)20 b(Keys)137
-1325 y Fu(Key)13 b(sequences)g(are)e(asso)q(ciate)h(with)h(functions)f
+(page)f(4\).)75 1583 y Fj(2.4.3)30 b(Binding)20 b(Keys)137
+1681 y Fu(Key)13 b(sequences)g(are)e(asso)q(ciate)h(with)h(functions)f
 (through)g(the)g(k)o(eymap.)19 b(Readline)13 b(has)f(sev)o(eral)g(in-)
-75 1380 y(ternal)j(k)o(eymaps:)k Ft(emacs_standard_keymap)p
+75 1736 y(ternal)j(k)o(eymaps:)k Ft(emacs_standard_keymap)p
 Fu(,)11 b Ft(emacs_meta_keymap)p Fu(,)h Ft(emacs_ctlx_keymap)p
-Fu(,)g Ft(vi_)75 1435 y(movement_keymap)p Fu(,)20 b(and)i
+Fu(,)g Ft(vi_)75 1791 y(movement_keymap)p Fu(,)20 b(and)i
 Ft(vi_insertion_keymap)p Fu(.)35 b Ft(emacs_standard_keymap)18
-b Fu(is)k(the)f(default,)75 1490 y(and)15 b(the)h(examples)g(in)g(this)
-f(man)o(ual)h(assume)f(that.)137 1556 y(Since)h Ft(readline\(\))c
+b Fu(is)k(the)f(default,)75 1846 y(and)15 b(the)h(examples)g(in)g(this)
+f(man)o(ual)h(assume)f(that.)137 1915 y(Since)h Ft(readline\(\))c
 Fu(installs)j(a)f(set)f(of)h(default)g(k)o(ey)g(bindings)h(the)f
-(\014rst)g(time)g(it)g(is)g(called,)i(there)d(is)75 1611
+(\014rst)g(time)g(it)g(is)g(called,)i(there)d(is)75 1970
 y(alw)o(a)o(ys)j(the)g(danger)g(that)g(a)g(custom)g(binding)i
 (installed)g(b)q(efore)f(the)f(\014rst)g(call)i(to)d
-Ft(readline\(\))g Fu(will)75 1666 y(b)q(e)f(o)o(v)o(erridden.)19
+Ft(readline\(\))g Fu(will)75 2025 y(b)q(e)f(o)o(v)o(erridden.)19
 b(An)13 b(alternate)g(mec)o(hanism)h(is)f(to)f(install)i(custom)f(k)o
-(ey)g(bindings)h(in)g(an)f(initialization)75 1720 y(function)19
+(ey)g(bindings)h(in)g(an)f(initialization)75 2079 y(function)19
 b(assigned)h(to)d(the)i Ft(rl_startup_hook)e Fu(v)m(ariable)j(\(see)e
-(Section)h(2.3)f([Readline)i(V)l(ariables],)75 1775 y(page)15
-b(22\).)137 1841 y(These)h(functions)g(manage)e(k)o(ey)i(bindings.)1762
-1953 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 1953
-V 21 w(bind)p 347 1953 V 21 w(k)n(ey)k Fg(\()p Ft(int)14
-b(key,)h(rl_command_func_t)d(*function)p Fg(\))195 2007
+(Section)h(2.3)f([Readline)i(V)l(ariables],)75 2134 y(page)15
+b(22\).)137 2204 y(These)h(functions)g(manage)e(k)o(ey)i(bindings.)1762
+2327 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 2327
+V 21 w(bind)p 347 2327 V 21 w(k)n(ey)k Fg(\()p Ft(int)14
+b(key,)h(rl_command_func_t)d(*function)p Fg(\))195 2382
 y Fu(Binds)18 b Fk(k)o(ey)i Fu(to)c Fk(function)h Fu(in)h(the)e(curren)
 o(tly)h(activ)o(e)g(k)o(eymap.)23 b(Returns)16 b(non-zero)h(in)g(the)g
-(case)195 2062 y(of)e(an)g(in)o(v)m(alid)i Fk(k)o(ey)p
-Fu(.)1762 2173 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 2173 V 21 w(bind)p 347 2173 V 21 w(k)n(ey)p 452 2173
-V 21 w(in)p 520 2173 V 22 w(map)h Fg(\()p Ft(int)14 b(key,)h
-(rl_command_func_t)e(*function,)283 2228 y(Keymap)h(map)p
-Fg(\))195 2283 y Fu(Bind)i Fk(k)o(ey)j Fu(to)c Fk(function)h
+(case)195 2437 y(of)e(an)g(in)o(v)m(alid)i Fk(k)o(ey)p
+Fu(.)1762 2560 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
+215 2560 V 21 w(bind)p 347 2560 V 21 w(k)n(ey)p 452 2560
+V 21 w(in)p 520 2560 V 22 w(map)h Fg(\()p Ft(int)14 b(key,)h
+(rl_command_func_t)e(*function,)283 2615 y(Keymap)h(map)p
+Fg(\))195 2670 y Fu(Bind)i Fk(k)o(ey)j Fu(to)c Fk(function)h
 Fu(in)g Fk(map)p Fu(.)k(Returns)14 b(non-zero)i(in)g(the)f(case)g(of)g
-(an)g(in)o(v)m(alid)j Fk(k)o(ey)p Fu(.)1762 2394 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 2394 V 21 w(un)n(bind)p 409
-2394 V 21 w(k)n(ey)k Fg(\()p Ft(int)14 b(key)p Fg(\))195
-2449 y Fu(Bind)19 b Fk(k)o(ey)j Fu(to)c(the)g(n)o(ull)i(function)f(in)g
-(the)f(curren)o(tly)g(activ)o(e)h(k)o(eymap.)28 b(Returns)18
-b(non-zero)g(in)195 2504 y(case)d(of)g(error.)1762 2615
-y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 2615 V
-21 w(un)n(bind)p 409 2615 V 21 w(k)n(ey)p 514 2615 V
-21 w(in)p 582 2615 V 22 w(map)h Fg(\()p Ft(int)14 b(key,)h(Keymap)f
-(map)p Fg(\))195 2670 y Fu(Bind)i Fk(k)o(ey)j Fu(to)c(the)g(n)o(ull)i
-(function)f(in)g Fk(map)p Fu(.)k(Returns)14 b(non-zero)i(in)g(case)f
-(of)g(error.)p eop
+(an)g(in)o(v)m(alid)j Fk(k)o(ey)p Fu(.)p eop
 %%Page: 28 30
 28 29 bop 75 -58 a Fu(28)1299 b(GNU)15 b(Readline)h(Library)1762
 149 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 149
-18 3 v 21 w(un)n(bind)p 409 149 V 21 w(function)p 635
-149 V 21 w(in)p 703 149 V 21 w(map)h Fg(\()p Ft(rl_command_func_t)13
-b(*function,)283 204 y(Keymap)h(map)p Fg(\))195 259 y
-Fu(Un)o(bind)j(all)f(k)o(eys)f(that)f(execute)i Fk(function)g
-Fu(in)g Fk(map)p Fu(.)1762 377 y(F)l(unction)-1861 b
-Fi(int)20 b Fh(rl)p 215 377 V 21 w(un)n(bind)p 409 377
-V 21 w(command)p 674 377 V 17 w(in)p 738 377 V 22 w(map)h
-Fg(\()p Ft(const)14 b(char)h(*command,)f(Keymap)283 432
-y(map)p Fg(\))195 486 y Fu(Un)o(bind)j(all)f(k)o(eys)f(that)f(are)h(b)q
-(ound)h(to)f Fk(command)i Fu(in)f Fk(map)p Fu(.)1762
-604 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 604
-V 21 w(set)p 307 604 V 20 w(k)n(ey)k Fg(\()p Ft(const)14
-b(char)h(*keyseq,)f(rl_command_func_t)f(*function,)283
-659 y(Keymap)h(map)p Fg(\))195 714 y Fu(Bind)g(the)e(k)o(ey)h(sequence)
-h(represen)o(ted)f(b)o(y)f(the)h(string)f Fk(k)o(eyseq)i
+18 3 v 21 w(un)n(bind)p 409 149 V 21 w(k)n(ey)k Fg(\()p
+Ft(int)14 b(key)p Fg(\))195 204 y Fu(Bind)19 b Fk(k)o(ey)j
+Fu(to)c(the)g(n)o(ull)i(function)f(in)g(the)f(curren)o(tly)g(activ)o(e)
+h(k)o(eymap.)28 b(Returns)18 b(non-zero)g(in)195 259
+y(case)d(of)g(error.)1762 395 y(F)l(unction)-1861 b Fi(int)20
+b Fh(rl)p 215 395 V 21 w(un)n(bind)p 409 395 V 21 w(k)n(ey)p
+514 395 V 21 w(in)p 582 395 V 22 w(map)h Fg(\()p Ft(int)14
+b(key,)h(Keymap)f(map)p Fg(\))195 450 y Fu(Bind)i Fk(k)o(ey)j
+Fu(to)c(the)g(n)o(ull)i(function)f(in)g Fk(map)p Fu(.)k(Returns)14
+b(non-zero)i(in)g(case)f(of)g(error.)1762 586 y(F)l(unction)-1861
+b Fi(int)20 b Fh(rl)p 215 586 V 21 w(un)n(bind)p 409
+586 V 21 w(function)p 635 586 V 21 w(in)p 703 586 V 21
+w(map)h Fg(\()p Ft(rl_command_func_t)13 b(*function,)283
+641 y(Keymap)h(map)p Fg(\))195 695 y Fu(Un)o(bind)j(all)f(k)o(eys)f
+(that)f(execute)i Fk(function)g Fu(in)g Fk(map)p Fu(.)1762
+831 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 831
+V 21 w(un)n(bind)p 409 831 V 21 w(command)p 674 831 V
+17 w(in)p 738 831 V 22 w(map)h Fg(\()p Ft(const)14 b(char)h(*command,)f
+(Keymap)283 886 y(map)p Fg(\))195 941 y Fu(Un)o(bind)j(all)f(k)o(eys)f
+(that)f(are)h(b)q(ound)h(to)f Fk(command)i Fu(in)f Fk(map)p
+Fu(.)1762 1077 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
+215 1077 V 21 w(set)p 307 1077 V 20 w(k)n(ey)k Fg(\()p
+Ft(const)14 b(char)h(*keyseq,)f(rl_command_func_t)f(*function,)283
+1132 y(Keymap)h(map)p Fg(\))195 1186 y Fu(Bind)g(the)e(k)o(ey)h
+(sequence)h(represen)o(ted)f(b)o(y)f(the)h(string)f Fk(k)o(eyseq)i
 Fu(to)e(the)g(function)i Fk(function)p Fu(.)19 b(This)195
-768 y(mak)o(es)13 b(new)g(k)o(eymaps)g(as)f(necessary)l(.)20
+1241 y(mak)o(es)13 b(new)g(k)o(eymaps)g(as)f(necessary)l(.)20
 b(The)13 b(initial)j(k)o(eymap)c(in)i(whic)o(h)g(to)f(do)g(bindings)i
-(is)f Fk(map)p Fu(.)1762 886 y(F)l(unction)-1861 b Fi(int)20
-b Fh(rl)p 215 886 V 21 w(generic)p 413 886 V 21 w(bind)j
+(is)f Fk(map)p Fu(.)1762 1377 y(F)l(unction)-1861 b Fi(int)20
+b Fh(rl)p 215 1377 V 21 w(generic)p 413 1377 V 21 w(bind)j
 Fg(\()p Ft(int)15 b(type,)f(const)h(char)f(*keyseq,)g(char)h(*data,)283
-941 y(Keymap)f(map)p Fg(\))195 996 y Fu(Bind)h(the)e(k)o(ey)h(sequence)
-h(represen)o(ted)e(b)o(y)h(the)g(string)f Fk(k)o(eyseq)i
+1432 y(Keymap)f(map)p Fg(\))195 1487 y Fu(Bind)h(the)e(k)o(ey)h
+(sequence)h(represen)o(ted)e(b)o(y)h(the)g(string)f Fk(k)o(eyseq)i
 Fu(to)d(the)i(arbitrary)f(p)q(oin)o(ter)h Fk(data)p Fu(.)195
-1051 y Fk(t)o(yp)q(e)j Fu(sa)o(ys)c(what)h(kind)h(of)f(data)g(is)g(p)q
+1542 y Fk(t)o(yp)q(e)j Fu(sa)o(ys)c(what)h(kind)h(of)f(data)g(is)g(p)q
 (oin)o(ted)i(to)d(b)o(y)h Fk(data)p Fu(;)g(this)h(can)f(b)q(e)h(a)f
-(function)h(\()p Ft(ISFUNC)p Fu(\),)d(a)195 1105 y(macro)i(\()p
+(function)h(\()p Ft(ISFUNC)p Fu(\),)d(a)195 1596 y(macro)i(\()p
 Ft(ISMACR)p Fu(\),)f(or)h(a)h(k)o(eymap)f(\()p Ft(ISKMAP)p
 Fu(\).)k(This)e(mak)o(es)e(new)h(k)o(eymaps)f(as)h(necessary)l(.)20
-b(The)195 1160 y(initial)d(k)o(eymap)e(in)h(whic)o(h)g(to)f(do)g
-(bindings)i(is)f Fk(map)p Fu(.)1762 1278 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1278 V 21 w(parse)p 369 1278
-V 19 w(and)p 480 1278 V 21 w(bind)j Fg(\()p Ft(char)14
-b(*line)p Fg(\))195 1333 y Fu(P)o(arse)g Fk(line)19 b
+b(The)195 1651 y(initial)d(k)o(eymap)e(in)h(whic)o(h)g(to)f(do)g
+(bindings)i(is)f Fk(map)p Fu(.)1762 1787 y(F)l(unction)-1861
+b Fi(int)20 b Fh(rl)p 215 1787 V 21 w(parse)p 369 1787
+V 19 w(and)p 480 1787 V 21 w(bind)j Fg(\()p Ft(char)14
+b(*line)p Fg(\))195 1842 y Fu(P)o(arse)g Fk(line)19 b
 Fu(as)14 b(if)h(it)g(had)g(b)q(een)h(read)f(from)f(the)g
 Ft(inputrc)g Fu(\014le)i(and)f(p)q(erform)f(an)o(y)h(k)o(ey)f(bindings)
-195 1387 y(and)h(v)m(ariable)i(assignmen)o(ts)e(found)h(\(see)f
+195 1897 y(and)h(v)m(ariable)i(assignmen)o(ts)e(found)h(\(see)f
 (Section)h(1.3)e([Readline)i(Init)g(File],)g(page)f(4\).)1762
-1505 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 1505
-V 21 w(read)p 346 1505 V 20 w(init)p 450 1505 V 22 w(\014le)k
-Fg(\()p Ft(const)14 b(char)h(*filename)p Fg(\))195 1560
+2033 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 2033
+V 21 w(read)p 346 2033 V 20 w(init)p 450 2033 V 22 w(\014le)k
+Fg(\()p Ft(const)14 b(char)h(*filename)p Fg(\))195 2088
 y Fu(Read)g(k)o(eybindings)j(and)e(v)m(ariable)h(assignmen)o(ts)f(from)
 f Fk(\014lename)k Fu(\(see)d(Section)g(1.3)f([Readline)195
-1615 y(Init)h(File],)g(page)f(4\).)75 1727 y Fj(2.4.4)30
+2142 y(Init)h(File],)g(page)f(4\).)75 2267 y Fj(2.4.4)30
 b(Asso)r(ciating)20 b(F)-5 b(unction)20 b(Names)h(and)f(Bindings)137
-1824 y Fu(These)11 b(functions)h(allo)o(w)e(y)o(ou)h(to)f(\014nd)h(out)
+2370 y Fu(These)11 b(functions)h(allo)o(w)e(y)o(ou)h(to)f(\014nd)h(out)
 f(what)g(k)o(eys)h(in)o(v)o(ok)o(e)f(named)h(functions)h(and)e(the)h
-(functions)75 1879 y(in)o(v)o(ok)o(ed)j(b)o(y)g(a)f(particular)h(k)o
+(functions)75 2424 y(in)o(v)o(ok)o(ed)j(b)o(y)g(a)f(particular)h(k)o
 (ey)g(sequence.)21 b(Y)l(ou)14 b(ma)o(y)f(also)g(asso)q(ciate)h(a)g
-(new)g(function)g(name)g(with)g(an)75 1933 y(arbitrary)h(function.)1762
-2051 y(F)l(unction)-1861 b Fi(rl_command_func_t)22 b(*)d
-Fh(rl)p 626 2051 V 21 w(named)p 814 2051 V 19 w(function)k
-Fg(\()p Ft(const)14 b(char)h(*name)p Fg(\))195 2106 y
+(new)g(function)g(name)g(with)g(an)75 2479 y(arbitrary)h(function.)1762
+2615 y(F)l(unction)-1861 b Fi(rl_command_func_t)22 b(*)d
+Fh(rl)p 626 2615 V 21 w(named)p 814 2615 V 19 w(function)k
+Fg(\()p Ft(const)14 b(char)h(*name)p Fg(\))195 2670 y
 Fu(Return)g(the)g(function)h(with)g(name)f Fk(name)p
-Fu(.)1762 2224 y(F)l(unction)-1861 b Fi(rl_command_func_t)22
-b(*)d Fh(rl)p 626 2224 V 21 w(function)p 852 2224 V 21
-w(of)p 920 2224 V 20 w(k)n(eyseq)24 b Fg(\()p Ft(const)14
-b(char)283 2278 y(*keyseq,)g(Keymap)g(map,)h(int)f(*type)p
-Fg(\))195 2333 y Fu(Return)i(the)g(function)h(in)o(v)o(ok)o(ed)g(b)o(y)
-f Fk(k)o(eyseq)h Fu(in)g(k)o(eymap)f Fk(map)p Fu(.)23
-b(If)17 b Fk(map)g Fu(is)g Ft(NULL)p Fu(,)f(the)g(curren)o(t)195
-2388 y(k)o(eymap)i(is)h(used.)31 b(If)18 b Fk(t)o(yp)q(e)j
-Fu(is)e(not)g Ft(NULL)p Fu(,)f(the)g(t)o(yp)q(e)h(of)f(the)h(ob)s(ject)
-f(is)h(returned)g(in)g(the)f Ft(int)195 2443 y Fu(v)m(ariable)f(it)e(p)
-q(oin)o(ts)h(to)e(\(one)h(of)g Ft(ISFUNC)p Fu(,)f Ft(ISKMAP)p
-Fu(,)g(or)h Ft(ISMACR)p Fu(\).)1762 2560 y(F)l(unction)-1861
-b Fi(char)20 b(**)f Fh(rl)p 312 2560 V 21 w(in)n(v)n(oking)p
-541 2560 V 23 w(k)n(eyseqs)k Fg(\()p Ft(rl_command_func_t)13
-b(*function)p Fg(\))195 2615 y Fu(Return)i(an)h(arra)o(y)e(of)h
-(strings)h(represen)o(ting)g(the)g(k)o(ey)f(sequences)i(used)f(to)f(in)
-o(v)o(ok)o(e)h Fk(function)g Fu(in)195 2670 y(the)f(curren)o(t)g(k)o
-(eymap.)p eop
+Fu(.)p eop
 %%Page: 29 31
 29 30 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(29)1762 149 y(F)l(unction)-1861 b Fi(char)20
-b(**)f Fh(rl)p 312 149 18 3 v 21 w(in)n(v)n(oking)p 541
-149 V 23 w(k)n(eyseqs)p 750 149 V 21 w(in)p 818 149 V
-22 w(map)i Fg(\()p Ft(rl_command_func_t)283 204 y(*function,)13
-b(Keymap)i(map)p Fg(\))195 259 y Fu(Return)g(an)h(arra)o(y)e(of)h
-(strings)h(represen)o(ting)g(the)g(k)o(ey)f(sequences)i(used)f(to)f(in)
-o(v)o(ok)o(e)h Fk(function)g Fu(in)195 314 y(the)f(k)o(eymap)g
-Fk(map)p Fu(.)1762 426 y(F)l(unction)-1861 b Fi(void)20
-b Fh(rl)p 241 426 V 21 w(function)p 467 426 V 21 w(dump)r(er)g
-Fg(\()p Ft(int)15 b(readable)p Fg(\))195 481 y Fu(Prin)o(t)g(the)f
-(readline)j(function)e(names)g(and)f(the)h(k)o(ey)g(sequences)g(curren)
-o(tly)g(b)q(ound)h(to)e(them)h(to)195 536 y Ft(rl_outstream)p
-Fu(.)j(If)c Fk(readable)j Fu(is)d(non-zero,)g(the)g(list)g(is)h
-(formatted)d(in)j(suc)o(h)f(a)f(w)o(a)o(y)g(that)g(it)h(can)195
-590 y(b)q(e)i(made)f(part)g(of)f(an)i Ft(inputrc)e Fu(\014le)i(and)f
-(re-read.)1762 702 y(F)l(unction)-1861 b Fi(void)20 b
-Fh(rl)p 241 702 V 21 w(list)p 337 702 V 22 w(funmap)p
-550 702 V 18 w(names)h Fg(\()p Ft(void)p Fg(\))195 757
-y Fu(Prin)o(t)15 b(the)g(names)h(of)e(all)j(bindable)g(Readline)f
-(functions)g(to)f Ft(rl_outstream)p Fu(.)1762 869 y(F)l(unction)-1861
-b Fi(const)20 b(char)g(**)f Fh(rl)p 462 869 V 21 w(funmap)p
-674 869 V 18 w(names)i Fg(\()p Ft(void)p Fg(\))195 924
+(Readline)843 b(29)1762 149 y(F)l(unction)-1861 b Fi(rl_command_func_t)
+22 b(*)d Fh(rl)p 626 149 18 3 v 21 w(function)p 852 149
+V 21 w(of)p 920 149 V 20 w(k)n(eyseq)24 b Fg(\()p Ft(const)14
+b(char)283 204 y(*keyseq,)g(Keymap)g(map,)h(int)f(*type)p
+Fg(\))195 259 y Fu(Return)i(the)g(function)h(in)o(v)o(ok)o(ed)g(b)o(y)f
+Fk(k)o(eyseq)h Fu(in)g(k)o(eymap)f Fk(map)p Fu(.)23 b(If)17
+b Fk(map)g Fu(is)g Ft(NULL)p Fu(,)f(the)g(curren)o(t)195
+314 y(k)o(eymap)i(is)h(used.)31 b(If)18 b Fk(t)o(yp)q(e)j
+Fu(is)e(not)g Ft(NULL)p Fu(,)f(the)g(t)o(yp)q(e)h(of)f(the)h(ob)s(ject)
+f(is)h(returned)g(in)g(the)f Ft(int)195 369 y Fu(v)m(ariable)f(it)e(p)q
+(oin)o(ts)h(to)e(\(one)h(of)g Ft(ISFUNC)p Fu(,)f Ft(ISKMAP)p
+Fu(,)g(or)h Ft(ISMACR)p Fu(\).)1762 474 y(F)l(unction)-1861
+b Fi(char)20 b(**)f Fh(rl)p 312 474 V 21 w(in)n(v)n(oking)p
+541 474 V 23 w(k)n(eyseqs)k Fg(\()p Ft(rl_command_func_t)13
+b(*function)p Fg(\))195 528 y Fu(Return)i(an)h(arra)o(y)e(of)h(strings)
+h(represen)o(ting)g(the)g(k)o(ey)f(sequences)i(used)f(to)f(in)o(v)o(ok)
+o(e)h Fk(function)g Fu(in)195 583 y(the)f(curren)o(t)g(k)o(eymap.)1762
+688 y(F)l(unction)-1861 b Fi(char)20 b(**)f Fh(rl)p 312
+688 V 21 w(in)n(v)n(oking)p 541 688 V 23 w(k)n(eyseqs)p
+750 688 V 21 w(in)p 818 688 V 22 w(map)i Fg(\()p Ft(rl_command_func_t)
+283 743 y(*function,)13 b(Keymap)i(map)p Fg(\))195 798
+y Fu(Return)g(an)h(arra)o(y)e(of)h(strings)h(represen)o(ting)g(the)g(k)
+o(ey)f(sequences)i(used)f(to)f(in)o(v)o(ok)o(e)h Fk(function)g
+Fu(in)195 853 y(the)f(k)o(eymap)g Fk(map)p Fu(.)1762
+958 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241 958
+V 21 w(function)p 467 958 V 21 w(dump)r(er)g Fg(\()p
+Ft(int)15 b(readable)p Fg(\))195 1013 y Fu(Prin)o(t)g(the)f(readline)j
+(function)e(names)g(and)f(the)h(k)o(ey)g(sequences)g(curren)o(tly)g(b)q
+(ound)h(to)e(them)h(to)195 1067 y Ft(rl_outstream)p Fu(.)j(If)c
+Fk(readable)j Fu(is)d(non-zero,)g(the)g(list)g(is)h(formatted)d(in)j
+(suc)o(h)f(a)f(w)o(a)o(y)g(that)g(it)h(can)195 1122 y(b)q(e)i(made)f
+(part)g(of)f(an)i Ft(inputrc)e Fu(\014le)i(and)f(re-read.)1762
+1227 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241 1227
+V 21 w(list)p 337 1227 V 22 w(funmap)p 550 1227 V 18
+w(names)h Fg(\()p Ft(void)p Fg(\))195 1282 y Fu(Prin)o(t)15
+b(the)g(names)h(of)e(all)j(bindable)g(Readline)f(functions)g(to)f
+Ft(rl_outstream)p Fu(.)1762 1387 y(F)l(unction)-1861
+b Fi(const)20 b(char)g(**)f Fh(rl)p 462 1387 V 21 w(funmap)p
+674 1387 V 18 w(names)i Fg(\()p Ft(void)p Fg(\))195 1442
 y Fu(Return)13 b(a)f(NULL)i(terminated)g(arra)o(y)d(of)i(kno)o(wn)g
 (function)g(names.)20 b(The)13 b(arra)o(y)f(is)h(sorted.)19
-b(The)195 979 y(arra)o(y)11 b(itself)j(is)f(allo)q(cated,)h(but)f(not)f
-(the)h(strings)f(inside.)21 b(Y)l(ou)13 b(should)h Ft(free\(\))d
-Fu(the)i(arra)o(y)e(when)195 1034 y(y)o(ou)k(are)g(done,)g(but)g(not)g
-(the)g(p)q(oin)o(ters.)1762 1146 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1146 V 21 w(add)p 328 1146
-V 20 w(funmap)p 539 1146 V 18 w(en)n(try)j Fg(\()p Ft(const)14
-b(char)h(*name,)f(rl_command_func_t)283 1201 y(*function)p
-Fg(\))195 1255 y Fu(Add)j Fk(name)i Fu(to)d(the)g(list)h(of)f(bindable)
+b(The)195 1497 y(arra)o(y)11 b(itself)j(is)f(allo)q(cated,)h(but)f(not)
+f(the)h(strings)f(inside.)21 b(Y)l(ou)13 b(should)h Ft(free\(\))d
+Fu(the)i(arra)o(y)e(when)195 1552 y(y)o(ou)k(are)g(done,)g(but)g(not)g
+(the)g(p)q(oin)o(ters.)1762 1657 y(F)l(unction)-1861
+b Fi(int)20 b Fh(rl)p 215 1657 V 21 w(add)p 328 1657
+V 20 w(funmap)p 539 1657 V 18 w(en)n(try)j Fg(\()p Ft(const)14
+b(char)h(*name,)f(rl_command_func_t)283 1711 y(*function)p
+Fg(\))195 1766 y Fu(Add)j Fk(name)i Fu(to)d(the)g(list)h(of)f(bindable)
 j(Readline)f(command)e(names,)g(and)h(mak)o(e)f Fk(function)h
-Fu(the)195 1310 y(function)f(to)f(b)q(e)g(called)i(when)f
-Fk(name)i Fu(is)d(in)o(v)o(ok)o(ed.)75 1419 y Fj(2.4.5)30
-b(Allo)n(wing)21 b(Undoing)137 1515 y Fu(Supp)q(orting)14
+Fu(the)195 1821 y(function)f(to)f(b)q(e)g(called)i(when)f
+Fk(name)i Fu(is)d(in)o(v)o(ok)o(ed.)75 1926 y Fj(2.4.5)30
+b(Allo)n(wing)21 b(Undoing)137 2020 y Fu(Supp)q(orting)14
 b(the)g(undo)f(command)g(is)h(a)f(painless)h(thing,)g(and)f(mak)o(es)g
-(y)o(our)f(functions)i(m)o(uc)o(h)f(more)75 1569 y(useful.)21
+(y)o(our)f(functions)i(m)o(uc)o(h)f(more)75 2075 y(useful.)21
 b(It)15 b(is)h(certainly)g(easy)f(to)g(try)f(something)i(if)f(y)o(ou)g
-(kno)o(w)g(y)o(ou)g(can)g(undo)h(it.)137 1636 y(If)21
+(kno)o(w)g(y)o(ou)g(can)g(undo)h(it.)137 2140 y(If)21
 b(y)o(our)f(function)h(simply)h(inserts)f(text)e(once,)j(or)e(deletes)h
-(text)f(once,)i(and)f(uses)f Ft(rl_insert_)75 1690 y(text\(\))13
+(text)f(once,)i(and)f(uses)f Ft(rl_insert_)75 2194 y(text\(\))13
 b Fu(or)h Ft(rl_delete_text\(\))d Fu(to)j(do)f(it,)h(then)h(undoing)g
 (is)f(already)g(done)h(for)e(y)o(ou)h(automatically)l(.)137
-1757 y(If)d(y)o(ou)f(do)g(m)o(ultiple)i(insertions)f(or)f(m)o(ultiple)i
+2259 y(If)d(y)o(ou)f(do)g(m)o(ultiple)i(insertions)f(or)f(m)o(ultiple)i
 (deletions,)g(or)e(an)o(y)g(com)o(bination)h(of)f(these)g(op)q
-(erations,)75 1812 y(y)o(ou)19 b(should)h(group)e(them)h(together)g(in)
+(erations,)75 2314 y(y)o(ou)19 b(should)h(group)e(them)h(together)g(in)
 o(to)g(one)g(op)q(eration.)31 b(This)20 b(is)f(done)h(with)f
-Ft(rl_begin_undo_)75 1866 y(group\(\))14 b Fu(and)i Ft
-(rl_end_undo_group\(\))p Fu(.)137 1933 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 1996
+Ft(rl_begin_undo_)75 2369 y(group\(\))14 b Fu(and)i Ft
+(rl_end_undo_group\(\))p Fu(.)137 2434 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 2496
 y Ft(enum)23 b(undo_code)g({)h(UNDO_DELETE,)e(UNDO_INSERT,)g
-(UNDO_BEGIN,)g(UNDO_END)h(};)137 2062 y Fu(Notice)16
+(UNDO_BEGIN,)g(UNDO_END)h(};)137 2560 y Fu(Notice)16
 b(that)e Ft(UNDO_DELETE)g Fu(means)h(to)g(insert)g(some)g(text,)f(and)i
-Ft(UNDO_INSERT)d Fu(means)i(to)g(delete)75 2117 y(some)e(text.)19
+Ft(UNDO_INSERT)d Fu(means)i(to)g(delete)75 2615 y(some)e(text.)19
 b(That)14 b(is,)g(the)g(undo)g(co)q(de)g(tells)h(what)e(to)h(undo,)g
 (not)f(ho)o(w)g(to)g(undo)i(it.)k Ft(UNDO_BEGIN)13 b
-Fu(and)75 2172 y Ft(UNDO_END)h Fu(are)h(tags)f(added)i(b)o(y)f
+Fu(and)75 2670 y Ft(UNDO_END)h Fu(are)h(tags)f(added)i(b)o(y)f
 Ft(rl_begin_undo_group\(\))d Fu(and)k Ft(rl_end_undo_group\(\))p
-Fu(.)1762 2284 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 2284 V 21 w(b)r(egin)p 372 2284 V 20 w(undo)p 517
-2284 V 20 w(group)h Fg(\()p Ft(void)p Fg(\))195 2339
-y Fu(Begins)16 b(sa)o(ving)g(undo)g(information)f(in)i(a)e(group)g
-(construct.)20 b(The)c(undo)g(information)g(usually)195
-2393 y(comes)21 b(from)f(calls)i(to)e Ft(rl_insert_text\(\))e
-Fu(and)j Ft(rl_delete_text\(\))p Fu(,)f(but)h(could)g(b)q(e)h(the)195
-2448 y(result)16 b(of)e(calls)j(to)d Ft(rl_add_undo\(\))p
-Fu(.)1762 2560 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 2560 V 21 w(end)p 326 2560 V 20 w(undo)p 471 2560
-V 20 w(group)h Fg(\()p Ft(void)p Fg(\))195 2615 y Fu(Closes)15
-b(the)f(curren)o(t)h(undo)g(group)f(started)g(with)g
-Ft(rl_begin_undo_group)f(\(\))p Fu(.)19 b(There)c(should)195
-2670 y(b)q(e)h(one)f(call)i(to)d Ft(rl_end_undo_group\(\))f
-Fu(for)h(eac)o(h)h(call)i(to)d Ft(rl_begin_undo_group\(\))p
 Fu(.)p eop
 %%Page: 30 32
 30 31 bop 75 -58 a Fu(30)1299 b(GNU)15 b(Readline)h(Library)1762
-149 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241 149
-18 3 v 21 w(add)p 354 149 V 20 w(undo)i Fg(\()p Ft(enum)14
+149 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 149
+18 3 v 21 w(b)r(egin)p 372 149 V 20 w(undo)p 517 149
+V 20 w(group)h Fg(\()p Ft(void)p Fg(\))195 204 y Fu(Begins)16
+b(sa)o(ving)g(undo)g(information)f(in)i(a)e(group)g(construct.)20
+b(The)c(undo)g(information)g(usually)195 259 y(comes)21
+b(from)f(calls)i(to)e Ft(rl_insert_text\(\))e Fu(and)j
+Ft(rl_delete_text\(\))p Fu(,)f(but)h(could)g(b)q(e)h(the)195
+314 y(result)16 b(of)e(calls)j(to)d Ft(rl_add_undo\(\))p
+Fu(.)1762 418 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
+215 418 V 21 w(end)p 326 418 V 20 w(undo)p 471 418 V
+20 w(group)h Fg(\()p Ft(void)p Fg(\))195 472 y Fu(Closes)15
+b(the)f(curren)o(t)h(undo)g(group)f(started)g(with)g
+Ft(rl_begin_undo_group)f(\(\))p Fu(.)19 b(There)c(should)195
+527 y(b)q(e)h(one)f(call)i(to)d Ft(rl_end_undo_group\(\))f
+Fu(for)h(eac)o(h)h(call)i(to)d Ft(rl_begin_undo_group\(\))p
+Fu(.)1762 631 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p
+241 631 V 21 w(add)p 354 631 V 20 w(undo)i Fg(\()p Ft(enum)14
 b(undo_code)g(what,)g(int)h(start,)g(int)f(end,)h(char)283
-204 y(*text)p Fg(\))195 259 y Fu(Remem)o(b)q(er)i(ho)o(w)f(to)h(undo)g
+686 y(*text)p Fg(\))195 740 y Fu(Remem)o(b)q(er)i(ho)o(w)f(to)h(undo)g
 (an)g(ev)o(en)o(t)g(\(according)g(to)g Fk(what)q Fu(\).)24
-b(The)17 b(a\013ected)g(text)f(runs)i(from)195 314 y
+b(The)17 b(a\013ected)g(text)f(runs)i(from)195 795 y
 Fk(start)d Fu(to)g Fk(end)p Fu(,)g(and)g(encompasses)h
-Fk(text)p Fu(.)1762 428 y(F)l(unction)-1861 b Fi(void)20
-b Fh(rl)p 241 428 V 21 w(free)p 356 428 V 20 w(undo)p
-501 428 V 20 w(list)k Fg(\()p Ft(void)p Fg(\))195 483
+Fk(text)p Fu(.)1762 899 y(F)l(unction)-1861 b Fi(void)20
+b Fh(rl)p 241 899 V 21 w(free)p 356 899 V 20 w(undo)p
+501 899 V 20 w(list)k Fg(\()p Ft(void)p Fg(\))195 954
 y Fu(F)l(ree)15 b(the)h(existing)g(undo)f(list.)1762
-598 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 598
-V 21 w(do)p 297 598 V 20 w(undo)i Fg(\()p Ft(void)p Fg(\))195
-652 y Fu(Undo)12 b(the)f(\014rst)g(thing)h(on)g(the)f(undo)h(list.)19
-b(Returns)11 b Ft(0)h Fu(if)g(there)f(w)o(as)g(nothing)h(to)e(undo,)j
-(non-zero)195 707 y(if)j(something)f(w)o(as)f(undone.)137
-798 y(Finally)l(,)j(if)f(y)o(ou)f(neither)i(insert)f(nor)f(delete)i
+1057 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 1057
+V 21 w(do)p 297 1057 V 20 w(undo)i Fg(\()p Ft(void)p
+Fg(\))195 1112 y Fu(Undo)12 b(the)f(\014rst)g(thing)h(on)g(the)f(undo)h
+(list.)19 b(Returns)11 b Ft(0)h Fu(if)g(there)f(w)o(as)g(nothing)h(to)e
+(undo,)j(non-zero)195 1167 y(if)j(something)f(w)o(as)f(undone.)137
+1251 y(Finally)l(,)j(if)f(y)o(ou)f(neither)i(insert)f(nor)f(delete)i
 (text,)e(but)g(directly)i(mo)q(dify)f(the)g(existing)g(text)g(\(e.g.,)
-75 853 y(c)o(hange)j(its)h(case\),)g(call)g Ft(rl_modifying\(\))e
+75 1306 y(c)o(hange)j(its)h(case\),)g(call)g Ft(rl_modifying\(\))e
 Fu(once,)i(just)f(b)q(efore)h(y)o(ou)f(mo)q(dify)h(the)f(text.)32
-b(Y)l(ou)20 b(m)o(ust)75 907 y(supply)c(the)g(indices)h(of)e(the)g
+b(Y)l(ou)20 b(m)o(ust)75 1361 y(supply)c(the)g(indices)h(of)e(the)g
 (text)g(range)g(that)f(y)o(ou)h(are)g(going)g(to)g(mo)q(dify)l(.)1762
-1022 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 1022
+1464 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 1464
 V 21 w(mo)r(difying)h Fg(\()p Ft(int)15 b(start,)f(int)h(end)p
-Fg(\))195 1077 y Fu(T)l(ell)22 b(Readline)f(to)e(sa)o(v)o(e)h(the)g
+Fg(\))195 1519 y Fu(T)l(ell)22 b(Readline)f(to)e(sa)o(v)o(e)h(the)g
 (text)g(b)q(et)o(w)o(een)g Fk(start)g Fu(and)g Fk(end)j
 Fu(as)c(a)h(single)h(undo)g(unit.)35 b(It)20 b(is)195
-1131 y(assumed)15 b(that)g(y)o(ou)g(will)i(subsequen)o(tly)f(mo)q(dify)
-g(that)e(text.)75 1242 y Fj(2.4.6)30 b(Redispla)n(y)1762
-1385 y Fu(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241
-1385 V 21 w(redispla)n(y)k Fg(\()p Ft(void)p Fg(\))195
-1440 y Fu(Change)19 b(what's)f(displa)o(y)o(ed)i(on)f(the)g(screen)g
+1574 y(assumed)15 b(that)g(y)o(ou)g(will)i(subsequen)o(tly)f(mo)q(dify)
+g(that)e(text.)75 1678 y Fj(2.4.6)30 b(Redispla)n(y)1762
+1811 y Fu(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241
+1811 V 21 w(redispla)n(y)k Fg(\()p Ft(void)p Fg(\))195
+1866 y Fu(Change)19 b(what's)f(displa)o(y)o(ed)i(on)f(the)g(screen)g
 (to)f(re\015ect)i(the)f(curren)o(t)f(con)o(ten)o(ts)h(of)f
-Ft(rl_line_)195 1495 y(buffer)p Fu(.)1762 1609 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1609 V 21 w(forced)p 390 1609
-V 20 w(up)r(date)p 584 1609 V 20 w(displa)n(y)k Fg(\()p
-Ft(void)p Fg(\))195 1664 y Fu(F)l(orce)c(the)g(line)h(to)e(b)q(e)i(up)q
+Ft(rl_line_)195 1920 y(buffer)p Fu(.)1762 2024 y(F)l(unction)-1861
+b Fi(int)20 b Fh(rl)p 215 2024 V 21 w(forced)p 390 2024
+V 20 w(up)r(date)p 584 2024 V 20 w(displa)n(y)k Fg(\()p
+Ft(void)p Fg(\))195 2079 y Fu(F)l(orce)c(the)g(line)h(to)e(b)q(e)i(up)q
 (dated)f(and)g(redispla)o(y)o(ed,)i(whether)e(or)g(not)f(Readline)i
-(thinks)g(the)195 1719 y(screen)16 b(displa)o(y)g(is)g(correct.)1762
-1833 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 1833
-V 21 w(on)p 297 1833 V 20 w(new)p 416 1833 V 21 w(line)k
-Fg(\()p Ft(void)p Fg(\))195 1888 y Fu(T)l(ell)16 b(the)f(up)q(date)h
+(thinks)g(the)195 2134 y(screen)16 b(displa)o(y)g(is)g(correct.)1762
+2238 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 2238
+V 21 w(on)p 297 2238 V 20 w(new)p 416 2238 V 21 w(line)k
+Fg(\()p Ft(void)p Fg(\))195 2292 y Fu(T)l(ell)16 b(the)f(up)q(date)h
 (functions)g(that)e(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,)i(usually)h(after)195 1943
-y(ouputting)f(a)e(newline.)1762 2058 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 2058 V 21 w(on)p 297 2058 V
-20 w(new)p 416 2058 V 21 w(line)p 525 2058 V 22 w(with)p
-657 2058 V 22 w(prompt)h Fg(\()p Ft(void)p Fg(\))195
-2112 y Fu(T)l(ell)14 b(the)e(up)q(date)h(functions)g(that)f(w)o(e)g(ha)
+(new)g(\(empt)o(y\))f(line,)i(usually)h(after)195 2347
+y(ouputting)f(a)e(newline.)1762 2451 y(F)l(unction)-1861
+b Fi(int)20 b Fh(rl)p 215 2451 V 21 w(on)p 297 2451 V
+20 w(new)p 416 2451 V 21 w(line)p 525 2451 V 22 w(with)p
+657 2451 V 22 w(prompt)h Fg(\()p Ft(void)p Fg(\))195
+2506 y Fu(T)l(ell)14 b(the)e(up)q(date)h(functions)g(that)f(w)o(e)g(ha)
 o(v)o(e)g(mo)o(v)o(ed)f(on)o(to)h(a)g(new)g(line,)i(with)f
-Fk(rl)p 1556 2112 14 2 v 17 w(prompt)g Fu(already)195
-2167 y(displa)o(y)o(ed.)21 b(This)15 b(could)g(b)q(e)g(used)g(b)o(y)f
+Fk(rl)p 1556 2506 14 2 v 17 w(prompt)g Fu(already)195
+2560 y(displa)o(y)o(ed.)21 b(This)15 b(could)g(b)q(e)g(used)g(b)o(y)f
 (applications)i(that)e(w)o(an)o(t)f(to)h(output)g(the)g(prompt)g
-(string)195 2222 y(themselv)o(es,)g(but)g(still)h(need)g(Readline)g(to)
+(string)195 2615 y(themselv)o(es,)g(but)g(still)h(need)g(Readline)g(to)
 e(kno)o(w)g(the)h(prompt)f(string)h(length)g(for)f(redispla)o(y)l(.)21
-b(It)195 2277 y(should)16 b(b)q(e)g(used)g(after)e(setting)i
-Fk(rl)p 795 2277 V 16 w(already)p 956 2277 V 17 w(prompted)p
-Fu(.)1762 2391 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 2391 18 3 v 21 w(reset)p 357 2391 V 20 w(line)p 465
-2391 V 23 w(state)j Fg(\()p Ft(void)p Fg(\))195 2446
-y Fu(Reset)17 b(the)g(displa)o(y)i(state)d(to)h(a)g(clean)h(state)f
-(and)g(redispla)o(y)i(the)e(curren)o(t)g(line)i(starting)e(on)g(a)195
-2501 y(new)e(line.)1762 2615 y(F)l(unction)-1861 b Fi(int)20
-b Fh(rl)p 215 2615 V 21 w(crlf)j Fg(\()p Ft(void)p Fg(\))195
-2670 y Fu(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.)p eop
+b(It)195 2670 y(should)16 b(b)q(e)g(used)g(after)e(setting)i
+Fk(rl)p 795 2670 V 16 w(already)p 956 2670 V 17 w(prompted)p
+Fu(.)p eop
 %%Page: 31 33
 31 32 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
 (Readline)843 b(31)1762 149 y(F)l(unction)-1861 b Fi(int)20
-b Fh(rl)p 215 149 18 3 v 21 w(sho)n(w)p 359 149 V 20
-w(c)n(har)j Fg(\()p Ft(int)14 b(c)p Fg(\))195 204 y Fu(Displa)o(y)j(c)o
-(haracter)e Fk(c)20 b Fu(on)c Ft(rl_outstream)p Fu(.)21
-b(If)c(Readline)g(has)f(not)g(b)q(een)i(set)e(to)f(displa)o(y)j(meta)
-195 259 y(c)o(haracters)12 b(directly)l(,)j(this)e(will)i(con)o(v)o
-(ert)d(meta)h(c)o(haracters)f(to)g(a)h(meta-pre\014xed)g(k)o(ey)g
-(sequence.)195 314 y(This)j(is)f(in)o(tended)i(for)e(use)g(b)o(y)g
+b Fh(rl)p 215 149 18 3 v 21 w(reset)p 357 149 V 20 w(line)p
+465 149 V 23 w(state)j Fg(\()p Ft(void)p Fg(\))195 204
+y Fu(Reset)17 b(the)g(displa)o(y)i(state)d(to)h(a)g(clean)h(state)f
+(and)g(redispla)o(y)i(the)e(curren)o(t)g(line)i(starting)e(on)g(a)195
+259 y(new)e(line.)1762 383 y(F)l(unction)-1861 b Fi(int)20
+b Fh(rl)p 215 383 V 21 w(crlf)j Fg(\()p Ft(void)p Fg(\))195
+438 y Fu(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.)1762 562 y(F)l(unction)-1861 b
+Fi(int)20 b Fh(rl)p 215 562 V 21 w(sho)n(w)p 359 562
+V 20 w(c)n(har)j Fg(\()p Ft(int)14 b(c)p Fg(\))195 616
+y Fu(Displa)o(y)j(c)o(haracter)e Fk(c)20 b Fu(on)c Ft(rl_outstream)p
+Fu(.)21 b(If)c(Readline)g(has)f(not)g(b)q(een)i(set)e(to)f(displa)o(y)j
+(meta)195 671 y(c)o(haracters)12 b(directly)l(,)j(this)e(will)i(con)o
+(v)o(ert)d(meta)h(c)o(haracters)f(to)g(a)h(meta-pre\014xed)g(k)o(ey)g
+(sequence.)195 726 y(This)j(is)f(in)o(tended)i(for)e(use)g(b)o(y)g
 (applications)i(whic)o(h)f(wish)g(to)f(do)g(their)g(o)o(wn)g(redispla)o
-(y)l(.)1762 443 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 443 V 21 w(message)g Fg(\()p Ft(const)14 b(char)h(*,)g(...)p
-Fg(\))195 498 y Fu(The)c(argumen)o(ts)e(are)h(a)g(format)f(string)h(as)
+(y)l(.)1762 850 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
+215 850 V 21 w(message)g Fg(\()p Ft(const)14 b(char)h(*,)g(...)p
+Fg(\))195 905 y Fu(The)c(argumen)o(ts)e(are)h(a)g(format)f(string)h(as)
 g(w)o(ould)h(b)q(e)g(supplied)i(to)c Ft(printf)p Fu(,)h(p)q(ossibly)i
-(con)o(taining)195 553 y(con)o(v)o(ersion)22 b(sp)q(eci\014cations)i
+(con)o(taining)195 959 y(con)o(v)o(ersion)22 b(sp)q(eci\014cations)i
 (suc)o(h)f(as)e(`)p Ft(\045d)p Fu(',)i(and)f(an)o(y)g(additional)h
-(argumen)o(ts)e(necessary)i(to)195 608 y(satisfy)d(the)h(con)o(v)o
+(argumen)o(ts)e(necessary)i(to)195 1014 y(satisfy)d(the)h(con)o(v)o
 (ersion)g(sp)q(eci\014cations.)38 b(The)21 b(resulting)h(string)e(is)i
-(displa)o(y)o(ed)g(in)f(the)g Fk(ec)o(ho)195 663 y(area)p
+(displa)o(y)o(ed)g(in)f(the)g Fk(ec)o(ho)195 1069 y(area)p
 Fu(.)e(The)d(ec)o(ho)f(area)g(is)g(also)g(used)h(to)f(displa)o(y)h(n)o
 (umeric)g(argumen)o(ts)f(and)g(searc)o(h)g(strings.)1762
-792 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 792
-V 21 w(clear)p 354 792 V 21 w(message)h Fg(\()p Ft(void)p
-Fg(\))195 847 y Fu(Clear)15 b(the)h(message)e(in)i(the)g(ec)o(ho)f
-(area.)1762 976 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p
-241 976 V 21 w(sa)n(v)n(e)p 365 976 V 21 w(prompt)h Fg(\()p
-Ft(void)p Fg(\))195 1031 y Fu(Sa)o(v)o(e)g(the)h(lo)q(cal)g(Readline)h
-(prompt)e(displa)o(y)i(state)e(in)h(preparation)f(for)g(displa)o(ying)j
-(a)d(new)195 1086 y(message)15 b(in)h(the)f(message)g(area)f(with)i
-Ft(rl_message\(\))p Fu(.)1762 1215 y(F)l(unction)-1861
-b Fi(void)20 b Fh(rl)p 241 1215 V 21 w(restore)p 436
-1215 V 20 w(prompt)g Fg(\()p Ft(void)p Fg(\))195 1270
+1193 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 1193
+V 21 w(clear)p 354 1193 V 21 w(message)h Fg(\()p Ft(void)p
+Fg(\))195 1248 y Fu(Clear)15 b(the)h(message)e(in)i(the)g(ec)o(ho)f
+(area.)1762 1371 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p
+241 1371 V 21 w(sa)n(v)n(e)p 365 1371 V 21 w(prompt)h
+Fg(\()p Ft(void)p Fg(\))195 1426 y Fu(Sa)o(v)o(e)g(the)h(lo)q(cal)g
+(Readline)h(prompt)e(displa)o(y)i(state)e(in)h(preparation)f(for)g
+(displa)o(ying)j(a)d(new)195 1481 y(message)15 b(in)h(the)f(message)g
+(area)f(with)i Ft(rl_message\(\))p Fu(.)1762 1605 y(F)l(unction)-1861
+b Fi(void)20 b Fh(rl)p 241 1605 V 21 w(restore)p 436
+1605 V 20 w(prompt)g Fg(\()p Ft(void)p Fg(\))195 1660
 y Fu(Restore)g(the)i(lo)q(cal)g(Readline)h(prompt)e(displa)o(y)h(state)
 f(sa)o(v)o(ed)g(b)o(y)g(the)g(most)g(recen)o(t)g(call)i(to)195
-1325 y Ft(rl_save_prompt)p Fu(.)1762 1455 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1455 V 21 w(expand)p 416 1455
+1714 y Ft(rl_save_prompt)p Fu(.)1762 1838 y(F)l(unction)-1861
+b Fi(int)20 b Fh(rl)p 215 1838 V 21 w(expand)p 416 1838
 V 20 w(prompt)h Fg(\()p Ft(char)14 b(*prompt)p Fg(\))195
-1509 y Fu(Expand)22 b(an)o(y)f(sp)q(ecial)i(c)o(haracter)e(sequences)h
+1893 y Fu(Expand)22 b(an)o(y)f(sp)q(ecial)i(c)o(haracter)e(sequences)h
 (in)g Fk(prompt)g Fu(and)g(set)f(up)h(the)f(lo)q(cal)i(Readline)195
-1564 y(prompt)17 b(redispla)o(y)i(v)m(ariables.)30 b(This)18
+1948 y(prompt)17 b(redispla)o(y)i(v)m(ariables.)30 b(This)18
 b(function)h(is)f(called)i(b)o(y)e Ft(readline\(\))p
-Fu(.)26 b(It)18 b(ma)o(y)f(also)h(b)q(e)195 1619 y(called)12
+Fu(.)26 b(It)18 b(ma)o(y)f(also)h(b)q(e)195 2003 y(called)12
 b(to)e(expand)h(the)g(primary)g(prompt)f(if)h(the)f Ft
-(rl_on_new_line_with_prompt\(\))d Fu(function)195 1674
+(rl_on_new_line_with_prompt\(\))d Fu(function)195 2057
 y(or)12 b Ft(rl_already_prompted)e Fu(v)m(ariable)k(is)g(used.)19
 b(It)13 b(returns)g(the)f(n)o(um)o(b)q(er)i(of)e(visible)j(c)o
-(haracters)195 1729 y(on)g(the)g(last)h(line)g(of)f(the)g(\(p)q
-(ossibly)i(m)o(ulti-line\))g(prompt.)1762 1858 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1858 V 21 w(set)p 307 1858
+(haracters)195 2112 y(on)g(the)g(last)h(line)g(of)f(the)g(\(p)q
+(ossibly)i(m)o(ulti-line\))g(prompt.)1762 2236 y(F)l(unction)-1861
+b Fi(int)20 b Fh(rl)p 215 2236 V 21 w(set)p 307 2236
 V 20 w(prompt)h Fg(\()p Ft(const)14 b(char)h(*prompt)p
-Fg(\))195 1913 y Fu(Mak)o(e)e(Readline)i(use)e Fk(prompt)h
+Fg(\))195 2291 y Fu(Mak)o(e)e(Readline)i(use)e Fk(prompt)h
 Fu(for)f(subsequen)o(t)h(redispla)o(y)l(.)21 b(This)14
-b(calls)g Ft(rl_expand_prompt\(\))195 1968 y Fu(to)h(expand)g(the)h
+b(calls)g Ft(rl_expand_prompt\(\))195 2346 y Fu(to)h(expand)g(the)h
 (prompt)e(and)i(sets)f Ft(rl_prompt)f Fu(to)g(the)h(result.)75
-2088 y Fj(2.4.7)30 b(Mo)r(difying)20 b(T)-5 b(ext)1762
-2247 y Fu(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215
-2247 V 21 w(insert)p 378 2247 V 21 w(text)k Fg(\()p Ft(const)14
-b(char)g(*text)p Fg(\))195 2301 y Fu(Insert)h Fk(text)h
+2462 y Fj(2.4.7)30 b(Mo)r(difying)20 b(T)-5 b(ext)1762
+2615 y Fu(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215
+2615 V 21 w(insert)p 378 2615 V 21 w(text)k Fg(\()p Ft(const)14
+b(char)g(*text)p Fg(\))195 2670 y Fu(Insert)h Fk(text)h
 Fu(in)o(to)f(the)h(line)g(at)f(the)g(curren)o(t)g(cursor)g(p)q
-(osition.)1762 2431 y(F)l(unction)-1861 b Fi(int)20 b
-Fh(rl)p 215 2431 V 21 w(delete)p 383 2431 V 22 w(text)k
-Fg(\()p Ft(int)14 b(start,)h(int)f(end)p Fg(\))195 2486
-y Fu(Delete)i(the)f(text)g(b)q(et)o(w)o(een)g Fk(start)g
-Fu(and)h Fk(end)h Fu(in)f(the)g(curren)o(t)f(line.)1762
-2615 y(F)l(unction)-1861 b Fi(char)20 b(*)f Fh(rl)p 286
-2615 V 21 w(cop)n(y)p 421 2615 V 21 w(text)24 b Fg(\()p
-Ft(int)14 b(start,)h(int)g(end)p Fg(\))195 2670 y Fu(Return)g(a)g(cop)o
-(y)g(of)g(the)g(text)f(b)q(et)o(w)o(een)i Fk(start)f
-Fu(and)g Fk(end)j Fu(in)e(the)f(curren)o(t)g(line.)p
-eop
+(osition.)p eop
 %%Page: 32 34
 32 33 bop 75 -58 a Fu(32)1299 b(GNU)15 b(Readline)h(Library)1762
 149 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 149
-18 3 v 21 w(kill)p 311 149 V 23 w(text)k Fg(\()p Ft(int)14
-b(start,)h(int)g(end)p Fg(\))195 204 y Fu(Cop)o(y)i(the)g(text)f(b)q
+18 3 v 21 w(delete)p 383 149 V 22 w(text)k Fg(\()p Ft(int)14
+b(start,)h(int)f(end)p Fg(\))195 204 y Fu(Delete)i(the)f(text)g(b)q(et)
+o(w)o(een)g Fk(start)g Fu(and)h Fk(end)h Fu(in)f(the)g(curren)o(t)f
+(line.)1762 321 y(F)l(unction)-1861 b Fi(char)20 b(*)f
+Fh(rl)p 286 321 V 21 w(cop)n(y)p 421 321 V 21 w(text)24
+b Fg(\()p Ft(int)14 b(start,)h(int)g(end)p Fg(\))195
+376 y Fu(Return)g(a)g(cop)o(y)g(of)g(the)g(text)f(b)q(et)o(w)o(een)i
+Fk(start)f Fu(and)g Fk(end)j Fu(in)e(the)f(curren)o(t)g(line.)1762
+494 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 494
+V 21 w(kill)p 311 494 V 23 w(text)k Fg(\()p Ft(int)14
+b(start,)h(int)g(end)p Fg(\))195 548 y Fu(Cop)o(y)i(the)g(text)f(b)q
 (et)o(w)o(een)i Fk(start)f Fu(and)g Fk(end)i Fu(in)f(the)f(curren)o(t)g
-(line)i(to)e(the)g(kill)i(ring,)e(app)q(ending)195 259
+(line)i(to)e(the)g(kill)i(ring,)e(app)q(ending)195 603
 y(or)f(prep)q(ending)k(to)c(the)h(last)g(kill)i(if)e(the)g(last)g
 (command)g(w)o(as)f(a)h(kill)i(command.)25 b(The)17 b(text)f(is)195
-314 y(deleted.)26 b(If)17 b Fk(start)g Fu(is)g(less)g(than)g
+658 y(deleted.)26 b(If)17 b Fk(start)g Fu(is)g(less)g(than)g
 Fk(end)p Fu(,)g(the)g(text)g(is)g(app)q(ended,)h(otherwise)f(prep)q
-(ended.)27 b(If)17 b(the)195 369 y(last)e(command)g(w)o(as)g(not)f(a)h
+(ended.)27 b(If)17 b(the)195 713 y(last)e(command)g(w)o(as)g(not)f(a)h
 (kill,)i(a)e(new)g(kill)i(ring)f(slot)f(is)h(used.)1762
-478 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 478
-V 21 w(push)p 355 478 V 19 w(macro)p 529 478 V 19 w(input)k
-Fg(\()p Ft(char)14 b(*macro)p Fg(\))195 533 y Fu(Cause)g
+830 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 830
+V 21 w(push)p 355 830 V 19 w(macro)p 529 830 V 19 w(input)k
+Fg(\()p Ft(char)14 b(*macro)p Fg(\))195 885 y Fu(Cause)g
 Fk(macro)i Fu(to)d(b)q(e)i(inserted)g(in)o(to)f(the)g(line,)i(as)e(if)g
 (it)h(had)f(b)q(een)h(in)o(v)o(ok)o(ed)g(b)o(y)f(a)g(k)o(ey)g(b)q(ound)
-h(to)195 588 y(a)g(macro.)k(Not)c(esp)q(ecially)i(useful;)f(use)g
-Ft(rl_insert_text\(\))d Fu(instead.)75 696 y Fj(2.4.8)30
-b(Character)21 b(Input)1762 834 y Fu(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 834 V 21 w(read)p 346 834 V
-20 w(k)n(ey)k Fg(\()p Ft(void)p Fg(\))195 889 y Fu(Return)14
+h(to)195 940 y(a)g(macro.)k(Not)c(esp)q(ecially)i(useful;)f(use)g
+Ft(rl_insert_text\(\))d Fu(instead.)75 1052 y Fj(2.4.8)30
+b(Character)21 b(Input)1762 1198 y Fu(F)l(unction)-1861
+b Fi(int)20 b Fh(rl)p 215 1198 V 21 w(read)p 346 1198
+V 20 w(k)n(ey)k Fg(\()p Ft(void)p Fg(\))195 1253 y Fu(Return)14
 b(the)h(next)g(c)o(haracter)f(a)o(v)m(ailable)i(from)e(Readline's)i
-(curren)o(t)f(input)g(stream.)k(This)d(han-)195 944 y(dles)f(input)g
-(inserted)f(in)o(to)g(the)g(input)h(stream)e(via)h Fk(rl)p
-1117 944 14 2 v 17 w(p)q(ending)p 1290 944 V 18 w(input)i
-Fu(\(see)e(Section)h(2.3)e([Read-)195 999 y(line)21 b(V)l(ariables],)g
-(page)f(22\))f(and)h Ft(rl_stuff_char\(\))p Fu(,)e(macros,)h(and)h(c)o
-(haracters)f(read)h(from)195 1053 y(the)d(k)o(eyb)q(oard.)25
-b(While)19 b(w)o(aiting)e(for)f(input,)j(this)e(function)h(will)h(call)
-f(an)o(y)e(function)i(assigned)195 1108 y(to)d(the)g
-Ft(rl_event_hook)e Fu(v)m(ariable.)1762 1218 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1218 18 3 v 21 w(getc)j Fg(\()p
-Ft(FILE)14 b(*stream)p Fg(\))195 1273 y Fu(Return)c(the)h(next)g(c)o
-(haracter)f(a)o(v)m(ailable)i(from)e Fk(stream)p Fu(,)g(whic)o(h)i(is)f
-(assumed)f(to)g(b)q(e)i(the)e(k)o(eyb)q(oard.)1762 1382
-y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 1382 V
-21 w(stu\013)p 346 1382 V 20 w(c)n(har)j Fg(\()p Ft(int)15
-b(c)p Fg(\))195 1437 y Fu(Insert)i Fk(c)i Fu(in)o(to)d(the)h(Readline)h
-(input)f(stream.)23 b(It)16 b(will)i(b)q(e)f Ft(")p Fu(read)p
-Ft(")g Fu(b)q(efore)f(Readline)i(attempts)195 1492 y(to)d(read)g(c)o
-(haracters)f(from)h(the)g(terminal)h(with)f Ft(rl_read_key\(\))p
-Fu(.)1762 1602 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 1602 V 21 w(execute)p 423 1602 V 22 w(next)j Fg(\()p
-Ft(int)15 b(c)p Fg(\))195 1656 y Fu(Mak)o(e)i Fk(c)k
-Fu(b)q(e)d(the)g(next)g(command)g(to)f(b)q(e)i(executed)f(when)h
-Ft(rl_read_key\(\))d Fu(is)i(called.)29 b(This)195 1711
-y(sets)15 b Fk(rl)p 317 1711 14 2 v 17 w(p)q(ending)p
-490 1711 V 18 w(input)p Fu(.)1762 1821 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1821 18 3 v 21 w(clear)p 354
-1821 V 21 w(p)r(ending)p 575 1821 V 21 w(input)j Fg(\()p
-Ft(void)p Fg(\))195 1876 y Fu(Unset)f Fk(rl)p 365 1876
-14 2 v 16 w(p)q(ending)p 537 1876 V 19 w(input)p Fu(,)h(e\013ectiv)o
-(ely)g(negating)e(the)h(e\013ect)f(of)g(an)o(y)h(previous)g(call)h(to)d
-Ft(rl_)195 1930 y(execute_next\(\))p Fu(.)29 b(This)19
-b(w)o(orks)f(only)h(if)h(the)e(p)q(ending)j(input)f(has)f(not)f
-(already)h(b)q(een)h(read)195 1985 y(with)c Ft(rl_read_key\(\))p
-Fu(.)1762 2095 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 2095 18 3 v 21 w(set)p 307 2095 V 20 w(k)n(eyb)r(oard)p
-558 2095 V 21 w(input)p 712 2095 V 21 w(timeout)i Fg(\()p
-Ft(int)15 b(u)p Fg(\))195 2150 y Fu(While)21 b(w)o(aiting)g(for)e(k)o
-(eyb)q(oard)h(input)h(in)g Ft(rl_read_key\(\))p Fu(,)e(Readline)i(will)
-h(w)o(ait)e(for)f Fk(u)h Fu(mi-)195 2204 y(croseconds)h(for)e(input)j
-(b)q(efore)f(calling)h(an)o(y)e(function)h(assigned)g(to)f
-Ft(rl_event_hook)p Fu(.)34 b(The)195 2259 y(default)16
-b(w)o(aiting)f(p)q(erio)q(d)i(is)e(one-ten)o(th)h(of)e(a)h(second.)21
-b(Returns)14 b(the)i(old)f(timeout)h(v)m(alue.)75 2367
-y Fj(2.4.9)30 b(T)-5 b(erminal)20 b(Managemen)n(t)1762
-2506 y Fu(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241
-2506 V 21 w(prep)p 376 2506 V 20 w(terminal)j Fg(\()p
-Ft(int)14 b(meta_flag)p Fg(\))195 2560 y Fu(Mo)q(dify)22
-b(the)f(terminal)h(settings)f(for)g(Readline's)h(use,)h(so)d
-Ft(readline\(\))g Fu(can)i(read)f(a)g(single)195 2615
-y(c)o(haracter)15 b(at)g(a)g(time)i(from)d(the)i(k)o(eyb)q(oard.)22
-b(The)16 b Fk(meta)p 1192 2615 14 2 v 15 w(\015ag)k Fu(argumen)o(t)15
-b(should)h(b)q(e)h(non-zero)195 2670 y(if)f(Readline)g(should)g(read)f
-(eigh)o(t-bit)i(input.)p eop
+(curren)o(t)f(input)g(stream.)k(This)d(han-)195 1308
+y(dles)f(input)g(inserted)f(in)o(to)g(the)g(input)h(stream)e(via)h
+Fk(rl)p 1117 1308 14 2 v 17 w(p)q(ending)p 1290 1308
+V 18 w(input)i Fu(\(see)e(Section)h(2.3)e([Read-)195
+1363 y(line)21 b(V)l(ariables],)g(page)f(22\))f(and)h
+Ft(rl_stuff_char\(\))p Fu(,)e(macros,)h(and)h(c)o(haracters)f(read)h
+(from)195 1417 y(the)d(k)o(eyb)q(oard.)25 b(While)19
+b(w)o(aiting)e(for)f(input,)j(this)e(function)h(will)h(call)f(an)o(y)e
+(function)i(assigned)195 1472 y(to)d(the)g Ft(rl_event_hook)e
+Fu(v)m(ariable.)1762 1589 y(F)l(unction)-1861 b Fi(int)20
+b Fh(rl)p 215 1589 18 3 v 21 w(getc)j Fg(\()p Ft(FILE)14
+b(*stream)p Fg(\))195 1644 y Fu(Return)c(the)h(next)g(c)o(haracter)f(a)
+o(v)m(ailable)i(from)e Fk(stream)p Fu(,)g(whic)o(h)i(is)f(assumed)f(to)
+g(b)q(e)i(the)e(k)o(eyb)q(oard.)1762 1761 y(F)l(unction)-1861
+b Fi(int)20 b Fh(rl)p 215 1761 V 21 w(stu\013)p 346 1761
+V 20 w(c)n(har)j Fg(\()p Ft(int)15 b(c)p Fg(\))195 1816
+y Fu(Insert)i Fk(c)i Fu(in)o(to)d(the)h(Readline)h(input)f(stream.)23
+b(It)16 b(will)i(b)q(e)f Ft(")p Fu(read)p Ft(")g Fu(b)q(efore)f
+(Readline)i(attempts)195 1871 y(to)d(read)g(c)o(haracters)f(from)h(the)
+g(terminal)h(with)f Ft(rl_read_key\(\))p Fu(.)1762 1988
+y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 1988 V
+21 w(execute)p 423 1988 V 22 w(next)j Fg(\()p Ft(int)15
+b(c)p Fg(\))195 2043 y Fu(Mak)o(e)i Fk(c)k Fu(b)q(e)d(the)g(next)g
+(command)g(to)f(b)q(e)i(executed)f(when)h Ft(rl_read_key\(\))d
+Fu(is)i(called.)29 b(This)195 2098 y(sets)15 b Fk(rl)p
+317 2098 14 2 v 17 w(p)q(ending)p 490 2098 V 18 w(input)p
+Fu(.)1762 2215 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
+215 2215 18 3 v 21 w(clear)p 354 2215 V 21 w(p)r(ending)p
+575 2215 V 21 w(input)j Fg(\()p Ft(void)p Fg(\))195 2270
+y Fu(Unset)f Fk(rl)p 365 2270 14 2 v 16 w(p)q(ending)p
+537 2270 V 19 w(input)p Fu(,)h(e\013ectiv)o(ely)g(negating)e(the)h
+(e\013ect)f(of)g(an)o(y)h(previous)g(call)h(to)d Ft(rl_)195
+2325 y(execute_next\(\))p Fu(.)29 b(This)19 b(w)o(orks)f(only)h(if)h
+(the)e(p)q(ending)j(input)f(has)f(not)f(already)h(b)q(een)h(read)195
+2380 y(with)c Ft(rl_read_key\(\))p Fu(.)1762 2497 y(F)l(unction)-1861
+b Fi(int)20 b Fh(rl)p 215 2497 18 3 v 21 w(set)p 307
+2497 V 20 w(k)n(eyb)r(oard)p 558 2497 V 21 w(input)p
+712 2497 V 21 w(timeout)i Fg(\()p Ft(int)15 b(u)p Fg(\))195
+2552 y Fu(While)21 b(w)o(aiting)g(for)e(k)o(eyb)q(oard)h(input)h(in)g
+Ft(rl_read_key\(\))p Fu(,)e(Readline)i(will)h(w)o(ait)e(for)f
+Fk(u)h Fu(mi-)195 2606 y(croseconds)h(for)e(input)j(b)q(efore)f
+(calling)h(an)o(y)e(function)h(assigned)g(to)f Ft(rl_event_hook)p
+Fu(.)34 b(The)195 2661 y(default)16 b(w)o(aiting)f(p)q(erio)q(d)i(is)e
+(one-ten)o(th)h(of)e(a)h(second.)21 b(Returns)14 b(the)i(old)f(timeout)
+h(v)m(alue.)p eop
 %%Page: 33 35
 33 34 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(33)1762 149 y(F)l(unction)-1861 b Fi(void)20
-b Fh(rl)p 241 149 18 3 v 21 w(deprep)p 434 149 V 20 w(terminal)j
-Fg(\()p Ft(void)p Fg(\))195 204 y Fu(Undo)16 b(the)g(e\013ects)f(of)h
-Ft(rl_prep_terminal\(\))p Fu(,)d(lea)o(ving)k(the)e(terminal)i(in)g
-(the)e(state)g(in)i(whic)o(h)195 259 y(it)e(w)o(as)g(b)q(efore)g(the)h
-(most)e(recen)o(t)h(call)i(to)d Ft(rl_prep_terminal\(\))p
-Fu(.)1762 379 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p
-241 379 V 21 w(tt)n(y)p 334 379 V 22 w(set)p 427 379
-V 20 w(default)p 620 379 V 21 w(bindings)k Fg(\()p Ft(Keymap)14
-b(kmap)p Fg(\))195 434 y Fu(Read)k(the)h(op)q(erating)f(system's)g
-(terminal)h(editing)h(c)o(haracters)e(\(as)f(w)o(ould)i(b)q(e)g(displa)
-o(y)o(ed)h(b)o(y)195 488 y Ft(stty)p Fu(\))14 b(to)h(their)h(Readline)g
-(equiv)m(alen)o(ts.)22 b(The)15 b(bindings)i(are)e(p)q(erformed)g(in)h
-Fk(kmap)p Fu(.)1762 608 y(F)l(unction)-1861 b Fi(int)20
-b Fh(rl)p 215 608 V 21 w(reset)p 357 608 V 20 w(terminal)j
-Fg(\()p Ft(const)15 b(char)f(*terminal_name)p Fg(\))195
-663 y Fu(Reinitialize)h(Readline's)e(idea)g(of)f(the)g(terminal)h
-(settings)g(using)g Fk(terminal)p 1491 663 14 2 v 17
-w(name)h Fu(as)e(the)h(termi-)195 718 y(nal)k(t)o(yp)q(e)f(\(e.g.,)f
-Ft(vt100)p Fu(\).)21 b(If)c Fk(terminal)p 878 718 V 17
-w(name)i Fu(is)d Ft(NULL)p Fu(,)g(the)g(v)m(alue)h(of)f(the)g
-Ft(TERM)g Fu(en)o(vironmen)o(t)195 773 y(v)m(ariable)h(is)e(used.)75
-886 y Fj(2.4.10)29 b(Utilit)n(y)22 b(F)-5 b(unctions)1762
-1035 y Fu(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215
-1035 18 3 v 21 w(extend)p 404 1035 V 21 w(line)p 513
-1035 V 22 w(bu\013er)j Fg(\()p Ft(int)15 b(len)p Fg(\))195
-1090 y Fu(Ensure)g(that)g Ft(rl_line_buffer)e Fu(has)i(enough)g(space)h
+(Readline)843 b(33)75 149 y Fj(2.4.9)30 b(T)-5 b(erminal)20
+b(Managemen)n(t)1762 290 y Fu(F)l(unction)-1861 b Fi(void)20
+b Fh(rl)p 241 290 18 3 v 21 w(prep)p 376 290 V 20 w(terminal)j
+Fg(\()p Ft(int)14 b(meta_flag)p Fg(\))195 345 y Fu(Mo)q(dify)22
+b(the)f(terminal)h(settings)f(for)g(Readline's)h(use,)h(so)d
+Ft(readline\(\))g Fu(can)i(read)f(a)g(single)195 400
+y(c)o(haracter)15 b(at)g(a)g(time)i(from)d(the)i(k)o(eyb)q(oard.)22
+b(The)16 b Fk(meta)p 1192 400 14 2 v 15 w(\015ag)k Fu(argumen)o(t)15
+b(should)h(b)q(e)h(non-zero)195 454 y(if)f(Readline)g(should)g(read)f
+(eigh)o(t-bit)i(input.)1762 566 y(F)l(unction)-1861 b
+Fi(void)20 b Fh(rl)p 241 566 18 3 v 21 w(deprep)p 434
+566 V 20 w(terminal)j Fg(\()p Ft(void)p Fg(\))195 621
+y Fu(Undo)16 b(the)g(e\013ects)f(of)h Ft(rl_prep_terminal\(\))p
+Fu(,)d(lea)o(ving)k(the)e(terminal)i(in)g(the)e(state)g(in)i(whic)o(h)
+195 676 y(it)e(w)o(as)g(b)q(efore)g(the)h(most)e(recen)o(t)h(call)i(to)
+d Ft(rl_prep_terminal\(\))p Fu(.)1762 787 y(F)l(unction)-1861
+b Fi(void)20 b Fh(rl)p 241 787 V 21 w(tt)n(y)p 334 787
+V 22 w(set)p 427 787 V 20 w(default)p 620 787 V 21 w(bindings)k
+Fg(\()p Ft(Keymap)14 b(kmap)p Fg(\))195 842 y Fu(Read)k(the)h(op)q
+(erating)f(system's)g(terminal)h(editing)h(c)o(haracters)e(\(as)f(w)o
+(ould)i(b)q(e)g(displa)o(y)o(ed)h(b)o(y)195 897 y Ft(stty)p
+Fu(\))14 b(to)h(their)h(Readline)g(equiv)m(alen)o(ts.)22
+b(The)15 b(bindings)i(are)e(p)q(erformed)g(in)h Fk(kmap)p
+Fu(.)1762 1008 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
+215 1008 V 21 w(reset)p 357 1008 V 20 w(terminal)j Fg(\()p
+Ft(const)15 b(char)f(*terminal_name)p Fg(\))195 1063
+y Fu(Reinitialize)h(Readline's)e(idea)g(of)f(the)g(terminal)h(settings)
+g(using)g Fk(terminal)p 1491 1063 14 2 v 17 w(name)h
+Fu(as)e(the)h(termi-)195 1118 y(nal)k(t)o(yp)q(e)f(\(e.g.,)f
+Ft(vt100)p Fu(\).)21 b(If)c Fk(terminal)p 878 1118 V
+17 w(name)i Fu(is)d Ft(NULL)p Fu(,)g(the)g(v)m(alue)h(of)f(the)g
+Ft(TERM)g Fu(en)o(vironmen)o(t)195 1173 y(v)m(ariable)h(is)e(used.)75
+1282 y Fj(2.4.10)29 b(Utilit)n(y)22 b(F)-5 b(unctions)1762
+1422 y Fu(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215
+1422 18 3 v 21 w(extend)p 404 1422 V 21 w(line)p 513
+1422 V 22 w(bu\013er)j Fg(\()p Ft(int)15 b(len)p Fg(\))195
+1477 y Fu(Ensure)g(that)g Ft(rl_line_buffer)e Fu(has)i(enough)g(space)h
 (to)e(hold)i Fk(len)g Fu(c)o(haracters,)e(p)q(ossibly)i(real-)195
-1145 y(lo)q(cating)g(it)f(if)h(necessary)l(.)1762 1265
-y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 1265 V
+1532 y(lo)q(cating)g(it)f(if)h(necessary)l(.)1762 1644
+y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 1644 V
 21 w(initiali)q(z)q(e)26 b Fg(\()p Ft(void)p Fg(\))195
-1320 y Fu(Initialize)21 b(or)d(re-initialize)k(Readline's)d(in)o
+1698 y Fu(Initialize)21 b(or)d(re-initialize)k(Readline's)d(in)o
 (ternal)h(state.)28 b(It's)18 b(not)g(strictly)h(necessary)g(to)f(call)
-195 1374 y(this;)d Ft(readline\(\))f Fu(calls)i(it)g(b)q(efore)f
-(reading)h(an)o(y)f(input.)1762 1494 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1494 V 21 w(ding)j Fg(\()p
-Ft(void)p Fg(\))195 1549 y Fu(Ring)15 b(the)g(terminal)h(b)q(ell,)h(ob)
+195 1753 y(this;)d Ft(readline\(\))f Fu(calls)i(it)g(b)q(efore)f
+(reading)h(an)o(y)f(input.)1762 1865 y(F)l(unction)-1861
+b Fi(int)20 b Fh(rl)p 215 1865 V 21 w(ding)j Fg(\()p
+Ft(void)p Fg(\))195 1920 y Fu(Ring)15 b(the)g(terminal)h(b)q(ell,)h(ob)
 q(eying)f(the)g(setting)f(of)g Ft(bell-style)p Fu(.)1762
-1669 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 1669
+2031 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 2031
 V 21 w(alphab)r(etic)k Fg(\()p Ft(int)14 b(c)p Fg(\))195
-1723 y Fu(Return)h(1)g(if)g Fk(c)j Fu(is)e(an)f(alphab)q(etic)i(c)o
-(haracter.)1762 1843 y(F)l(unction)-1861 b Fi(void)20
-b Fh(rl)p 241 1843 V 21 w(displa)n(y)p 435 1843 V 22
-w(matc)n(h)p 611 1843 V 20 w(list)25 b Fg(\()p Ft(char)14
-b(**matches,)g(int)g(len,)h(int)g(max)p Fg(\))195 1898
+2086 y Fu(Return)h(1)g(if)g Fk(c)j Fu(is)e(an)f(alphab)q(etic)i(c)o
+(haracter.)1762 2198 y(F)l(unction)-1861 b Fi(void)20
+b Fh(rl)p 241 2198 V 21 w(displa)n(y)p 435 2198 V 22
+w(matc)n(h)p 611 2198 V 20 w(list)25 b Fg(\()p Ft(char)14
+b(**matches,)g(int)g(len,)h(int)g(max)p Fg(\))195 2252
 y Fu(A)i(con)o(v)o(enience)i(function)f(for)f(displa)o(ying)i(a)e(list)
 h(of)e(strings)h(in)i(columnar)e(format)f(on)h(Read-)195
-1953 y(line's)h(output)f(stream.)23 b Ft(matches)16 b
+2307 y(line's)h(output)f(stream.)23 b Ft(matches)16 b
 Fu(is)h(the)g(list)h(of)e(strings,)h(in)g(argv)f(format,)g(suc)o(h)h
-(as)f(a)h(list)g(of)195 2008 y(completion)c(matc)o(hes.)19
+(as)f(a)h(list)g(of)195 2362 y(completion)c(matc)o(hes.)19
 b Ft(len)11 b Fu(is)i(the)f(n)o(um)o(b)q(er)h(of)e(strings)h(in)h
 Ft(matches)p Fu(,)f(and)g Ft(max)g Fu(is)g(the)h(length)f(of)195
-2062 y(the)h(longest)g(string)g(in)h Ft(matches)p Fu(.)19
+2417 y(the)h(longest)g(string)g(in)h Ft(matches)p Fu(.)19
 b(This)13 b(function)h(uses)f(the)h(setting)f(of)f Ft
-(print-completions-)195 2117 y(horizontally)k Fu(to)i(select)h(ho)o(w)e
+(print-completions-)195 2472 y(horizontally)k Fu(to)i(select)h(ho)o(w)e
 (the)i(matc)o(hes)e(are)h(displa)o(y)o(ed)h(\(see)g(Section)g(1.3.1)d
-([Readline)195 2172 y(Init)g(File)g(Syn)o(tax],)e(page)h(4\).)137
-2266 y(The)i(follo)o(wing)f(are)g(implemen)o(ted)i(as)e(macros,)f
+([Readline)195 2526 y(Init)g(File)g(Syn)o(tax],)e(page)h(4\).)137
+2615 y(The)i(follo)o(wing)f(are)g(implemen)o(ted)i(as)e(macros,)f
 (de\014ned)i(in)g Ft(chardefs.h)p Fu(.)k(Applications)d(should)75
-2321 y(refrain)d(from)g(using)h(them.)1762 2441 y(F)l(unction)-1861
-b Fi(int)p 176 2441 V 40 w Fh(rl)p 235 2441 V 21 w(upp)r(ercase)p
-506 2441 V 20 w(p)23 b Fg(\()p Ft(int)14 b(c)p Fg(\))195
-2495 y Fu(Return)h(1)g(if)g Fk(c)j Fu(is)e(an)f(upp)q(ercase)i(alphab)q
-(etic)f(c)o(haracter.)1762 2615 y(F)l(unction)-1861 b
-Fi(int)p 176 2615 V 40 w Fh(rl)p 235 2615 V 21 w(lo)n(w)n(ercase)p
-489 2615 V 23 w(p)22 b Fg(\()p Ft(int)15 b(c)p Fg(\))195
-2670 y Fu(Return)g(1)g(if)g Fk(c)j Fu(is)e(a)f(lo)o(w)o(ercase)g
-(alphab)q(etic)i(c)o(haracter.)p eop
+2670 y(refrain)d(from)g(using)h(them.)p eop
 %%Page: 34 36
 34 35 bop 75 -58 a Fu(34)1299 b(GNU)15 b(Readline)h(Library)1762
 149 y(F)l(unction)-1861 b Fi(int)p 176 149 18 3 v 40
-w Fh(rl)p 235 149 V 21 w(digit)p 369 149 V 22 w(p)23
-b Fg(\()p Ft(int)14 b(c)p Fg(\))195 204 y Fu(Return)h(1)g(if)g
-Fk(c)j Fu(is)e(a)f(n)o(umeric)h(c)o(haracter.)1762 360
-y(F)l(unction)-1861 b Fi(int)p 176 360 V 40 w Fh(rl)p
-235 360 V 21 w(to)p 307 360 V 21 w(upp)r(er)21 b Fg(\()p
-Ft(int)15 b(c)p Fg(\))195 415 y Fu(If)d Fk(c)j Fu(is)d(a)g(lo)o(w)o
+w Fh(rl)p 235 149 V 21 w(upp)r(ercase)p 506 149 V 20
+w(p)23 b Fg(\()p Ft(int)14 b(c)p Fg(\))195 204 y Fu(Return)h(1)g(if)g
+Fk(c)j Fu(is)e(an)f(upp)q(ercase)i(alphab)q(etic)f(c)o(haracter.)1762
+322 y(F)l(unction)-1861 b Fi(int)p 176 322 V 40 w Fh(rl)p
+235 322 V 21 w(lo)n(w)n(ercase)p 489 322 V 23 w(p)22
+b Fg(\()p Ft(int)15 b(c)p Fg(\))195 376 y Fu(Return)g(1)g(if)g
+Fk(c)j Fu(is)e(a)f(lo)o(w)o(ercase)g(alphab)q(etic)i(c)o(haracter.)1762
+494 y(F)l(unction)-1861 b Fi(int)p 176 494 V 40 w Fh(rl)p
+235 494 V 21 w(digit)p 369 494 V 22 w(p)23 b Fg(\()p
+Ft(int)14 b(c)p Fg(\))195 549 y Fu(Return)h(1)g(if)g
+Fk(c)j Fu(is)e(a)f(n)o(umeric)h(c)o(haracter.)1762 666
+y(F)l(unction)-1861 b Fi(int)p 176 666 V 40 w Fh(rl)p
+235 666 V 21 w(to)p 307 666 V 21 w(upp)r(er)21 b Fg(\()p
+Ft(int)15 b(c)p Fg(\))195 721 y Fu(If)d Fk(c)j Fu(is)d(a)g(lo)o(w)o
 (ercase)f(alphab)q(etic)j(c)o(haracter,)d(return)h(the)g(corresp)q
-(onding)h(upp)q(ercase)g(c)o(haracter.)1762 571 y(F)l(unction)-1861
-b Fi(int)p 176 571 V 40 w Fh(rl)p 235 571 V 21 w(to)p
-307 571 V 21 w(lo)n(w)n(er)24 b Fg(\()p Ft(int)15 b(c)p
-Fg(\))195 626 y Fu(If)g Fk(c)i Fu(is)e(an)f(upp)q(ercase)i(alphab)q
+(onding)h(upp)q(ercase)g(c)o(haracter.)1762 838 y(F)l(unction)-1861
+b Fi(int)p 176 838 V 40 w Fh(rl)p 235 838 V 21 w(to)p
+307 838 V 21 w(lo)n(w)n(er)24 b Fg(\()p Ft(int)15 b(c)p
+Fg(\))195 893 y Fu(If)g Fk(c)i Fu(is)e(an)f(upp)q(ercase)i(alphab)q
 (etic)g(c)o(haracter,)e(return)g(the)h(corresp)q(onding)g(lo)o(w)o
-(ercase)f(c)o(harac-)195 680 y(ter.)1762 836 y(F)l(unction)-1861
-b Fi(int)p 176 836 V 40 w Fh(rl)p 235 836 V 21 w(digit)p
-369 836 V 22 w(v)m(alue)24 b Fg(\()p Ft(int)15 b(c)p
-Fg(\))195 891 y Fu(If)g Fk(c)k Fu(is)c(a)g(n)o(um)o(b)q(er,)g(return)g
-(the)h(v)m(alue)g(it)g(represen)o(ts.)75 1029 y Fj(2.4.11)29
-b(Miscellaneous)22 b(F)-5 b(unctions)1762 1214 y Fu(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1214 V 21 w(macro)p 391 1214
+(ercase)f(c)o(harac-)195 948 y(ter.)1762 1065 y(F)l(unction)-1861
+b Fi(int)p 176 1065 V 40 w Fh(rl)p 235 1065 V 21 w(digit)p
+369 1065 V 22 w(v)m(alue)24 b Fg(\()p Ft(int)15 b(c)p
+Fg(\))195 1120 y Fu(If)g Fk(c)k Fu(is)c(a)g(n)o(um)o(b)q(er,)g(return)g
+(the)h(v)m(alue)g(it)g(represen)o(ts.)75 1232 y Fj(2.4.11)29
+b(Miscellaneous)22 b(F)-5 b(unctions)1762 1379 y Fu(F)l(unction)-1861
+b Fi(int)20 b Fh(rl)p 215 1379 V 21 w(macro)p 391 1379
 V 19 w(bind)j Fg(\()p Ft(const)14 b(char)g(*keyseq,)h(const)f(char)h
-(*macro,)283 1269 y(Keymap)f(map)p Fg(\))195 1324 y Fu(Bind)f(the)f(k)o
+(*macro,)283 1433 y(Keymap)f(map)p Fg(\))195 1488 y Fu(Bind)f(the)f(k)o
 (ey)f(sequence)i Fk(k)o(eyseq)g Fu(to)e(in)o(v)o(ok)o(e)g(the)h(macro)f
 Fk(macro)p Fu(.)18 b(The)12 b(binding)h(is)f(p)q(erformed)g(in)195
-1379 y Fk(map)p Fu(.)19 b(When)14 b Fk(k)o(eyseq)h Fu(is)f(in)o(v)o(ok)
+1543 y Fk(map)p Fu(.)19 b(When)14 b Fk(k)o(eyseq)h Fu(is)f(in)o(v)o(ok)
 o(ed,)g(the)g Fk(macro)i Fu(will)f(b)q(e)f(inserted)h(in)o(to)f(the)g
-(line.)21 b(This)14 b(function)195 1433 y(is)i(deprecated;)f(use)h
-Ft(rl_generic_bind\(\))d Fu(instead.)1762 1589 y(F)l(unction)-1861
-b Fi(void)20 b Fh(rl)p 241 1589 V 21 w(macro)p 417 1589
+(line.)21 b(This)14 b(function)195 1598 y(is)i(deprecated;)f(use)h
+Ft(rl_generic_bind\(\))d Fu(instead.)1762 1715 y(F)l(unction)-1861
+b Fi(void)20 b Fh(rl)p 241 1715 V 21 w(macro)p 417 1715
 V 19 w(dump)r(er)g Fg(\()p Ft(int)15 b(readable)p Fg(\))195
-1644 y Fu(Prin)o(t)f(the)f(k)o(ey)h(sequences)g(b)q(ound)h(to)e(macros)
+1770 y Fu(Prin)o(t)f(the)f(k)o(ey)h(sequences)g(b)q(ound)h(to)e(macros)
 g(and)g(their)h(v)m(alues,)h(using)f(the)g(curren)o(t)g(k)o(eymap,)195
-1699 y(to)h Ft(rl_outstream)p Fu(.)k(If)d Fk(readable)j
+1825 y(to)h Ft(rl_outstream)p Fu(.)k(If)d Fk(readable)j
 Fu(is)d(non-zero,)g(the)g(list)g(is)g(formatted)f(in)h(suc)o(h)g(a)f(w)
-o(a)o(y)g(that)g(it)195 1754 y(can)g(b)q(e)h(made)f(part)g(of)g(an)g
-Ft(inputrc)f Fu(\014le)i(and)g(re-read.)1762 1910 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1910 V 21 w(v)m(ariable)p 431
-1910 V 22 w(bind)j Fg(\()p Ft(const)14 b(char)g(*variable,)g(const)h
-(char)f(*value)p Fg(\))195 1964 y Fu(Mak)o(e)22 b(the)g(Readline)i(v)m
+o(a)o(y)g(that)g(it)195 1880 y(can)g(b)q(e)h(made)f(part)g(of)g(an)g
+Ft(inputrc)f Fu(\014le)i(and)g(re-read.)1762 1997 y(F)l(unction)-1861
+b Fi(int)20 b Fh(rl)p 215 1997 V 21 w(v)m(ariable)p 431
+1997 V 22 w(bind)j Fg(\()p Ft(const)14 b(char)g(*variable,)g(const)h
+(char)f(*value)p Fg(\))195 2052 y Fu(Mak)o(e)22 b(the)g(Readline)i(v)m
 (ariable)g Fk(v)m(ariable)j Fu(ha)o(v)o(e)22 b Fk(v)m(alue)p
 Fu(.)43 b(This)23 b(b)q(eha)o(v)o(es)g(as)f(if)h(the)f(readline)195
-2019 y(command)12 b(`)p Ft(set)j Fk(v)m(ariable)k(v)m(alue)s
+2106 y(command)12 b(`)p Ft(set)j Fk(v)m(ariable)k(v)m(alue)s
 Fu(')12 b(had)h(b)q(een)g(executed)h(in)f(an)f Ft(inputrc)g
-Fu(\014le)h(\(see)f(Section)i(1.3.1)195 2074 y([Readline)i(Init)g(File)
-h(Syn)o(tax],)d(page)h(4\).)1762 2230 y(F)l(unction)-1861
-b Fi(void)20 b Fh(rl)p 241 2230 V 21 w(v)m(ariable)p
-457 2230 V 22 w(dump)r(er)g Fg(\()p Ft(int)14 b(readable)p
-Fg(\))195 2285 y Fu(Prin)o(t)g(the)h(readline)h(v)m(ariable)f(names)g
+Fu(\014le)h(\(see)f(Section)i(1.3.1)195 2161 y([Readline)i(Init)g(File)
+h(Syn)o(tax],)d(page)h(4\).)1762 2279 y(F)l(unction)-1861
+b Fi(void)20 b Fh(rl)p 241 2279 V 21 w(v)m(ariable)p
+457 2279 V 22 w(dump)r(er)g Fg(\()p Ft(int)14 b(readable)p
+Fg(\))195 2333 y Fu(Prin)o(t)g(the)h(readline)h(v)m(ariable)f(names)g
 (and)f(their)h(curren)o(t)f(v)m(alues)i(to)d Ft(rl_outstream)p
-Fu(.)18 b(If)d Fk(read-)195 2340 y(able)20 b Fu(is)e(non-zero,)f(the)g
+Fu(.)18 b(If)d Fk(read-)195 2388 y(able)20 b Fu(is)e(non-zero,)f(the)g
 (list)h(is)g(formatted)e(in)h(suc)o(h)h(a)e(w)o(a)o(y)g(that)h(it)g
-(can)g(b)q(e)h(made)f(part)f(of)h(an)195 2394 y Ft(inputrc)d
-Fu(\014le)i(and)g(re-read.)1762 2550 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 2550 V 21 w(set)p 307 2550
-V 20 w(paren)p 469 2550 V 20 w(blink)p 613 2550 V 23
-w(timeout)i Fg(\()p Ft(int)15 b(u)p Fg(\))195 2605 y
+(can)g(b)q(e)h(made)f(part)f(of)h(an)195 2443 y Ft(inputrc)d
+Fu(\014le)i(and)g(re-read.)1762 2560 y(F)l(unction)-1861
+b Fi(int)20 b Fh(rl)p 215 2560 V 21 w(set)p 307 2560
+V 20 w(paren)p 469 2560 V 20 w(blink)p 613 2560 V 23
+w(timeout)i Fg(\()p Ft(int)15 b(u)p Fg(\))195 2615 y
 Fu(Set)e(the)f(time)h(in)o(terv)m(al)h(\(in)f(microseconds\))g(that)f
 (Readline)i(w)o(aits)e(when)h(sho)o(wing)f(a)h(balancing)195
-2660 y(c)o(haracter)h(when)i Ft(blink-matching-paren)d
+2670 y(c)o(haracter)h(when)i Ft(blink-matching-paren)d
 Fu(has)i(b)q(een)h(enabled.)p eop
 %%Page: 35 37
 35 36 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(35)75 149 y Fj(2.4.12)29 b(Alternate)21
-b(In)n(terface)137 245 y Fu(An)i(alternate)f(in)o(terface)h(is)g(a)o(v)
-m(ailable)h(to)d(plain)j Ft(readline\(\))p Fu(.)40 b(Some)22
-b(applications)i(need)g(to)75 300 y(in)o(terlea)o(v)o(e)15
-b(k)o(eyb)q(oard)f(I/O)h(with)g(\014le,)h(device,)f(or)f(windo)o(w)h
-(system)f(I/O,)h(t)o(ypically)h(b)o(y)e(using)h(a)g(main)75
-355 y(lo)q(op)f(to)g Ft(select\(\))e Fu(on)i(v)m(arious)g(\014le)h
-(descriptors.)20 b(T)l(o)14 b(accomo)q(date)f(this)h(need,)h(readline)g
-(can)f(also)g(b)q(e)75 409 y(in)o(v)o(ok)o(ed)i(as)f(a)g(`callbac)o(k')
-h(function)h(from)d(an)i(ev)o(en)o(t)f(lo)q(op.)22 b(There)16
-b(are)f(functions)h(a)o(v)m(ailable)i(to)c(mak)o(e)75
-464 y(this)i(easy)l(.)1762 577 y(F)l(unction)-1861 b
-Fi(void)20 b Fh(rl)p 241 577 18 3 v 21 w(callbac)n(k)p
-458 577 V 23 w(handler)p 670 577 V 21 w(install)25 b
-Fg(\()p Ft(const)14 b(char)h(*prompt,)283 632 y(rl_vcpfunc_t)e
-(*lhandler)p Fg(\))195 687 y Fu(Set)f(up)h(the)g(terminal)g(for)f
-(readline)i(I/O)f(and)f(displa)o(y)i(the)e(initial)j(expanded)e(v)m
-(alue)h(of)e Fk(prompt)p Fu(.)195 742 y(Sa)o(v)o(e)j(the)h(v)m(alue)h
-(of)f Fk(lhandler)21 b Fu(to)15 b(use)h(as)f(a)h(function)h(to)e(call)i
-(when)f(a)g(complete)g(line)i(of)d(input)195 797 y(has)g(b)q(een)h(en)o
-(tered.)21 b(The)15 b(function)h(tak)o(es)e(the)i(text)e(of)h(the)g
-(line)i(as)e(an)g(argumen)o(t.)1762 910 y(F)l(unction)-1861
-b Fi(void)20 b Fh(rl)p 241 910 V 21 w(callbac)n(k)p 458
-910 V 23 w(read)p 591 910 V 20 w(c)n(har)j Fg(\()p Ft(void)p
-Fg(\))195 965 y Fu(Whenev)o(er)17 b(an)g(application)h(determines)g
+(Readline)843 b(35)1762 149 y(F)l(unction)-1861 b Fi(char)20
+b(*)f Fh(rl)p 286 149 18 3 v 21 w(get)p 384 149 V 21
+w(termcap)j Fg(\()p Ft(const)14 b(char)g(*cap)p Fg(\))195
+204 y Fu(Retriev)o(e)f(the)h(string)f(v)m(alue)i(of)e(the)h(termcap)f
+(capabilit)o(y)i Fk(cap)p Fu(.)k(Readline)c(fetc)o(hes)f(the)f(termcap)
+195 259 y(en)o(try)j(for)h(the)f(curren)o(t)h(terminal)h(name)e(and)h
+(uses)g(those)g(capabilities)i(to)d(mo)o(v)o(e)g(around)h(the)195
+314 y(screen)11 b(line)h(and)f(p)q(erform)f(other)g(terminal-sp)q
+(eci\014c)k(op)q(erations,)d(lik)o(e)h(erasing)e(a)h(line.)20
+b(Readline)195 369 y(do)q(es)e(not)f(use)h(all)g(of)f(a)g(terminal's)h
+(capabilities,)i(and)e(this)g(function)g(will)h(return)f(v)m(alues)h
+(for)195 423 y(only)d(those)f(capabilities)i(Readline)g(uses.)75
+537 y Fj(2.4.12)29 b(Alternate)21 b(In)n(terface)137
+634 y Fu(An)i(alternate)f(in)o(terface)h(is)g(a)o(v)m(ailable)h(to)d
+(plain)j Ft(readline\(\))p Fu(.)40 b(Some)22 b(applications)i(need)g
+(to)75 689 y(in)o(terlea)o(v)o(e)15 b(k)o(eyb)q(oard)f(I/O)h(with)g
+(\014le,)h(device,)f(or)f(windo)o(w)h(system)f(I/O,)h(t)o(ypically)h(b)
+o(y)e(using)h(a)g(main)75 744 y(lo)q(op)f(to)g Ft(select\(\))e
+Fu(on)i(v)m(arious)g(\014le)h(descriptors.)20 b(T)l(o)14
+b(accomo)q(date)f(this)h(need,)h(readline)g(can)f(also)g(b)q(e)75
+799 y(in)o(v)o(ok)o(ed)i(as)f(a)g(`callbac)o(k')h(function)h(from)d(an)
+i(ev)o(en)o(t)f(lo)q(op.)22 b(There)16 b(are)f(functions)h(a)o(v)m
+(ailable)i(to)c(mak)o(e)75 853 y(this)i(easy)l(.)1762
+973 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241 973
+V 21 w(callbac)n(k)p 458 973 V 23 w(handler)p 670 973
+V 21 w(install)25 b Fg(\()p Ft(const)14 b(char)h(*prompt,)283
+1028 y(rl_vcpfunc_t)e(*lhandler)p Fg(\))195 1082 y Fu(Set)f(up)h(the)g
+(terminal)g(for)f(readline)i(I/O)f(and)f(displa)o(y)i(the)e(initial)j
+(expanded)e(v)m(alue)h(of)e Fk(prompt)p Fu(.)195 1137
+y(Sa)o(v)o(e)j(the)h(v)m(alue)h(of)f Fk(lhandler)21 b
+Fu(to)15 b(use)h(as)f(a)h(function)h(to)e(call)i(when)f(a)g(complete)g
+(line)i(of)d(input)195 1192 y(has)g(b)q(een)h(en)o(tered.)21
+b(The)15 b(function)h(tak)o(es)e(the)i(text)e(of)h(the)g(line)i(as)e
+(an)g(argumen)o(t.)1762 1312 y(F)l(unction)-1861 b Fi(void)20
+b Fh(rl)p 241 1312 V 21 w(callbac)n(k)p 458 1312 V 23
+w(read)p 591 1312 V 20 w(c)n(har)j Fg(\()p Ft(void)p
+Fg(\))195 1366 y Fu(Whenev)o(er)17 b(an)g(application)h(determines)g
 (that)e(k)o(eyb)q(oard)h(input)h(is)f(a)o(v)m(ailable,)i(it)e(should)h
-(call)195 1019 y Ft(rl_callback_read_char\(\))p Fu(,)8
+(call)195 1421 y Ft(rl_callback_read_char\(\))p Fu(,)8
 b(whic)o(h)k(will)g(read)f(the)g(next)g(c)o(haracter)f(from)g(the)h
-(curren)o(t)g(input)195 1074 y(source.)20 b(If)14 b(that)f(c)o
+(curren)o(t)g(input)195 1476 y(source.)20 b(If)14 b(that)f(c)o
 (haracter)g(completes)i(the)f(line,)h Ft(rl_callback_read_char)c
-Fu(will)16 b(in)o(v)o(ok)o(e)e(the)195 1129 y Fk(lhandler)21
+Fu(will)16 b(in)o(v)o(ok)o(e)e(the)195 1531 y Fk(lhandler)21
 b Fu(function)c(sa)o(v)o(ed)e(b)o(y)h Ft(rl_callback_handler_install)d
-Fu(to)i(pro)q(cess)h(the)g(line.)24 b Ft(EOF)195 1184
+Fu(to)i(pro)q(cess)h(the)g(line.)24 b Ft(EOF)195 1585
 y Fu(is)16 b(indicated)h(b)o(y)e(calling)i Fk(lhandler)j
-Fu(with)15 b(a)g Ft(NULL)g Fu(line.)1762 1297 y(F)l(unction)-1861
-b Fi(void)20 b Fh(rl)p 241 1297 V 21 w(callbac)n(k)p
-458 1297 V 23 w(handler)p 670 1297 V 21 w(remo)n(v)n(e)i
-Fg(\()p Ft(void)p Fg(\))195 1352 y Fu(Restore)c(the)g(terminal)i(to)d
+Fu(with)15 b(a)g Ft(NULL)g Fu(line.)1762 1705 y(F)l(unction)-1861
+b Fi(void)20 b Fh(rl)p 241 1705 V 21 w(callbac)n(k)p
+458 1705 V 23 w(handler)p 670 1705 V 21 w(remo)n(v)n(e)i
+Fg(\()p Ft(void)p Fg(\))195 1760 y Fu(Restore)c(the)g(terminal)i(to)d
 (its)i(initial)i(state)d(and)g(remo)o(v)o(e)g(the)h(line)h(handler.)31
-b(This)19 b(ma)o(y)f(b)q(e)195 1407 y(called)f(from)d(within)j(a)e
+b(This)19 b(ma)o(y)f(b)q(e)195 1815 y(called)f(from)d(within)j(a)e
 (callbac)o(k)h(as)f(w)o(ell)h(as)f(indep)q(enden)o(tly)l(.)75
-1516 y Fj(2.4.13)29 b(A)21 b(Readline)g(Example)137 1612
+1928 y Fj(2.4.13)29 b(A)21 b(Readline)g(Example)137 2025
 y Fu(Here)f(is)g(a)f(function)i(whic)o(h)f(c)o(hanges)f(lo)o(w)o
 (ercase)h(c)o(haracters)e(to)h(their)h(upp)q(ercase)h(equiv)m(alen)o
-(ts,)75 1667 y(and)e(upp)q(ercase)i(c)o(haracters)d(to)h(lo)o(w)o
+(ts,)75 2080 y(and)e(upp)q(ercase)i(c)o(haracters)d(to)h(lo)o(w)o
 (ercase.)31 b(If)20 b(this)f(function)h(w)o(as)f(b)q(ound)h(to)f(`)p
-Ft(M-c)p Fu(',)f(then)i(t)o(yping)75 1721 y(`)p Ft(M-c)p
+Ft(M-c)p Fu(',)f(then)i(t)o(yping)75 2135 y(`)p Ft(M-c)p
 Fu(')12 b(w)o(ould)h(c)o(hange)h(the)f(case)g(of)g(the)g(c)o(haracter)g
 (under)g(p)q(oin)o(t.)20 b(T)o(yping)14 b(`)p Ft(M-1)g(0)h(M-c)p
-Fu(')d(w)o(ould)i(c)o(hange)75 1776 y(the)h(case)g(of)g(the)h(follo)o
+Fu(')d(w)o(ould)i(c)o(hange)75 2190 y(the)h(case)g(of)g(the)h(follo)o
 (wing)f(10)g(c)o(haracters,)f(lea)o(ving)i(the)f(cursor)g(on)g(the)h
-(last)f(c)o(haracter)f(c)o(hanged.)195 1840 y Ft(/*)24
+(last)f(c)o(haracter)f(c)o(hanged.)195 2255 y Ft(/*)24
 b(Invert)f(the)g(case)g(of)h(the)f(COUNT)h(following)e(characters.)h
-(*/)195 1892 y(int)195 1944 y(invert_case_line)f(\(count,)h(key\))314
-1995 y(int)h(count,)f(key;)195 2047 y({)243 2099 y(register)f(int)i
-(start,)f(end,)g(i;)243 2203 y(start)g(=)h(rl_point;)243
-2307 y(if)f(\(rl_point)g(>=)h(rl_end\))290 2359 y(return)f(\(0\);)243
-2462 y(if)g(\(count)g(<)h(0\))290 2514 y({)338 2566 y(direction)f(=)h
-(-1;)338 2618 y(count)f(=)h(-count;)290 2670 y(})p eop
+(*/)195 2307 y(int)195 2359 y(invert_case_line)f(\(count,)h(key\))314
+2411 y(int)h(count,)f(key;)195 2462 y({)243 2514 y(register)f(int)i
+(start,)f(end,)g(i;)243 2618 y(start)g(=)h(rl_point;)p
+eop
 %%Page: 36 38
 36 37 bop 75 -58 a Fu(36)1299 b(GNU)15 b(Readline)h(Library)243
-149 y Ft(else)290 201 y(direction)23 b(=)h(1;)243 305
-y(/*)f(Find)h(the)f(end)h(of)f(the)h(range)f(to)g(modify.)g(*/)243
-357 y(end)g(=)h(start)f(+)h(\(count)f(*)h(direction\);)243
-461 y(/*)f(Force)g(it)h(to)g(be)f(within)g(range.)g(*/)243
-513 y(if)g(\(end)h(>)f(rl_end\))290 565 y(end)h(=)g(rl_end;)243
-616 y(else)f(if)h(\(end)f(<)h(0\))290 668 y(end)g(=)g(0;)243
-772 y(if)f(\(start)g(==)h(end\))290 824 y(return)f(\(0\);)243
-928 y(if)g(\(start)g(>)h(end\))290 980 y({)338 1032 y(int)g(temp)f(=)h
-(start;)338 1083 y(start)f(=)h(end;)338 1135 y(end)g(=)f(temp;)290
-1187 y(})243 1291 y(/*)g(Tell)h(readline)e(that)i(we)f(are)h(modifying)
-e(the)i(line,)f(so)h(it)f(will)h(save)314 1343 y(the)g(undo)f
-(information.)f(*/)243 1395 y(rl_modifying)g(\(start,)h(end\);)243
-1499 y(for)g(\(i)h(=)f(start;)h(i)f(!=)h(end;)f(i++\))290
-1550 y({)338 1602 y(if)h(\(_rl_uppercase_p)d(\(rl_line_buffer[i]\)\))
-386 1654 y(rl_line_buffer[i])g(=)j(_rl_to_lower)e
-(\(rl_line_buffer[i]\);)338 1706 y(else)h(if)h(\(_rl_lowercase_p)e
-(\(rl_line_buffer[i]\)\))386 1758 y(rl_line_buffer[i])f(=)j
-(_rl_to_upper)e(\(rl_line_buffer[i]\);)290 1810 y(})243
-1862 y(/*)h(Move)h(point)f(to)g(on)h(top)f(of)h(the)f(last)h(character)
-e(changed.)h(*/)243 1914 y(rl_point)f(=)i(\(direction)f(==)g(1\))h(?)g
-(end)f(-)h(1)g(:)f(start;)243 1966 y(return)g(\(0\);)195
-2017 y(})75 2217 y Fs(2.5)33 b(Readline)23 b(Signal)h(Handling)137
-2341 y Fu(Signals)e(are)f(async)o(hronous)f(ev)o(en)o(ts)h(sen)o(t)f
-(to)h(a)f(pro)q(cess)h(b)o(y)g(the)g(Unix)h(k)o(ernel,)g(sometimes)f
-(on)75 2396 y(b)q(ehalf)g(of)e(another)h(pro)q(cess.)34
+149 y Ft(if)23 b(\(rl_point)g(>=)h(rl_end\))290 201 y(return)f(\(0\);)
+243 305 y(if)g(\(count)g(<)h(0\))290 357 y({)338 409
+y(direction)f(=)h(-1;)338 461 y(count)f(=)h(-count;)290
+513 y(})243 565 y(else)290 616 y(direction)f(=)h(1;)243
+720 y(/*)f(Find)h(the)f(end)h(of)f(the)h(range)f(to)g(modify.)g(*/)243
+772 y(end)g(=)h(start)f(+)h(\(count)f(*)h(direction\);)243
+876 y(/*)f(Force)g(it)h(to)g(be)f(within)g(range.)g(*/)243
+928 y(if)g(\(end)h(>)f(rl_end\))290 980 y(end)h(=)g(rl_end;)243
+1032 y(else)f(if)h(\(end)f(<)h(0\))290 1083 y(end)g(=)g(0;)243
+1187 y(if)f(\(start)g(==)h(end\))290 1239 y(return)f(\(0\);)243
+1343 y(if)g(\(start)g(>)h(end\))290 1395 y({)338 1447
+y(int)g(temp)f(=)h(start;)338 1499 y(start)f(=)h(end;)338
+1550 y(end)g(=)f(temp;)290 1602 y(})243 1706 y(/*)g(Tell)h(readline)e
+(that)i(we)f(are)h(modifying)e(the)i(line,)f(so)h(it)f(will)h(save)314
+1758 y(the)g(undo)f(information.)f(*/)243 1810 y(rl_modifying)g
+(\(start,)h(end\);)243 1914 y(for)g(\(i)h(=)f(start;)h(i)f(!=)h(end;)f
+(i++\))290 1966 y({)338 2017 y(if)h(\(_rl_uppercase_p)d
+(\(rl_line_buffer[i]\)\))386 2069 y(rl_line_buffer[i])g(=)j
+(_rl_to_lower)e(\(rl_line_buffer[i]\);)338 2121 y(else)h(if)h
+(\(_rl_lowercase_p)e(\(rl_line_buffer[i]\)\))386 2173
+y(rl_line_buffer[i])f(=)j(_rl_to_upper)e(\(rl_line_buffer[i]\);)290
+2225 y(})243 2277 y(/*)h(Move)h(point)f(to)g(on)h(top)f(of)h(the)f
+(last)h(character)e(changed.)h(*/)243 2329 y(rl_point)f(=)i
+(\(direction)f(==)g(1\))h(?)g(end)f(-)h(1)g(:)f(start;)243
+2381 y(return)g(\(0\);)195 2433 y(})p eop
+%%Page: 37 39
+37 38 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)843 b(37)75 149 y Fs(2.5)33 b(Readline)23 b(Signal)h
+(Handling)137 253 y Fu(Signals)e(are)f(async)o(hronous)f(ev)o(en)o(ts)h
+(sen)o(t)f(to)h(a)f(pro)q(cess)h(b)o(y)g(the)g(Unix)h(k)o(ernel,)g
+(sometimes)f(on)75 308 y(b)q(ehalf)g(of)e(another)h(pro)q(cess.)34
 b(They)20 b(are)g(in)o(tended)h(to)e(indicate)j(exceptional)f(ev)o(en)o
-(ts,)f(lik)o(e)h(a)f(user)75 2451 y(pressing)c(the)f(in)o(terrupt)g(k)o
+(ts,)f(lik)o(e)h(a)f(user)75 362 y(pressing)c(the)f(in)o(terrupt)g(k)o
 (ey)g(on)g(his)h(terminal,)f(or)g(a)f(net)o(w)o(ork)g(connection)i(b)q
-(eing)g(brok)o(en.)k(There)15 b(is)75 2506 y(a)e(class)g(of)g(signals)h
+(eing)g(brok)o(en.)k(There)15 b(is)75 417 y(a)e(class)g(of)g(signals)h
 (that)f(can)g(b)q(e)h(sen)o(t)f(to)f(the)i(pro)q(cess)f(curren)o(tly)h
-(reading)f(input)i(from)d(the)h(k)o(eyb)q(oard.)75 2560
+(reading)f(input)i(from)d(the)h(k)o(eyb)q(oard.)75 472
 y(Since)i(Readline)f(c)o(hanges)g(the)f(terminal)h(attributes)f(when)h
 (it)g(is)g(called,)h(it)e(needs)h(to)f(p)q(erform)g(sp)q(ecial)75
-2615 y(pro)q(cessing)i(when)f(suc)o(h)g(a)g(signal)g(is)g(receiv)o(ed)h
+527 y(pro)q(cessing)i(when)f(suc)o(h)g(a)g(signal)g(is)g(receiv)o(ed)h
 (in)g(order)f(to)f(restore)g(the)h(terminal)g(to)f(a)h(sane)g(state,)e
-(or)75 2670 y(pro)o(vide)k(application)h(writers)e(with)g(functions)h
-(to)f(do)g(so)g(man)o(ually)l(.)p eop
-%%Page: 37 39
-37 38 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(37)137 149 y(Readline)22 b(con)o(tains)e(an)g(in)o
-(ternal)h(signal)g(handler)g(that)f(is)h(installed)h(for)d(a)h(n)o(um)o
-(b)q(er)g(of)g(signals)75 204 y(\()p Ft(SIGINT)p Fu(,)h
-Ft(SIGQUIT)p Fu(,)g Ft(SIGTERM)p Fu(,)g Ft(SIGALRM)p
-Fu(,)g Ft(SIGTSTP)p Fu(,)g Ft(SIGTTIN)p Fu(,)h(and)f
-Ft(SIGTTOU)p Fu(\).)36 b(When)21 b(one)g(of)75 259 y(these)16
-b(signals)h(is)f(receiv)o(ed,)h(the)f(signal)h(handler)f(will)i(reset)e
-(the)g(terminal)g(attributes)g(to)f(those)h(that)75 314
-y(w)o(ere)d(in)i(e\013ect)e(b)q(efore)h Ft(readline\(\))e
+(or)75 582 y(pro)o(vide)k(application)h(writers)e(with)g(functions)h
+(to)f(do)g(so)g(man)o(ually)l(.)137 656 y(Readline)22
+b(con)o(tains)e(an)g(in)o(ternal)h(signal)g(handler)g(that)f(is)h
+(installed)h(for)d(a)h(n)o(um)o(b)q(er)g(of)g(signals)75
+711 y(\()p Ft(SIGINT)p Fu(,)h Ft(SIGQUIT)p Fu(,)g Ft(SIGTERM)p
+Fu(,)g Ft(SIGALRM)p Fu(,)g Ft(SIGTSTP)p Fu(,)g Ft(SIGTTIN)p
+Fu(,)h(and)f Ft(SIGTTOU)p Fu(\).)36 b(When)21 b(one)g(of)75
+766 y(these)16 b(signals)h(is)f(receiv)o(ed,)h(the)f(signal)h(handler)f
+(will)i(reset)e(the)g(terminal)g(attributes)g(to)f(those)h(that)75
+820 y(w)o(ere)d(in)i(e\013ect)e(b)q(efore)h Ft(readline\(\))e
 Fu(w)o(as)h(called,)i(reset)f(the)f(signal)i(handling)g(to)e(what)g(it)
-h(w)o(as)f(b)q(efore)75 369 y Ft(readline\(\))21 b Fu(w)o(as)h(called,)
+h(w)o(as)f(b)q(efore)75 875 y Ft(readline\(\))21 b Fu(w)o(as)h(called,)
 j(and)e(resend)g(the)g(signal)g(to)f(the)h(calling)h(application.)44
-b(If)23 b(and)f(when)75 423 y(the)17 b(calling)i(application's)f
+b(If)23 b(and)f(when)75 930 y(the)17 b(calling)i(application's)f
 (signal)g(handler)g(returns,)f(Readline)h(will)h(reinitialize)h(the)d
-(terminal)h(and)75 478 y(con)o(tin)o(ue)d(to)e(accept)i(input.)20
+(terminal)h(and)75 985 y(con)o(tin)o(ue)d(to)e(accept)i(input.)20
 b(When)15 b(a)e Ft(SIGINT)h Fu(is)g(receiv)o(ed,)h(the)g(Readline)g
-(signal)g(handler)g(p)q(erforms)75 533 y(some)k(additional)i(w)o(ork,)e
-(whic)o(h)h(will)h(cause)f(an)o(y)f(partially-en)o(tered)i(line)g(to)d
-(b)q(e)i(ab)q(orted)g(\(see)f(the)75 588 y(description)e(of)d
-Ft(rl_free_line_state\(\))f Fu(b)q(elo)o(w\).)137 655
+(signal)g(handler)g(p)q(erforms)75 1040 y(some)k(additional)i(w)o(ork,)
+e(whic)o(h)h(will)h(cause)f(an)o(y)f(partially-en)o(tered)i(line)g(to)d
+(b)q(e)i(ab)q(orted)g(\(see)f(the)75 1094 y(description)e(of)d
+Ft(rl_free_line_state\(\))f Fu(b)q(elo)o(w\).)137 1169
 y(There)g(is)f(an)g(additional)i(Readline)g(signal)f(handler,)g(for)f
 Ft(SIGWINCH)p Fu(,)f(whic)o(h)i(the)f(k)o(ernel)h(sends)g(to)e(a)75
-710 y(pro)q(cess)k(whenev)o(er)g(the)f(terminal's)h(size)g(c)o(hanges)f
-(\(for)g(example,)h(if)g(a)f(user)h(resizes)g(an)f Ft(xterm)p
-Fu(\).)19 b(The)75 764 y(Readline)g Ft(SIGWINCH)e Fu(handler)i(up)q
+1224 y(pro)q(cess)k(whenev)o(er)g(the)f(terminal's)h(size)g(c)o(hanges)
+f(\(for)g(example,)h(if)g(a)f(user)h(resizes)g(an)f Ft(xterm)p
+Fu(\).)19 b(The)75 1278 y(Readline)g Ft(SIGWINCH)e Fu(handler)i(up)q
 (dates)f(Readline's)h(in)o(ternal)f(screen)h(size)f(information,)h(and)
-f(then)75 819 y(calls)g(an)o(y)f Ft(SIGWINCH)e Fu(signal)j(handler)g
+f(then)75 1333 y(calls)g(an)o(y)f Ft(SIGWINCH)e Fu(signal)j(handler)g
 (the)f(calling)i(application)f(has)f(installed.)27 b(Readline)18
-b(calls)g(the)75 874 y(application's)h Ft(SIGWINCH)d
+b(calls)g(the)75 1388 y(application's)h Ft(SIGWINCH)d
 Fu(signal)j(handler)f(without)g(resetting)g(the)f(terminal)i(to)e(its)g
-(original)i(state.)75 929 y(If)d(the)g(application's)h(signal)g
+(original)i(state.)75 1443 y(If)d(the)g(application's)h(signal)g
 (handler)g(do)q(es)g(more)e(than)h(up)q(date)h(its)f(idea)h(of)e(the)h
-(terminal)h(size)g(and)75 984 y(return)e(\(for)f(example,)h(a)f
+(terminal)h(size)g(and)75 1498 y(return)e(\(for)f(example,)h(a)f
 Ft(longjmp)g Fu(bac)o(k)h(to)f(a)h(main)g(pro)q(cessing)g(lo)q(op\),)g
-(it)g Fl(must)20 b Fu(call)c Ft(rl_cleanup_)75 1038 y(after_signal\(\))
+(it)g Fl(must)20 b Fu(call)c Ft(rl_cleanup_)75 1552 y(after_signal\(\))
 d Fu(\(describ)q(ed)k(b)q(elo)o(w\),)e(to)g(restore)f(the)h(terminal)h
-(state.)137 1105 y(Readline)g(pro)o(vides)f(t)o(w)o(o)e(v)m(ariables)i
+(state.)137 1627 y(Readline)g(pro)o(vides)f(t)o(w)o(o)e(v)m(ariables)i
 (that)f(allo)o(w)g(application)i(writers)e(to)g(con)o(trol)g(whether)h
-(or)e(not)75 1160 y(it)k(will)h(catc)o(h)e(certain)h(signals)h(and)f
+(or)e(not)75 1681 y(it)k(will)h(catc)o(h)e(certain)h(signals)h(and)f
 (act)f(on)g(them)h(when)g(they)f(are)h(receiv)o(ed.)25
-b(It)16 b(is)i(imp)q(ortan)o(t)e(that)75 1215 y(applications)k(c)o
+b(It)16 b(is)i(imp)q(ortan)o(t)e(that)75 1736 y(applications)k(c)o
 (hange)e(the)h(v)m(alues)g(of)f(these)h(v)m(ariables)g(only)g(when)g
-(calling)h Ft(readline\(\))p Fu(,)d(not)h(in)h(a)75 1270
+(calling)h Ft(readline\(\))p Fu(,)d(not)h(in)h(a)75 1791
 y(signal)d(handler,)g(so)f(Readline's)h(in)o(ternal)g(signal)g(state)e
-(is)i(not)f(corrupted.)1773 1385 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 1385 18 3 v 21 w(catc)n(h)p
-366 1385 V 22 w(signals)195 1440 y Fu(If)15 b(this)g(v)m(ariable)g(is)g
+(is)i(not)f(corrupted.)1773 1930 y(V)l(ariable)-1861
+b Fi(int)20 b Fh(rl)p 215 1930 18 3 v 21 w(catc)n(h)p
+366 1930 V 22 w(signals)195 1984 y Fu(If)15 b(this)g(v)m(ariable)g(is)g
 (non-zero,)g(Readline)h(will)g(install)f(signal)h(handlers)f(for)f
-Ft(SIGINT)p Fu(,)f Ft(SIGQUIT)p Fu(,)195 1495 y Ft(SIGTERM)p
+Ft(SIGINT)p Fu(,)f Ft(SIGQUIT)p Fu(,)195 2039 y Ft(SIGTERM)p
 Fu(,)h Ft(SIGALRM)p Fu(,)g Ft(SIGTSTP)p Fu(,)f Ft(SIGTTIN)p
-Fu(,)h(and)i Ft(SIGTTOU)p Fu(.)195 1562 y(The)f(default)h(v)m(alue)h
-(of)d Ft(rl_catch_signals)f Fu(is)j(1.)1773 1678 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 1678 V 21 w(catc)n(h)p 366
-1678 V 22 w(sigwinc)n(h)195 1732 y Fu(If)15 b(this)h(v)m(ariable)h(is)e
+Fu(,)h(and)i Ft(SIGTTOU)p Fu(.)195 2113 y(The)f(default)h(v)m(alue)h
+(of)d Ft(rl_catch_signals)f Fu(is)j(1.)1773 2252 y(V)l(ariable)-1861
+b Fi(int)20 b Fh(rl)p 215 2252 V 21 w(catc)n(h)p 366
+2252 V 22 w(sigwinc)n(h)195 2307 y Fu(If)15 b(this)h(v)m(ariable)h(is)e
 (non-zero,)g(Readline)i(will)g(install)f(a)f(signal)h(handler)h(for)d
-Ft(SIGWINCH)p Fu(.)195 1799 y(The)h(default)h(v)m(alue)h(of)d
-Ft(rl_catch_sigwinch)f Fu(is)j(1.)137 1891 y(If)g(an)f(application)j
+Ft(SIGWINCH)p Fu(.)195 2381 y(The)h(default)h(v)m(alue)h(of)d
+Ft(rl_catch_sigwinch)f Fu(is)j(1.)137 2487 y(If)g(an)f(application)j
 (do)q(es)d(not)g(wish)i(to)d(ha)o(v)o(e)h(Readline)i(catc)o(h)f(an)o(y)
-f(signals,)h(or)f(to)f(handle)j(signals)75 1945 y(other)i(than)g(those)
+f(signals,)h(or)f(to)f(handle)j(signals)75 2542 y(other)i(than)g(those)
 g(Readline)i(catc)o(hes)e(\()p Ft(SIGHUP)p Fu(,)g(for)g(example\),)h
-(Readline)h(pro)o(vides)e(con)o(v)o(enience)75 2000 y(functions)d(to)f
+(Readline)h(pro)o(vides)e(con)o(v)o(enience)75 2597 y(functions)d(to)f
 (do)g(the)g(necessary)g(terminal)h(and)g(in)o(ternal)g(state)e(clean)o
-(up)i(up)q(on)g(receipt)g(of)f(a)g(signal.)1762 2116
-y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241 2116 V
-21 w(clean)n(up)p 450 2116 V 22 w(after)p 590 2116 V
-20 w(signal)j Fg(\()p Ft(void)p Fg(\))195 2171 y Fu(This)18
+(up)i(up)q(on)g(receipt)g(of)f(a)g(signal.)p eop
+%%Page: 38 40
+38 39 bop 75 -58 a Fu(38)1299 b(GNU)15 b(Readline)h(Library)1762
+149 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241 149
+18 3 v 21 w(clean)n(up)p 450 149 V 22 w(after)p 590 149
+V 20 w(signal)j Fg(\()p Ft(void)p Fg(\))195 204 y Fu(This)18
 b(function)f(will)i(reset)e(the)g(state)f(of)g(the)h(terminal)h(to)e
 (what)h(it)g(w)o(as)f(b)q(efore)h Ft(readline\(\))195
-2226 y Fu(w)o(as)d(called,)i(and)f(remo)o(v)o(e)f(the)g(Readline)i
+259 y Fu(w)o(as)d(called,)i(and)f(remo)o(v)o(e)f(the)g(Readline)i
 (signal)g(handlers)g(for)e(all)h(signals,)g(dep)q(ending)i(on)e(the)195
-2280 y(v)m(alues)h(of)f Ft(rl_catch_signals)e Fu(and)i
-Ft(rl_catch_sigwinch)p Fu(.)1762 2396 y(F)l(unction)-1861
-b Fi(void)20 b Fh(rl)p 241 2396 V 21 w(free)p 356 2396
-V 20 w(line)p 464 2396 V 23 w(state)j Fg(\()p Ft(void)p
-Fg(\))195 2451 y Fu(This)d(will)h(free)f(an)o(y)f(partial)h(state)f
+314 y(v)m(alues)h(of)f Ft(rl_catch_signals)e Fu(and)i
+Ft(rl_catch_sigwinch)p Fu(.)1762 460 y(F)l(unction)-1861
+b Fi(void)20 b Fh(rl)p 241 460 V 21 w(free)p 356 460
+V 20 w(line)p 464 460 V 23 w(state)j Fg(\()p Ft(void)p
+Fg(\))195 515 y Fu(This)d(will)h(free)f(an)o(y)f(partial)h(state)f
 (asso)q(ciated)h(with)g(the)g(curren)o(t)f(input)i(line)g(\(undo)f
-(infor-)195 2506 y(mation,)i(an)o(y)f(partial)h(history)f(en)o(try)l(,)
-h(an)o(y)f(partially-en)o(tered)i(k)o(eyb)q(oard)e(macro,)h(and)f(an)o
-(y)195 2560 y(partially-en)o(tered)k(n)o(umeric)g(argumen)o(t\).)45
+(infor-)195 570 y(mation,)i(an)o(y)f(partial)h(history)f(en)o(try)l(,)h
+(an)o(y)f(partially-en)o(tered)i(k)o(eyb)q(oard)e(macro,)h(and)f(an)o
+(y)195 625 y(partially-en)o(tered)k(n)o(umeric)g(argumen)o(t\).)45
 b(This)24 b(should)h(b)q(e)g(called)g(b)q(efore)g Ft(rl_cleanup_)195
-2615 y(after_signal\(\))p Fu(.)36 b(The)22 b(Readline)h(signal)f
+679 y(after_signal\(\))p Fu(.)36 b(The)22 b(Readline)h(signal)f
 (handler)g(for)f Ft(SIGINT)f Fu(calls)j(this)e(to)g(ab)q(ort)g(the)195
-2670 y(curren)o(t)15 b(input)h(line.)p eop
-%%Page: 38 40
-38 39 bop 75 -58 a Fu(38)1299 b(GNU)15 b(Readline)h(Library)1762
-149 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241 149
-18 3 v 21 w(reset)p 383 149 V 20 w(after)p 521 149 V
-21 w(signal)j Fg(\()p Ft(void)p Fg(\))195 204 y Fu(This)15
-b(will)h(reinitialize)h(the)d(terminal)h(and)g(reinstall)h(an)o(y)d
-(Readline)j(signal)f(handlers,)g(dep)q(end-)195 259 y(ing)h(on)f(the)g
-(v)m(alues)i(of)d Ft(rl_catch_signals)f Fu(and)j Ft(rl_catch_sigwinch)p
-Fu(.)137 352 y(If)k(an)g(application)h(do)q(es)f(not)g(wish)g(Readline)
-h(to)e(catc)o(h)g Ft(SIGWINCH)p Fu(,)h(it)g(ma)o(y)f(call)h
-Ft(rl_resize_)75 407 y(terminal\(\))12 b Fu(or)h Ft
-(rl_set_screen_size\(\))e Fu(to)i(force)g(Readline)i(to)e(up)q(date)h
-(its)g(idea)g(of)g(the)f(terminal)75 461 y(size)j(when)g(a)f
-Ft(SIGWINCH)f Fu(is)h(receiv)o(ed.)1762 579 y(F)l(unction)-1861
-b Fi(void)20 b Fh(rl)p 241 579 V 21 w(resize)p 401 579
-V 22 w(terminal)j Fg(\()p Ft(void)p Fg(\))195 634 y Fu(Up)q(date)16
-b(Readline's)g(in)o(ternal)g(screen)f(size)i(b)o(y)e(reading)g(v)m
-(alues)i(from)d(the)i(k)o(ernel.)1762 752 y(F)l(unction)-1861
-b Fi(void)20 b Fh(rl)p 241 752 V 21 w(set)p 333 752 V
-21 w(screen)p 510 752 V 20 w(size)k Fg(\()p Ft(int)15
-b(rows,)f(int)h(cols)p Fg(\))195 807 y Fu(Set)g(Readline's)h(idea)g(of)
-f(the)g(terminal)h(size)g(to)f Fk(ro)o(ws)h Fu(ro)o(ws)e(and)i
-Fk(cols)h Fu(columns.)137 899 y(If)g(an)g(application)h(do)q(es)f(not)f
-(w)o(an)o(t)g(to)g(install)i(a)f Ft(SIGWINCH)e Fu(handler,)j(but)f(is)g
-(still)h(in)o(terested)f(in)75 954 y(the)e(screen)h(dimensions,)g
-(Readline's)h(idea)e(of)g(the)h(screen)f(size)h(ma)o(y)f(b)q(e)h
-(queried.)1762 1072 y(F)l(unction)-1861 b Fi(void)20
-b Fh(rl)p 241 1072 V 21 w(get)p 339 1072 V 21 w(screen)p
-516 1072 V 20 w(size)k Fg(\()p Ft(int)15 b(*rows,)f(int)h(*cols)p
-Fg(\))195 1127 y Fu(Return)g(Readline's)h(idea)f(of)g(the)g(terminal's)
-g(size)h(in)g(the)f(v)m(ariables)i(p)q(oin)o(ted)f(to)e(b)o(y)h(the)g
-(argu-)195 1181 y(men)o(ts.)137 1274 y(The)h(follo)o(wing)g(functions)g
-(install)g(and)g(remo)o(v)o(e)e(Readline's)i(signal)g(handlers.)1762
-1392 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 1392
-V 21 w(set)p 307 1392 V 20 w(signals)j Fg(\()p Ft(void)p
-Fg(\))195 1447 y Fu(Install)c(Readline's)f(signal)h(handler)f(for)f
+734 y(curren)o(t)15 b(input)h(line.)1762 881 y(F)l(unction)-1861
+b Fi(void)20 b Fh(rl)p 241 881 V 21 w(reset)p 383 881
+V 20 w(after)p 521 881 V 21 w(signal)j Fg(\()p Ft(void)p
+Fg(\))195 935 y Fu(This)15 b(will)h(reinitialize)h(the)d(terminal)h
+(and)g(reinstall)h(an)o(y)d(Readline)j(signal)f(handlers,)g(dep)q(end-)
+195 990 y(ing)h(on)f(the)g(v)m(alues)i(of)d Ft(rl_catch_signals)f
+Fu(and)j Ft(rl_catch_sigwinch)p Fu(.)137 1102 y(If)k(an)g(application)h
+(do)q(es)f(not)g(wish)g(Readline)h(to)e(catc)o(h)g Ft(SIGWINCH)p
+Fu(,)h(it)g(ma)o(y)f(call)h Ft(rl_resize_)75 1157 y(terminal\(\))12
+b Fu(or)h Ft(rl_set_screen_size\(\))e Fu(to)i(force)g(Readline)i(to)e
+(up)q(date)h(its)g(idea)g(of)g(the)f(terminal)75 1211
+y(size)j(when)g(a)f Ft(SIGWINCH)f Fu(is)h(receiv)o(ed.)1762
+1358 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241 1358
+V 21 w(resize)p 401 1358 V 22 w(terminal)j Fg(\()p Ft(void)p
+Fg(\))195 1413 y Fu(Up)q(date)16 b(Readline's)g(in)o(ternal)g(screen)f
+(size)i(b)o(y)e(reading)g(v)m(alues)i(from)d(the)i(k)o(ernel.)1762
+1559 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241 1559
+V 21 w(set)p 333 1559 V 21 w(screen)p 510 1559 V 20 w(size)k
+Fg(\()p Ft(int)15 b(rows,)f(int)h(cols)p Fg(\))195 1614
+y Fu(Set)g(Readline's)h(idea)g(of)f(the)g(terminal)h(size)g(to)f
+Fk(ro)o(ws)h Fu(ro)o(ws)e(and)i Fk(cols)h Fu(columns.)137
+1725 y(If)g(an)g(application)h(do)q(es)f(not)f(w)o(an)o(t)g(to)g
+(install)i(a)f Ft(SIGWINCH)e Fu(handler,)j(but)f(is)g(still)h(in)o
+(terested)f(in)75 1780 y(the)e(screen)h(dimensions,)g(Readline's)h
+(idea)e(of)g(the)h(screen)f(size)h(ma)o(y)f(b)q(e)h(queried.)1762
+1927 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241 1927
+V 21 w(get)p 339 1927 V 21 w(screen)p 516 1927 V 20 w(size)k
+Fg(\()p Ft(int)15 b(*rows,)f(int)h(*cols)p Fg(\))195
+1981 y Fu(Return)g(Readline's)h(idea)f(of)g(the)g(terminal's)g(size)h
+(in)g(the)f(v)m(ariables)i(p)q(oin)o(ted)f(to)e(b)o(y)h(the)g(argu-)195
+2036 y(men)o(ts.)137 2148 y(The)h(follo)o(wing)g(functions)g(install)g
+(and)g(remo)o(v)o(e)e(Readline's)i(signal)g(handlers.)1762
+2294 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 2294
+V 21 w(set)p 307 2294 V 20 w(signals)j Fg(\()p Ft(void)p
+Fg(\))195 2349 y Fu(Install)c(Readline's)f(signal)h(handler)f(for)f
 Ft(SIGINT)p Fu(,)g Ft(SIGQUIT)p Fu(,)g Ft(SIGTERM)p Fu(,)g
-Ft(SIGALRM)p Fu(,)f Ft(SIGTSTP)p Fu(,)195 1502 y Ft(SIGTTIN)p
+Ft(SIGALRM)p Fu(,)f Ft(SIGTSTP)p Fu(,)195 2404 y Ft(SIGTTIN)p
 Fu(,)11 b Ft(SIGTTOU)p Fu(,)g(and)h Ft(SIGWINCH)p Fu(,)e(dep)q(ending)k
 (on)e(the)f(v)m(alues)i(of)e Ft(rl_catch_signals)f Fu(and)195
-1556 y Ft(rl_catch_sigwinch)p Fu(.)1762 1674 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1674 V 21 w(clear)p 354 1674
-V 21 w(signals)j Fg(\()p Ft(void)p Fg(\))195 1729 y Fu(Remo)o(v)o(e)14
+2459 y Ft(rl_catch_sigwinch)p Fu(.)1762 2605 y(F)l(unction)-1861
+b Fi(int)20 b Fh(rl)p 215 2605 V 21 w(clear)p 354 2605
+V 21 w(signals)j Fg(\()p Ft(void)p Fg(\))195 2660 y Fu(Remo)o(v)o(e)14
 b(all)i(of)f(the)g(Readline)i(signal)f(handlers)g(installed)h(b)o(y)e
-Ft(rl_set_signals\(\))p Fu(.)75 1858 y Fs(2.6)33 b(Custom)21
-b(Completers)137 1955 y Fu(T)o(ypically)l(,)e(a)d(program)f(that)h
-(reads)h(commands)f(from)g(the)h(user)f(has)h(a)f(w)o(a)o(y)g(of)g
-(disam)o(biguating)75 2010 y(commands)i(and)f(data.)27
-b(If)18 b(y)o(our)f(program)g(is)h(one)g(of)f(these,)i(then)f(it)g(can)
-f(pro)o(vide)i(completion)g(for)75 2065 y(commands,)14
-b(data,)g(or)g(b)q(oth.)20 b(The)15 b(follo)o(wing)g(sections)g
-(describ)q(e)h(ho)o(w)e(y)o(our)g(program)g(and)h(Readline)75
-2119 y(co)q(op)q(erate)g(to)g(pro)o(vide)g(this)h(service.)75
-2232 y Fj(2.6.1)30 b(Ho)n(w)21 b(Completing)f(W)-5 b(orks)137
-2329 y Fu(In)18 b(order)f(to)f(complete)i(some)f(text,)g(the)g(full)i
-(list)e(of)g(p)q(ossible)i(completions)f(m)o(ust)f(b)q(e)h(a)o(v)m
-(ailable.)75 2383 y(That)e(is,)i(it)f(is)h(not)f(p)q(ossible)h(to)f
+Ft(rl_set_signals\(\))p Fu(.)p eop
+%%Page: 39 41
+39 40 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)843 b(39)75 149 y Fs(2.6)33 b(Custom)21 b(Completers)137
+246 y Fu(T)o(ypically)l(,)e(a)d(program)f(that)h(reads)h(commands)f
+(from)g(the)h(user)f(has)h(a)f(w)o(a)o(y)g(of)g(disam)o(biguating)75
+301 y(commands)i(and)f(data.)27 b(If)18 b(y)o(our)f(program)g(is)h(one)
+g(of)f(these,)i(then)f(it)g(can)f(pro)o(vide)i(completion)g(for)75
+356 y(commands,)14 b(data,)g(or)g(b)q(oth.)20 b(The)15
+b(follo)o(wing)g(sections)g(describ)q(e)h(ho)o(w)e(y)o(our)g(program)g
+(and)h(Readline)75 410 y(co)q(op)q(erate)g(to)g(pro)o(vide)g(this)h
+(service.)75 523 y Fj(2.6.1)30 b(Ho)n(w)21 b(Completing)f(W)-5
+b(orks)137 620 y Fu(In)18 b(order)f(to)f(complete)i(some)f(text,)g(the)
+g(full)i(list)e(of)g(p)q(ossible)i(completions)f(m)o(ust)f(b)q(e)h(a)o
+(v)m(ailable.)75 675 y(That)e(is,)i(it)f(is)h(not)f(p)q(ossible)h(to)f
 (accurately)g(expand)h(a)e(partial)i(w)o(ord)e(without)h(kno)o(wing)g
-(all)h(of)f(the)75 2438 y(p)q(ossible)i(w)o(ords)e(whic)o(h)h(mak)o(e)f
+(all)h(of)f(the)75 729 y(p)q(ossible)i(w)o(ords)e(whic)o(h)h(mak)o(e)f
 (sense)h(in)h(that)d(con)o(text.)26 b(The)18 b(Readline)h(library)f
-(pro)o(vides)g(the)g(user)75 2493 y(in)o(terface)f(to)f(completion,)i
+(pro)o(vides)g(the)g(user)75 784 y(in)o(terface)f(to)f(completion,)i
 (and)e(t)o(w)o(o)g(of)g(the)h(most)f(common)g(completion)i(functions:)
-23 b(\014lename)18 b(and)75 2548 y(username.)h(F)l(or)10
+23 b(\014lename)18 b(and)75 839 y(username.)h(F)l(or)10
 b(completing)i(other)e(t)o(yp)q(es)h(of)f(text,)h(y)o(ou)g(m)o(ust)f
 (write)h(y)o(our)f(o)o(wn)h(completion)g(function.)75
-2602 y(This)16 b(section)g(describ)q(es)g(exactly)g(what)f(suc)o(h)g
+894 y(This)16 b(section)g(describ)q(es)g(exactly)g(what)f(suc)o(h)g
 (functions)h(m)o(ust)f(do,)f(and)i(pro)o(vides)f(an)h(example.)137
-2670 y(There)g(are)f(three)g(ma)s(jor)f(functions)i(used)f(to)g(p)q
-(erform)g(completion:)p eop
-%%Page: 39 41
-39 40 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(39)100 149 y(1.)29 b(The)22 b(user-in)o(terface)g
+961 y(There)g(are)f(three)g(ma)s(jor)f(functions)i(used)f(to)g(p)q
+(erform)g(completion:)100 1029 y(1.)29 b(The)22 b(user-in)o(terface)g
 (function)h Ft(rl_complete\(\))p Fu(.)37 b(This)22 b(function)h(is)f
-(called)h(with)f(the)g(same)165 204 y(argumen)o(ts)17
+(called)h(with)f(the)g(same)165 1084 y(argumen)o(ts)17
 b(as)h(other)g(bindable)i(Readline)f(functions:)27 b
-Fk(coun)o(t)19 b Fu(and)f Fk(in)o(v)o(oking)p 1556 204
-14 2 v 17 w(k)o(ey)p Fu(.)28 b(It)19 b(isolates)165 259
+Fk(coun)o(t)19 b Fu(and)f Fk(in)o(v)o(oking)p 1556 1084
+14 2 v 17 w(k)o(ey)p Fu(.)28 b(It)19 b(isolates)165 1138
 y(the)g(w)o(ord)f(to)g(b)q(e)i(completed)f(and)g(calls)h
 Ft(rl_completion_matches\(\))c Fu(to)i(generate)g(a)h(list)g(of)165
-314 y(p)q(ossible)e(completions.)22 b(It)16 b(then)g(either)g(lists)g
+1193 y(p)q(ossible)e(completions.)22 b(It)16 b(then)g(either)g(lists)g
 (the)g(p)q(ossible)h(completions,)g(inserts)f(the)f(p)q(ossible)165
-369 y(completions,)25 b(or)d(actually)i(p)q(erforms)e(the)g
+1248 y(completions,)25 b(or)d(actually)i(p)q(erforms)e(the)g
 (completion,)k(dep)q(ending)e(on)f(whic)o(h)g(b)q(eha)o(vior)g(is)165
-423 y(desired.)100 489 y(2.)29 b(The)17 b(in)o(ternal)h(function)f
+1303 y(desired.)100 1370 y(2.)29 b(The)17 b(in)o(ternal)h(function)f
 Ft(rl_completion_matches\(\))d Fu(uses)j(an)g(application-supplie)q(d)j
-Fk(gener-)165 544 y(ator)h Fu(function)e(to)f(generate)g(the)h(list)g
+Fk(gener-)165 1425 y(ator)h Fu(function)e(to)f(generate)g(the)h(list)g
 (of)f(p)q(ossible)i(matc)o(hes,)f(and)f(then)h(returns)g(the)f(arra)o
-(y)f(of)165 599 y(these)j(matc)o(hes.)32 b(The)20 b(caller)g(should)h
+(y)f(of)165 1480 y(these)j(matc)o(hes.)32 b(The)20 b(caller)g(should)h
 (place)f(the)g(address)f(of)h(its)f(generator)g(function)h(in)g
-Ft(rl_)165 653 y(completion_entry_function)p Fu(.)100
-719 y(3.)29 b(The)12 b(generator)e(function)i(is)g(called)h(rep)q
+Ft(rl_)165 1535 y(completion_entry_function)p Fu(.)100
+1602 y(3.)29 b(The)12 b(generator)e(function)i(is)g(called)h(rep)q
 (eatedly)g(from)e Ft(rl_completion_matches\(\))p Fu(,)d(returning)165
-774 y(a)16 b(string)g(eac)o(h)h(time.)24 b(The)17 b(argumen)o(ts)e(to)h
-(the)g(generator)g(function)h(are)f Fk(text)h Fu(and)g
-Fk(state)p Fu(.)22 b Fk(text)165 828 y Fu(is)17 b(the)f(partial)g(w)o
+1657 y(a)16 b(string)g(eac)o(h)h(time.)24 b(The)17 b(argumen)o(ts)e(to)
+h(the)g(generator)g(function)h(are)f Fk(text)h Fu(and)g
+Fk(state)p Fu(.)22 b Fk(text)165 1712 y Fu(is)17 b(the)f(partial)g(w)o
 (ord)f(to)h(b)q(e)h(completed.)23 b Fk(state)18 b Fu(is)e(zero)g(the)g
-(\014rst)g(time)g(the)g(function)h(is)g(called,)165 883
+(\014rst)g(time)g(the)g(function)h(is)g(called,)165 1766
 y(allo)o(wing)23 b(the)f(generator)f(to)g(p)q(erform)h(an)o(y)g
 (necessary)g(initialization,)k(and)c(a)g(p)q(ositiv)o(e)h(non-)165
-938 y(zero)14 b(in)o(teger)h(for)f(eac)o(h)h(subsequen)o(t)g(call.)21
+1821 y(zero)14 b(in)o(teger)h(for)f(eac)o(h)h(subsequen)o(t)g(call.)21
 b(The)15 b(generator)e(function)j(returns)e Ft(\(char)h(*\)NULL)f
-Fu(to)165 993 y(inform)19 b Ft(rl_completion_matches\(\))d
+Fu(to)165 1876 y(inform)19 b Ft(rl_completion_matches\(\))d
 Fu(that)i(there)h(are)g(no)g(more)g(p)q(ossibilities)j(left.)32
-b(Usually)165 1048 y(the)19 b(generator)g(function)h(computes)g(the)f
+b(Usually)165 1931 y(the)19 b(generator)g(function)h(computes)g(the)f
 (list)h(of)f(p)q(ossible)i(completions)g(when)e Fk(state)j
-Fu(is)d(zero,)165 1102 y(and)13 b(returns)g(them)f(one)h(at)f(a)h(time)
+Fu(is)d(zero,)165 1986 y(and)13 b(returns)g(them)f(one)h(at)f(a)h(time)
 g(on)g(subsequen)o(t)g(calls.)20 b(Eac)o(h)13 b(string)f(the)h
-(generator)f(function)165 1157 y(returns)k(as)f(a)h(matc)o(h)f(m)o(ust)
+(generator)f(function)165 2040 y(returns)k(as)f(a)h(matc)o(h)f(m)o(ust)
 h(b)q(e)g(allo)q(cated)h(with)g Ft(malloc\(\))p Fu(;)d(Readline)k
-(frees)e(the)g(strings)f(when)165 1212 y(it)g(has)h(\014nished)g(with)g
-(them.)1762 1321 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 1321 18 3 v 21 w(complete)j Fg(\()p Ft(int)14 b(ignore,)g(int)h
-(invoking_key)p Fg(\))195 1375 y Fu(Complete)h(the)f(w)o(ord)g(at)f(or)
+(frees)e(the)g(strings)f(when)165 2095 y(it)g(has)h(\014nished)g(with)g
+(them.)1762 2213 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
+215 2213 18 3 v 21 w(complete)j Fg(\()p Ft(int)14 b(ignore,)g(int)h
+(invoking_key)p Fg(\))195 2268 y Fu(Complete)h(the)f(w)o(ord)g(at)f(or)
 h(b)q(efore)h(p)q(oin)o(t.)21 b(Y)l(ou)15 b(ha)o(v)o(e)g(supplied)j
-(the)d(function)i(that)d(do)q(es)i(the)195 1430 y(initial)23
+(the)d(function)i(that)d(do)q(es)i(the)195 2323 y(initial)23
 b(simple)f(matc)o(hing)e(selection)i(algorithm)f(\(see)f
-Ft(rl_completion_matches\(\))p Fu(\).)33 b(The)195 1485
+Ft(rl_completion_matches\(\))p Fu(\).)33 b(The)195 2378
 y(default)16 b(is)f(to)g(do)g(\014lename)h(completion.)1773
-1594 y(V)l(ariable)-1861 b Fi(rl_compentry_func_t)22
-b(*)d Fh(rl)p 678 1594 V 21 w(completion)p 973 1594 V
-21 w(en)n(try)p 1126 1594 V 22 w(function)195 1648 y
+2496 y(V)l(ariable)-1861 b Fi(rl_compentry_func_t)22
+b(*)d Fh(rl)p 678 2496 V 21 w(completion)p 973 2496 V
+21 w(en)n(try)p 1126 2496 V 22 w(function)195 2550 y
 Fu(This)i(is)f(a)g(p)q(oin)o(ter)g(to)f(the)h(generator)g(function)g
 (for)g Ft(rl_completion_matches\(\))p Fu(.)31 b(If)20
-b(the)195 1703 y(v)m(alue)13 b(of)f Ft(rl_completion_entry_fun)o(ction)
+b(the)195 2605 y(v)m(alue)13 b(of)f Ft(rl_completion_entry_fun)o(ction)
 d Fu(is)j Ft(NULL)f Fu(then)h(the)g(default)h(\014lename)g(generator)
-195 1758 y(function,)j Ft(rl_filename_completion_f)o(unction)o(\(\))p
-Fu(,)c(is)k(used.)75 1865 y Fj(2.6.2)30 b(Completion)20
-b(F)-5 b(unctions)137 1960 y Fu(Here)16 b(is)f(the)h(complete)g(list)g
-(of)e(callable)k(completion)e(functions)g(presen)o(t)f(in)h(Readline.)
-1762 2068 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215
-2068 V 21 w(complete)p 460 2068 V 21 w(in)n(ternal)k
-Fg(\()p Ft(int)15 b(what_to_do)p Fg(\))195 2123 y Fu(Complete)k(the)g
-(w)o(ord)f(at)g(or)g(b)q(efore)h(p)q(oin)o(t.)31 b Fk(what)p
-1108 2123 14 2 v 16 w(to)p 1165 2123 V 16 w(do)21 b Fu(sa)o(ys)d(what)g
-(to)g(do)h(with)g(the)g(com-)195 2178 y(pletion.)j(A)16
-b(v)m(alue)h(of)e(`)p Ft(?)p Fu(')g(means)g(list)i(the)e(p)q(ossible)j
-(completions.)k(`)p Ft(TAB)p Fu(')14 b(means)i(do)f(standard)195
-2233 y(completion.)22 b(`)p Ft(*)p Fu(')15 b(means)g(insert)h(all)h(of)
-e(the)h(p)q(ossible)h(completions.)22 b(`)p Ft(!)p Fu(')15
-b(means)g(to)g(displa)o(y)i(all)195 2287 y(of)g(the)g(p)q(ossible)i
-(completions,)f(if)g(there)f(is)h(more)f(than)g(one,)g(as)g(w)o(ell)h
-(as)f(p)q(erforming)h(partial)195 2342 y(completion.)1762
-2451 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 2451
-18 3 v 21 w(complete)j Fg(\()p Ft(int)14 b(ignore,)g(int)h
-(invoking_key)p Fg(\))195 2506 y Fu(Complete)21 b(the)g(w)o(ord)e(at)h
-(or)g(b)q(efore)h(p)q(oin)o(t.)37 b(Y)l(ou)21 b(ha)o(v)o(e)f(supplied)j
-(the)d(function)i(that)e(do)q(es)195 2560 y(the)d(initial)h(simple)g
-(matc)o(hing)f(selection)h(algorithm)e(\(see)g Ft
-(rl_completion_matches\(\))e Fu(and)195 2615 y Ft
-(rl_completion_entry_functi)o(on)p Fu(\).)25 b(The)18
+195 2660 y(function,)j Ft(rl_filename_completion_f)o(unction)o(\(\))p
+Fu(,)c(is)k(used.)p eop
+%%Page: 40 42
+40 41 bop 75 -58 a Fu(40)1299 b(GNU)15 b(Readline)h(Library)75
+149 y Fj(2.6.2)30 b(Completion)20 b(F)-5 b(unctions)137
+244 y Fu(Here)16 b(is)f(the)h(complete)g(list)g(of)e(callable)k
+(completion)e(functions)g(presen)o(t)f(in)h(Readline.)1762
+353 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 353
+18 3 v 21 w(complete)p 460 353 V 21 w(in)n(ternal)k Fg(\()p
+Ft(int)15 b(what_to_do)p Fg(\))195 408 y Fu(Complete)k(the)g(w)o(ord)f
+(at)g(or)g(b)q(efore)h(p)q(oin)o(t.)31 b Fk(what)p 1108
+408 14 2 v 16 w(to)p 1165 408 V 16 w(do)21 b Fu(sa)o(ys)d(what)g(to)g
+(do)h(with)g(the)g(com-)195 463 y(pletion.)j(A)16 b(v)m(alue)h(of)e(`)p
+Ft(?)p Fu(')g(means)g(list)i(the)e(p)q(ossible)j(completions.)k(`)p
+Ft(TAB)p Fu(')14 b(means)i(do)f(standard)195 517 y(completion.)22
+b(`)p Ft(*)p Fu(')15 b(means)g(insert)h(all)h(of)e(the)h(p)q(ossible)h
+(completions.)22 b(`)p Ft(!)p Fu(')15 b(means)g(to)g(displa)o(y)i(all)
+195 572 y(of)g(the)g(p)q(ossible)i(completions,)f(if)g(there)f(is)h
+(more)f(than)g(one,)g(as)g(w)o(ell)h(as)f(p)q(erforming)h(partial)195
+627 y(completion.)1762 736 y(F)l(unction)-1861 b Fi(int)20
+b Fh(rl)p 215 736 18 3 v 21 w(complete)j Fg(\()p Ft(int)14
+b(ignore,)g(int)h(invoking_key)p Fg(\))195 791 y Fu(Complete)21
+b(the)g(w)o(ord)e(at)h(or)g(b)q(efore)h(p)q(oin)o(t.)37
+b(Y)l(ou)21 b(ha)o(v)o(e)f(supplied)j(the)d(function)i(that)e(do)q(es)
+195 845 y(the)d(initial)h(simple)g(matc)o(hing)f(selection)h(algorithm)
+e(\(see)g Ft(rl_completion_matches\(\))e Fu(and)195 900
+y Ft(rl_completion_entry_functi)o(on)p Fu(\).)25 b(The)18
 b(default)h(is)f(to)f(do)h(\014lename)h(completion.)29
-b(This)195 2670 y(calls)16 b Ft(rl_complete_internal\(\))c
+b(This)195 955 y(calls)16 b Ft(rl_complete_internal\(\))c
 Fu(with)k(an)f(argumen)o(t)f(dep)q(ending)k(on)d Fk(in)o(v)o(oking)p
-1657 2670 14 2 v 17 w(k)o(ey)p Fu(.)p eop
-%%Page: 40 42
-40 41 bop 75 -58 a Fu(40)1299 b(GNU)15 b(Readline)h(Library)1762
-149 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 149
-18 3 v 21 w(p)r(ossible)p 433 149 V 20 w(completions)j
-Fg(\()p Ft(int)15 b(count,)f(int)h(invoking_key)p Fg(\))195
-204 y Fu(List)21 b(the)f(p)q(ossible)i(completions.)36
-b(See)21 b(description)h(of)e Ft(rl_complete)13 b(\(\))p
-Fu(.)35 b(This)21 b(calls)g Ft(rl_)195 259 y(complete_internal\(\))13
-b Fu(with)i(an)g(argumen)o(t)g(of)f(`)p Ft(?)p Fu('.)1762
-371 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 371
-V 21 w(insert)p 378 371 V 21 w(completions)j Fg(\()p
-Ft(int)14 b(count,)g(int)h(invoking_key)p Fg(\))195 426
-y Fu(Insert)i(the)g(list)h(of)e(p)q(ossible)j(completions)e(in)o(to)g
-(the)g(line,)i(deleting)f(the)f(partially-completed)195
-481 y(w)o(ord.)k(See)c(description)g(of)e Ft(rl_complete\(\))p
+1657 955 14 2 v 17 w(k)o(ey)p Fu(.)1762 1064 y(F)l(unction)-1861
+b Fi(int)20 b Fh(rl)p 215 1064 18 3 v 21 w(p)r(ossible)p
+433 1064 V 20 w(completions)j Fg(\()p Ft(int)15 b(count,)f(int)h
+(invoking_key)p Fg(\))195 1119 y Fu(List)21 b(the)f(p)q(ossible)i
+(completions.)36 b(See)21 b(description)h(of)e Ft(rl_complete)13
+b(\(\))p Fu(.)35 b(This)21 b(calls)g Ft(rl_)195 1174
+y(complete_internal\(\))13 b Fu(with)i(an)g(argumen)o(t)g(of)f(`)p
+Ft(?)p Fu('.)1762 1282 y(F)l(unction)-1861 b Fi(int)20
+b Fh(rl)p 215 1282 V 21 w(insert)p 378 1282 V 21 w(completions)j
+Fg(\()p Ft(int)14 b(count,)g(int)h(invoking_key)p Fg(\))195
+1337 y Fu(Insert)i(the)g(list)h(of)e(p)q(ossible)j(completions)e(in)o
+(to)g(the)g(line,)i(deleting)f(the)f(partially-completed)195
+1392 y(w)o(ord.)k(See)c(description)g(of)e Ft(rl_complete\(\))p
 Fu(.)20 b(This)d(calls)g Ft(rl_complete_internal\(\))c
-Fu(with)195 535 y(an)i(argumen)o(t)g(of)f(`)p Ft(*)p
-Fu('.)1762 648 y(F)l(unction)-1861 b Fi(char)20 b(**)f
-Fh(rl)p 312 648 V 21 w(completion)p 607 648 V 21 w(matc)n(hes)j
-Fg(\()p Ft(const)15 b(char)f(*text,)283 702 y(rl_compentry_func_t)e
-(*entry_func)p Fg(\))195 757 y Fu(Returns)18 b(an)h(arra)o(y)f(of)g
+Fu(with)195 1447 y(an)i(argumen)o(t)g(of)f(`)p Ft(*)p
+Fu('.)1762 1556 y(F)l(unction)-1861 b Fi(char)20 b(**)f
+Fh(rl)p 312 1556 V 21 w(completion)p 607 1556 V 21 w(matc)n(hes)j
+Fg(\()p Ft(const)15 b(char)f(*text,)283 1611 y(rl_compentry_func_t)e
+(*entry_func)p Fg(\))195 1665 y Fu(Returns)18 b(an)h(arra)o(y)f(of)g
 (strings)h(whic)o(h)h(is)g(a)e(list)i(of)e(completions)i(for)f
-Fk(text)p Fu(.)30 b(If)19 b(there)g(are)g(no)195 812
+Fk(text)p Fu(.)30 b(If)19 b(there)g(are)g(no)195 1720
 y(completions,)f(returns)g Ft(NULL)p Fu(.)25 b(The)17
 b(\014rst)g(en)o(try)g(in)h(the)f(returned)h(arra)o(y)e(is)i(the)f
-(substitution)195 867 y(for)c Fk(text)p Fu(.)18 b(The)c(remaining)g(en)
-o(tries)f(are)g(the)h(p)q(ossible)g(completions.)21 b(The)13
-b(arra)o(y)f(is)i(terminated)195 921 y(with)i(a)e Ft(NULL)h
-Fu(p)q(oin)o(ter.)195 988 y Fk(en)o(try)p 302 988 14
-2 v 16 w(func)h Fu(is)e(a)f(function)h(of)e(t)o(w)o(o)g(args,)g(and)i
-(returns)f(a)f Ft(char)j(*)p Fu(.)k(The)13 b(\014rst)g(argumen)o(t)f
-(is)i Fk(text)p Fu(.)195 1043 y(The)f(second)g(is)f(a)h(state)e
-(argumen)o(t;)h(it)h(is)g(zero)f(on)g(the)h(\014rst)f(call,)i(and)e
-(non-zero)h(on)f(subsequen)o(t)195 1097 y(calls.)20 b
-Fk(en)o(try)p 420 1097 V 16 w(func)15 b Fu(returns)e(a)e
-Ft(NULL)h Fu(p)q(oin)o(ter)h(to)e(the)i(caller)g(when)g(there)f(are)g
-(no)g(more)g(matc)o(hes.)1762 1209 y(F)l(unction)-1861
-b Fi(char)20 b(*)f Fh(rl)p 286 1209 18 3 v 21 w(\014lename)p
-515 1209 V 20 w(completion)p 809 1209 V 21 w(function)k
-Fg(\()p Ft(const)15 b(char)f(*text,)h(int)283 1264 y(state)p
-Fg(\))195 1319 y Fu(A)e(generator)f(function)h(for)g(\014lename)h
-(completion)f(in)h(the)f(general)g(case.)19 b Fk(text)14
-b Fu(is)f(a)g(partial)g(\014le-)195 1374 y(name.)20 b(The)15
-b(Bash)f(source)h(is)g(a)g(useful)g(reference)h(for)e(writing)h(custom)
-f(completion)i(functions)195 1429 y(\(the)f(Bash)g(completion)i
-(functions)e(call)i(this)e(and)h(other)f(Readline)h(functions\).)1762
-1541 y(F)l(unction)-1861 b Fi(char)20 b(*)f Fh(rl)p 286
-1541 V 21 w(username)p 547 1541 V 19 w(completion)p 840
-1541 V 21 w(function)k Fg(\()p Ft(const)14 b(char)g(*text,)283
-1595 y(int)g(state)p Fg(\))195 1650 y Fu(A)g(completion)i(generator)d
-(for)h(usernames.)19 b Fk(text)c Fu(con)o(tains)f(a)g(partial)h
-(username)f(preceded)i(b)o(y)195 1705 y(a)f(random)g(c)o(haracter)f
-(\(usually)j(`)p Ft(~)p Fu('\).)i(As)c(with)g(all)i(completion)f
-(generators,)e Fk(state)j Fu(is)f(zero)f(on)195 1760
-y(the)g(\014rst)g(call)h(and)g(non-zero)f(for)g(subsequen)o(t)h(calls.)
-75 1869 y Fj(2.6.3)30 b(Completion)20 b(V)-5 b(ariables)1773
-2010 y Fu(V)l(ariable)-1861 b Fi(rl_compentry_func_t)22
-b(*)d Fh(rl)p 678 2010 V 21 w(completion)p 973 2010 V
-21 w(en)n(try)p 1126 2010 V 22 w(function)195 2065 y
-Fu(A)e(p)q(oin)o(ter)g(to)f(the)h(generator)f(function)h(for)f
-Ft(rl_completion_matches\(\))p Fu(.)22 b Ft(NULL)16 b
-Fu(means)h(to)195 2120 y(use)f Ft(rl_filename_completion_)o(functio)o
-(n\(\))p Fu(,)c(the)j(default)h(\014lename)g(completer.)1773
-2232 y(V)l(ariable)-1861 b Fi(rl_completion_func_t)22
-b(*)d Fh(rl)p 704 2232 V 22 w(attempted)p 985 2232 V
-20 w(completion)p 1279 2232 V 21 w(function)195 2286
-y Fu(A)e(p)q(oin)o(ter)h(to)f(an)g(alternativ)o(e)h(function)g(to)f
-(create)g(matc)o(hes.)26 b(The)18 b(function)g(is)g(called)h(with)195
-2341 y Fk(text)p Fu(,)11 b Fk(start)p Fu(,)g(and)h Fk(end)p
-Fu(.)19 b Fk(start)11 b Fu(and)h Fk(end)i Fu(are)d(indices)i(in)g
-Ft(rl_line_buffer)c Fu(de\014ning)k(the)f(b)q(ound-)195
-2396 y(aries)h(of)g Fk(text)p Fu(,)f(whic)o(h)i(is)g(a)e(c)o(haracter)h
-(string.)19 b(If)13 b(this)g(function)h(exists)g(and)f(returns)g
-Ft(NULL)p Fu(,)f(or)g(if)195 2451 y(this)f(v)m(ariable)i(is)e(set)g(to)
-f Ft(NULL)p Fu(,)h(then)g Ft(rl_complete\(\))e Fu(will)k(call)f(the)f
-(v)m(alue)h(of)f Ft(rl_completion_)195 2506 y(entry_function)h
+(substitution)195 1775 y(for)c Fk(text)p Fu(.)18 b(The)c(remaining)g
+(en)o(tries)f(are)g(the)h(p)q(ossible)g(completions.)21
+b(The)13 b(arra)o(y)f(is)i(terminated)195 1830 y(with)i(a)e
+Ft(NULL)h Fu(p)q(oin)o(ter.)195 1895 y Fk(en)o(try)p
+302 1895 14 2 v 16 w(func)h Fu(is)e(a)f(function)h(of)e(t)o(w)o(o)g
+(args,)g(and)i(returns)f(a)f Ft(char)j(*)p Fu(.)k(The)13
+b(\014rst)g(argumen)o(t)f(is)i Fk(text)p Fu(.)195 1950
+y(The)f(second)g(is)f(a)h(state)e(argumen)o(t;)h(it)h(is)g(zero)f(on)g
+(the)h(\014rst)f(call,)i(and)e(non-zero)h(on)f(subsequen)o(t)195
+2005 y(calls.)20 b Fk(en)o(try)p 420 2005 V 16 w(func)15
+b Fu(returns)e(a)e Ft(NULL)h Fu(p)q(oin)o(ter)h(to)e(the)i(caller)g
+(when)g(there)f(are)g(no)g(more)g(matc)o(hes.)1762 2114
+y(F)l(unction)-1861 b Fi(char)20 b(*)f Fh(rl)p 286 2114
+18 3 v 21 w(\014lename)p 515 2114 V 20 w(completion)p
+809 2114 V 21 w(function)k Fg(\()p Ft(const)15 b(char)f(*text,)h(int)
+283 2169 y(state)p Fg(\))195 2223 y Fu(A)e(generator)f(function)h(for)g
+(\014lename)h(completion)f(in)h(the)f(general)g(case.)19
+b Fk(text)14 b Fu(is)f(a)g(partial)g(\014le-)195 2278
+y(name.)20 b(The)15 b(Bash)f(source)h(is)g(a)g(useful)g(reference)h
+(for)e(writing)h(custom)f(completion)i(functions)195
+2333 y(\(the)f(Bash)g(completion)i(functions)e(call)i(this)e(and)h
+(other)f(Readline)h(functions\).)1762 2442 y(F)l(unction)-1861
+b Fi(char)20 b(*)f Fh(rl)p 286 2442 V 21 w(username)p
+547 2442 V 19 w(completion)p 840 2442 V 21 w(function)k
+Fg(\()p Ft(const)14 b(char)g(*text,)283 2497 y(int)g(state)p
+Fg(\))195 2552 y Fu(A)g(completion)i(generator)d(for)h(usernames.)19
+b Fk(text)c Fu(con)o(tains)f(a)g(partial)h(username)f(preceded)i(b)o(y)
+195 2606 y(a)f(random)g(c)o(haracter)f(\(usually)j(`)p
+Ft(~)p Fu('\).)i(As)c(with)g(all)i(completion)f(generators,)e
+Fk(state)j Fu(is)f(zero)f(on)195 2661 y(the)g(\014rst)g(call)h(and)g
+(non-zero)f(for)g(subsequen)o(t)h(calls.)p eop
+%%Page: 41 43
+41 42 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)843 b(41)75 149 y Fj(2.6.3)30 b(Completion)20
+b(V)-5 b(ariables)1773 292 y Fu(V)l(ariable)-1861 b Fi
+(rl_compentry_func_t)22 b(*)d Fh(rl)p 678 292 18 3 v
+21 w(completion)p 973 292 V 21 w(en)n(try)p 1126 292
+V 22 w(function)195 347 y Fu(A)e(p)q(oin)o(ter)g(to)f(the)h(generator)f
+(function)h(for)f Ft(rl_completion_matches\(\))p Fu(.)22
+b Ft(NULL)16 b Fu(means)h(to)195 402 y(use)f Ft
+(rl_filename_completion_)o(functio)o(n\(\))p Fu(,)c(the)j(default)h
+(\014lename)g(completer.)1773 516 y(V)l(ariable)-1861
+b Fi(rl_completion_func_t)22 b(*)d Fh(rl)p 704 516 V
+22 w(attempted)p 985 516 V 20 w(completion)p 1279 516
+V 21 w(function)195 571 y Fu(A)e(p)q(oin)o(ter)h(to)f(an)g(alternativ)o
+(e)h(function)g(to)f(create)g(matc)o(hes.)26 b(The)18
+b(function)g(is)g(called)h(with)195 625 y Fk(text)p Fu(,)11
+b Fk(start)p Fu(,)g(and)h Fk(end)p Fu(.)19 b Fk(start)11
+b Fu(and)h Fk(end)i Fu(are)d(indices)i(in)g Ft(rl_line_buffer)c
+Fu(de\014ning)k(the)f(b)q(ound-)195 680 y(aries)h(of)g
+Fk(text)p Fu(,)f(whic)o(h)i(is)g(a)e(c)o(haracter)h(string.)19
+b(If)13 b(this)g(function)h(exists)g(and)f(returns)g
+Ft(NULL)p Fu(,)f(or)g(if)195 735 y(this)f(v)m(ariable)i(is)e(set)g(to)f
+Ft(NULL)p Fu(,)h(then)g Ft(rl_complete\(\))e Fu(will)k(call)f(the)f(v)m
+(alue)h(of)f Ft(rl_completion_)195 790 y(entry_function)h
 Fu(to)i(generate)g(matc)o(hes,)f(otherwise)i(the)f(arra)o(y)f(of)h
-(strings)g(returned)g(will)i(b)q(e)195 2560 y(used.)j(If)12
+(strings)g(returned)g(will)i(b)q(e)195 845 y(used.)j(If)12
 b(this)f(function)h(sets)f(the)g Ft(rl_attempted_completion_over)d
-Fu(v)m(ariable)k(to)f(a)g(non-zero)195 2615 y(v)m(alue,)18
+Fu(v)m(ariable)k(to)f(a)g(non-zero)195 899 y(v)m(alue,)18
 b(Readline)h(will)f(not)f(p)q(erform)f(its)i(default)f(completion)h(ev)
-o(en)f(if)h(this)f(function)h(returns)195 2670 y(no)d(matc)o(hes.)p
-eop
-%%Page: 41 43
-41 42 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(41)1773 149 y(V)l(ariable)-1861 b Fi(rl_quote_func_t)21
-b(*)f Fh(rl)p 574 149 18 3 v 21 w(\014lename)p 803 149
-V 20 w(quoting)p 1012 149 V 21 w(function)195 204 y Fu(A)c(p)q(oin)o
-(ter)h(to)f(a)g(function)h(that)e(will)j(quote)e(a)g(\014lename)i(in)f
-(an)f(application-sp)q(eci\014)q(c)j(fashion.)195 259
-y(This)h(is)g(called)i(if)e(\014lename)g(completion)h(is)f(b)q(eing)h
-(attempted)e(and)h(one)g(of)f(the)h(c)o(haracters)195
-314 y(in)d Ft(rl_filename_quote_characters)c Fu(app)q(ears)k(in)g(a)g
-(completed)g(\014lename.)25 b(The)17 b(function)195 369
-y(is)i(called)i(with)e Fk(text)p Fu(,)g Fk(matc)o(h)p
-722 369 14 2 v 16 w(t)o(yp)q(e)p Fu(,)g(and)g Fk(quote)p
-1059 369 V 17 w(p)q(oin)o(ter)p Fu(.)31 b(The)19 b Fk(text)h
-Fu(is)f(the)g(\014lename)h(to)e(b)q(e)195 423 y(quoted.)39
-b(The)21 b Fk(matc)o(h)p 607 423 V 16 w(t)o(yp)q(e)j
-Fu(is)e(either)g Ft(SINGLE_MATCH)p Fu(,)f(if)h(there)f(is)h(only)g(one)
-g(completion)195 478 y(matc)o(h,)15 b(or)g Ft(MULT_MATCH)p
-Fu(.)20 b(Some)c(functions)g(use)g(this)g(to)f(decide)j(whether)e(or)f
-(not)g(to)g(insert)h(a)195 533 y(closing)c(quote)e(c)o(haracter.)18
-b(The)11 b Fk(quote)p 877 533 V 16 w(p)q(oin)o(ter)k
-Fu(is)c(a)f(p)q(oin)o(ter)i(to)e(an)o(y)g(op)q(ening)i(quote)f(c)o
-(haracter)195 588 y(the)k(user)h(t)o(yp)q(ed.)k(Some)15
-b(functions)h(c)o(ho)q(ose)f(to)g(reset)g(this)g(c)o(haracter.)1773
-690 y(V)l(ariable)-1861 b Fi(rl_dequote_func_t)22 b(*)d
-Fh(rl)p 626 690 18 3 v 21 w(\014lename)p 855 690 V 20
-w(dequoting)p 1122 690 V 21 w(function)195 744 y Fu(A)c(p)q(oin)o(ter)g
-(to)f(a)h(function)g(that)g(will)h(remo)o(v)o(e)e(application-sp)q
-(eci\014)q(c)k(quoting)d(c)o(haracters)f(from)195 799
-y(a)i(\014lename)h(b)q(efore)g(completion)g(is)g(attempted,)f(so)f
-(those)h(c)o(haracters)g(do)g(not)g(in)o(terfere)h(with)195
-854 y(matc)o(hing)i(the)g(text)g(against)f(names)h(in)h(the)f
-(\014lesystem.)33 b(It)19 b(is)g(called)i(with)e Fk(text)p
-Fu(,)g(the)g(text)195 909 y(of)i(the)g(w)o(ord)g(to)g(b)q(e)h
-(dequoted,)h(and)e Fk(quote)p 1009 909 14 2 v 17 w(c)o(har)p
+o(en)f(if)h(this)f(function)h(returns)195 954 y(no)d(matc)o(hes.)1773
+1068 y(V)l(ariable)-1861 b Fi(rl_quote_func_t)21 b(*)f
+Fh(rl)p 574 1068 V 21 w(\014lename)p 803 1068 V 20 w(quoting)p
+1012 1068 V 21 w(function)195 1123 y Fu(A)c(p)q(oin)o(ter)h(to)f(a)g
+(function)h(that)e(will)j(quote)e(a)g(\014lename)i(in)f(an)f
+(application-sp)q(eci\014)q(c)j(fashion.)195 1178 y(This)h(is)g(called)
+i(if)e(\014lename)g(completion)h(is)f(b)q(eing)h(attempted)e(and)h(one)
+g(of)f(the)h(c)o(haracters)195 1232 y(in)d Ft
+(rl_filename_quote_characters)c Fu(app)q(ears)k(in)g(a)g(completed)g
+(\014lename.)25 b(The)17 b(function)195 1287 y(is)i(called)i(with)e
+Fk(text)p Fu(,)g Fk(matc)o(h)p 722 1287 14 2 v 16 w(t)o(yp)q(e)p
+Fu(,)g(and)g Fk(quote)p 1059 1287 V 17 w(p)q(oin)o(ter)p
+Fu(.)31 b(The)19 b Fk(text)h Fu(is)f(the)g(\014lename)h(to)e(b)q(e)195
+1342 y(quoted.)39 b(The)21 b Fk(matc)o(h)p 607 1342 V
+16 w(t)o(yp)q(e)j Fu(is)e(either)g Ft(SINGLE_MATCH)p
+Fu(,)f(if)h(there)f(is)h(only)g(one)g(completion)195
+1397 y(matc)o(h,)15 b(or)g Ft(MULT_MATCH)p Fu(.)20 b(Some)c(functions)g
+(use)g(this)g(to)f(decide)j(whether)e(or)f(not)g(to)g(insert)h(a)195
+1452 y(closing)c(quote)e(c)o(haracter.)18 b(The)11 b
+Fk(quote)p 877 1452 V 16 w(p)q(oin)o(ter)k Fu(is)c(a)f(p)q(oin)o(ter)i
+(to)e(an)o(y)g(op)q(ening)i(quote)f(c)o(haracter)195
+1506 y(the)k(user)h(t)o(yp)q(ed.)k(Some)15 b(functions)h(c)o(ho)q(ose)f
+(to)g(reset)g(this)g(c)o(haracter.)1773 1620 y(V)l(ariable)-1861
+b Fi(rl_dequote_func_t)22 b(*)d Fh(rl)p 626 1620 18 3
+v 21 w(\014lename)p 855 1620 V 20 w(dequoting)p 1122
+1620 V 21 w(function)195 1675 y Fu(A)c(p)q(oin)o(ter)g(to)f(a)h
+(function)g(that)g(will)h(remo)o(v)o(e)e(application-sp)q(eci\014)q(c)k
+(quoting)d(c)o(haracters)f(from)195 1730 y(a)i(\014lename)h(b)q(efore)g
+(completion)g(is)g(attempted,)f(so)f(those)h(c)o(haracters)g(do)g(not)g
+(in)o(terfere)h(with)195 1785 y(matc)o(hing)i(the)g(text)g(against)f
+(names)h(in)h(the)f(\014lesystem.)33 b(It)19 b(is)g(called)i(with)e
+Fk(text)p Fu(,)g(the)g(text)195 1839 y(of)i(the)g(w)o(ord)g(to)g(b)q(e)
+h(dequoted,)h(and)e Fk(quote)p 1009 1839 14 2 v 17 w(c)o(har)p
 Fu(,)h(whic)o(h)g(is)g(the)f(quoting)h(c)o(haracter)f(that)195
-964 y(delimits)d(the)e(\014lename)i(\(usually)f(`)p Ft(')p
-Fu(')f(or)f(`)p Ft(")p Fu('\).)22 b(If)17 b Fk(quote)p
-1187 964 V 16 w(c)o(har)i Fu(is)e(zero,)f(the)g(\014lename)i(w)o(as)d
-(not)195 1018 y(in)h(an)f(em)o(b)q(edded)i(string.)1773
-1120 y(V)l(ariable)-1861 b Fi(rl_linebuf_func_t)22 b(*)d
-Fh(rl)p 626 1120 18 3 v 21 w(c)n(har)p 754 1120 V 21
-w(is)p 813 1120 V 21 w(quoted)p 1005 1120 V 21 w(p)195
-1175 y Fu(A)f(p)q(oin)o(ter)h(to)f(a)g(function)h(to)f(call)i(that)d
+1894 y(delimits)d(the)e(\014lename)i(\(usually)f(`)p
+Ft(')p Fu(')f(or)f(`)p Ft(")p Fu('\).)22 b(If)17 b Fk(quote)p
+1187 1894 V 16 w(c)o(har)i Fu(is)e(zero,)f(the)g(\014lename)i(w)o(as)d
+(not)195 1949 y(in)h(an)f(em)o(b)q(edded)i(string.)1773
+2063 y(V)l(ariable)-1861 b Fi(rl_linebuf_func_t)22 b(*)d
+Fh(rl)p 626 2063 18 3 v 21 w(c)n(har)p 754 2063 V 21
+w(is)p 813 2063 V 21 w(quoted)p 1005 2063 V 21 w(p)195
+2118 y Fu(A)f(p)q(oin)o(ter)h(to)f(a)g(function)h(to)f(call)i(that)d
 (determines)j(whether)e(or)g(not)g(a)g(sp)q(eci\014c)j(c)o(haracter)195
-1230 y(in)d(the)f(line)i(bu\013er)e(is)h(quoted,)g(according)f(to)g
+2173 y(in)d(the)f(line)i(bu\013er)e(is)h(quoted,)g(according)f(to)g
 (whatev)o(er)f(quoting)i(mec)o(hanism)g(the)f(program)195
-1284 y(calling)d(Readline)g(uses.)19 b(The)13 b(function)g(is)g(called)
+2227 y(calling)d(Readline)g(uses.)19 b(The)13 b(function)g(is)g(called)
 h(with)f(t)o(w)o(o)e(argumen)o(ts:)17 b Fk(text)p Fu(,)12
-b(the)h(text)f(of)g(the)195 1339 y(line,)17 b(and)e Fk(index)p
+b(the)h(text)f(of)g(the)195 2282 y(line,)17 b(and)e Fk(index)p
 Fu(,)i(the)e(index)i(of)e(the)g(c)o(haracter)g(in)h(the)g(line.)22
-b(It)15 b(is)h(used)g(to)f(decide)i(whether)e(a)195 1394
+b(It)15 b(is)h(used)g(to)f(decide)i(whether)e(a)195 2337
 y(c)o(haracter)f(found)i(in)g Ft(rl_completer_word_break_)o(charact)o
-(ers)c Fu(should)k(b)q(e)g(used)g(to)e(break)195 1449
-y(w)o(ords)g(for)h(the)g(completer.)1773 1551 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 1551 V 21 w(completion)p 510
-1551 V 21 w(query)p 673 1551 V 21 w(items)195 1605 y
+(ers)c Fu(should)k(b)q(e)g(used)g(to)e(break)195 2392
+y(w)o(ords)g(for)h(the)g(completer.)1773 2506 y(V)l(ariable)-1861
+b Fi(int)20 b Fh(rl)p 215 2506 V 21 w(completion)p 510
+2506 V 21 w(query)p 673 2506 V 21 w(items)195 2560 y
 Fu(Up)e(to)g(this)g(man)o(y)g(items)g(will)i(b)q(e)f(displa)o(y)o(ed)g
 (in)g(resp)q(onse)g(to)e(a)h(p)q(ossible-completions)j(call.)195
-1660 y(After)14 b(that,)f(w)o(e)h(ask)g(the)h(user)f(if)h(she)f(is)h
+2615 y(After)14 b(that,)f(w)o(e)h(ask)g(the)h(user)f(if)h(she)f(is)h
 (sure)g(she)f(w)o(an)o(ts)f(to)h(see)h(them)f(all.)20
-b(The)15 b(default)g(v)m(alue)195 1715 y(is)h(100.)1773
-1817 y(V)l(ariable)-1861 b Fi(const)20 b(char)g(*)f Fh(rl)p
-436 1817 V 21 w(basic)p 580 1817 V 21 w(w)n(ord)p 725
-1817 V 21 w(break)p 886 1817 V 20 w(c)n(haracters)195
-1872 y Fu(The)j(basic)h(list)g(of)f(c)o(haracters)f(that)g(signal)i(a)f
+b(The)15 b(default)g(v)m(alue)195 2670 y(is)h(100.)p
+eop
+%%Page: 42 44
+42 43 bop 75 -58 a Fu(42)1299 b(GNU)15 b(Readline)h(Library)1773
+149 y(V)l(ariable)-1861 b Fi(const)20 b(char)g(*)f Fh(rl)p
+436 149 18 3 v 21 w(basic)p 580 149 V 21 w(w)n(ord)p
+725 149 V 21 w(break)p 886 149 V 20 w(c)n(haracters)195
+204 y Fu(The)j(basic)h(list)g(of)f(c)o(haracters)f(that)g(signal)i(a)f
 (break)g(b)q(et)o(w)o(een)g(w)o(ords)g(for)f(the)h(completer)195
-1926 y(routine.)30 b(The)19 b(default)g(v)m(alue)h(of)e(this)h(v)m
+259 y(routine.)30 b(The)19 b(default)g(v)m(alue)h(of)e(this)h(v)m
 (ariable)h(is)f(the)g(c)o(haracters)f(whic)o(h)h(break)g(w)o(ords)f
-(for)195 1981 y(completion)e(in)g(Bash:)k Ft(")15 b
-(\\t\\n\\"\\\\'`@$><=;|&{\(")p Fu(.)1773 2083 y(V)l(ariable)-1861
-b Fi(const)20 b(char)g(*)f Fh(rl)p 436 2083 V 21 w(basic)p
-580 2083 V 21 w(quote)p 740 2083 V 21 w(c)n(haracters)195
-2138 y Fu(A)c(list)h(of)f(quote)g(c)o(haracters)f(whic)o(h)i(can)g
-(cause)f(a)g(w)o(ord)g(break.)1773 2239 y(V)l(ariable)-1861
-b Fi(const)20 b(char)g(*)f Fh(rl)p 436 2239 V 21 w(completer)p
-705 2239 V 21 w(w)n(ord)p 850 2239 V 20 w(break)p 1010
-2239 V 20 w(c)n(haracters)195 2294 y Fu(The)33 b(list)g(of)f(c)o
+(for)195 314 y(completion)e(in)g(Bash:)k Ft(")15 b
+(\\t\\n\\"\\\\'`@$><=;|&{\(")p Fu(.)1773 430 y(V)l(ariable)-1861
+b Fi(const)20 b(char)g(*)f Fh(rl)p 436 430 V 21 w(basic)p
+580 430 V 21 w(quote)p 740 430 V 21 w(c)n(haracters)195
+485 y Fu(A)c(list)h(of)f(quote)g(c)o(haracters)f(whic)o(h)i(can)g
+(cause)f(a)g(w)o(ord)g(break.)1773 601 y(V)l(ariable)-1861
+b Fi(const)20 b(char)g(*)f Fh(rl)p 436 601 V 21 w(completer)p
+705 601 V 21 w(w)n(ord)p 850 601 V 20 w(break)p 1010
+601 V 20 w(c)n(haracters)195 656 y Fu(The)33 b(list)g(of)f(c)o
 (haracters)g(that)f(signal)j(a)e(break)g(b)q(et)o(w)o(een)h(w)o(ords)f
-(for)g Ft(rl_complete_)195 2349 y(internal\(\))p Fu(.)18
+(for)g Ft(rl_complete_)195 711 y(internal\(\))p Fu(.)18
 b(The)e(default)g(list)g(is)f(the)h(v)m(alue)g(of)f Ft
-(rl_basic_word_break_chara)o(cters)p Fu(.)1773 2451 y(V)l(ariable)-1861
-b Fi(const)20 b(char)g(*)f Fh(rl)p 436 2451 V 21 w(completer)p
-705 2451 V 21 w(quote)p 865 2451 V 20 w(c)n(haracters)195
-2506 y Fu(A)e(list)h(of)e(c)o(haracters)g(whic)o(h)i(can)f(b)q(e)g
-(used)h(to)e(quote)h(a)f(substring)h(of)g(the)g(line.)26
-b(Completion)195 2560 y(o)q(ccurs)13 b(on)h(the)f(en)o(tire)g
-(substring,)h(and)f(within)i(the)e(substring)g Ft
-(rl_completer_word_break_)195 2615 y(characters)j Fu(are)h(treated)g
-(as)h(an)o(y)f(other)g(c)o(haracter,)g(unless)i(they)e(also)h(app)q
-(ear)g(within)h(this)195 2670 y(list.)p eop
-%%Page: 42 44
-42 43 bop 75 -58 a Fu(42)1299 b(GNU)15 b(Readline)h(Library)1773
-149 y(V)l(ariable)-1861 b Fi(const)20 b(char)g(*)f Fh(rl)p
-436 149 18 3 v 21 w(\014lename)p 665 149 V 20 w(quote)p
-824 149 V 21 w(c)n(haracters)195 204 y Fu(A)e(list)h(of)e(c)o
-(haracters)g(that)g(cause)h(a)g(\014lename)h(to)e(b)q(e)i(quoted)e(b)o
-(y)h(the)g(completer)h(when)f(they)195 259 y(app)q(ear)e(in)h(a)f
-(completed)h(\014lename.)21 b(The)16 b(default)g(is)f(the)h(n)o(ull)g
-(string.)1773 376 y(V)l(ariable)-1861 b Fi(const)20 b(char)g(*)f
-Fh(rl)p 436 376 V 21 w(sp)r(ecial)p 623 376 V 22 w(pre\014xes)195
-431 y Fu(The)14 b(list)h(of)e(c)o(haracters)g(that)g(are)h(w)o(ord)f
+(rl_basic_word_break_chara)o(cters)p Fu(.)1773 828 y(V)l(ariable)-1861
+b Fi(const)20 b(char)g(*)f Fh(rl)p 436 828 V 21 w(completer)p
+705 828 V 21 w(quote)p 865 828 V 20 w(c)n(haracters)195
+882 y Fu(A)e(list)h(of)e(c)o(haracters)g(whic)o(h)i(can)f(b)q(e)g(used)
+h(to)e(quote)h(a)f(substring)h(of)g(the)g(line.)26 b(Completion)195
+937 y(o)q(ccurs)13 b(on)h(the)f(en)o(tire)g(substring,)h(and)f(within)i
+(the)e(substring)g Ft(rl_completer_word_break_)195 992
+y(characters)j Fu(are)h(treated)g(as)h(an)o(y)f(other)g(c)o(haracter,)g
+(unless)i(they)e(also)h(app)q(ear)g(within)h(this)195
+1047 y(list.)1773 1163 y(V)l(ariable)-1861 b Fi(const)20
+b(char)g(*)f Fh(rl)p 436 1163 V 21 w(\014lename)p 665
+1163 V 20 w(quote)p 824 1163 V 21 w(c)n(haracters)195
+1218 y Fu(A)e(list)h(of)e(c)o(haracters)g(that)g(cause)h(a)g
+(\014lename)h(to)e(b)q(e)i(quoted)e(b)o(y)h(the)g(completer)h(when)f
+(they)195 1273 y(app)q(ear)e(in)h(a)f(completed)h(\014lename.)21
+b(The)16 b(default)g(is)f(the)h(n)o(ull)g(string.)1773
+1389 y(V)l(ariable)-1861 b Fi(const)20 b(char)g(*)f Fh(rl)p
+436 1389 V 21 w(sp)r(ecial)p 623 1389 V 22 w(pre\014xes)195
+1444 y Fu(The)14 b(list)h(of)e(c)o(haracters)g(that)g(are)h(w)o(ord)f
 (break)h(c)o(haracters,)f(but)h(should)h(b)q(e)f(left)g(in)h
-Fk(text)f Fu(when)195 486 y(it)f(is)f(passed)h(to)f(the)g(completion)h
+Fk(text)f Fu(when)195 1499 y(it)f(is)f(passed)h(to)f(the)g(completion)h
 (function.)20 b(Programs)11 b(can)h(use)h(this)g(to)f(help)h(determine)
-h(what)195 541 y(kind)i(of)e(completing)i(to)e(do.)19
+h(what)195 1554 y(kind)i(of)e(completing)i(to)e(do.)19
 b(F)l(or)14 b(instance,)i(Bash)e(sets)h(this)g(v)m(ariable)h(to)e
-Ft(")p Fu($)p Ft(@")g Fu(so)g(that)g(it)h(can)195 596
+Ft(")p Fu($)p Ft(@")g Fu(so)g(that)g(it)h(can)195 1608
 y(complete)h(shell)h(v)m(ariables)f(and)g(hostnames.)1773
-713 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 713
-V 21 w(completion)p 510 713 V 21 w(app)r(end)p 715 713
-V 19 w(c)n(haracter)195 768 y Fu(When)d(a)f(single)i(completion)g
+1725 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 1725
+V 21 w(completion)p 510 1725 V 21 w(app)r(end)p 715 1725
+V 19 w(c)n(haracter)195 1780 y Fu(When)d(a)f(single)i(completion)g
 (alternativ)o(e)f(matc)o(hes)f(at)g(the)h(end)g(of)f(the)h(command)f
-(line,)j(this)195 823 y(c)o(haracter)10 b(is)h(app)q(ended)i(to)d(the)g
-(inserted)i(completion)g(text.)18 b(The)11 b(default)g(is)g(a)g(space)g
-(c)o(haracter)195 877 y(\(`)j('\).)19 b(Setting)14 b(this)f(to)g(the)g
-(n)o(ull)i(c)o(haracter)e(\(`)p Ft(\\0)p Fu('\))e(prev)o(en)o(ts)i(an)o
-(ything)h(b)q(eing)h(app)q(ended)f(auto-)195 932 y(matically)l(.)21
-b(This)15 b(can)f(b)q(e)h(c)o(hanged)g(in)g(custom)f(completion)i
-(functions)f(to)f(pro)o(vide)h(the)f(\\most)195 987 y(sensible)i(w)o
-(ord)c(separator)h(c)o(haracter")f(according)i(to)f(an)h
-(application-sp)q(eci\014c)j(command)c(line)195 1042
-y(syn)o(tax)h(sp)q(eci\014cation.)1773 1159 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 1159 V 21 w(ignore)p 391 1159
-V 20 w(completion)p 685 1159 V 21 w(duplicates)195 1214
+(line,)j(this)195 1834 y(c)o(haracter)10 b(is)h(app)q(ended)i(to)d(the)
+g(inserted)i(completion)g(text.)18 b(The)11 b(default)g(is)g(a)g(space)
+g(c)o(haracter)195 1889 y(\(`)j('\).)19 b(Setting)14
+b(this)f(to)g(the)g(n)o(ull)i(c)o(haracter)e(\(`)p Ft(\\0)p
+Fu('\))e(prev)o(en)o(ts)i(an)o(ything)h(b)q(eing)h(app)q(ended)f(auto-)
+195 1944 y(matically)l(.)21 b(This)15 b(can)f(b)q(e)h(c)o(hanged)g(in)g
+(custom)f(completion)i(functions)f(to)f(pro)o(vide)h(the)f(\\most)195
+1999 y(sensible)i(w)o(ord)c(separator)h(c)o(haracter")f(according)i(to)
+f(an)h(application-sp)q(eci\014c)j(command)c(line)195
+2054 y(syn)o(tax)h(sp)q(eci\014cation.)1773 2170 y(V)l(ariable)-1861
+b Fi(int)20 b Fh(rl)p 215 2170 V 21 w(ignore)p 391 2170
+V 20 w(completion)p 685 2170 V 21 w(duplicates)195 2225
 y Fu(If)15 b(non-zero,)h(then)f(duplicates)i(in)f(the)f(matc)o(hes)g
 (are)g(remo)o(v)o(ed.)k(The)d(default)g(is)f(1.)1773
-1331 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 1331
-V 21 w(\014lename)p 444 1331 V 20 w(completion)p 738
-1331 V 21 w(desired)195 1386 y Fu(Non-zero)c(means)g(that)f(the)h
+2341 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 2341
+V 21 w(\014lename)p 444 2341 V 20 w(completion)p 738
+2341 V 21 w(desired)195 2396 y Fu(Non-zero)c(means)g(that)f(the)h
 (results)g(of)g(the)g(matc)o(hes)f(are)h(to)f(b)q(e)i(treated)e(as)g
-(\014lenames.)23 b(This)195 1441 y(is)14 b Fl(always)j
+(\014lenames.)23 b(This)195 2451 y(is)14 b Fl(always)j
 Fu(zero)c(on)g(en)o(try)l(,)g(and)h(can)f(only)h(b)q(e)g(c)o(hanged)f
-(within)i(a)e(completion)h(en)o(try)f(generator)195 1496
+(within)i(a)e(completion)h(en)o(try)f(generator)195 2506
 y(function.)38 b(If)21 b(it)g(is)g(set)g(to)f(a)g(non-zero)h(v)m(alue,)
 i(directory)e(names)g(ha)o(v)o(e)g(a)f(slash)h(app)q(ended)195
-1551 y(and)d(Readline)h(attempts)d(to)h(quote)g(completed)i
+2560 y(and)d(Readline)h(attempts)d(to)h(quote)g(completed)i
 (\014lenames)f(if)g(they)g(con)o(tain)g(an)o(y)f(c)o(haracters)195
-1605 y(in)f Ft(rl_filename_quote_character)o(s)d Fu(and)i
+2615 y(in)f Ft(rl_filename_quote_character)o(s)d Fu(and)i
 Ft(rl_filename_quoting_desired)d Fu(is)k(set)f(to)f(a)195
-1660 y(non-zero)h(v)m(alue.)1773 1778 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 1778 V 21 w(\014lename)p 444
-1778 V 20 w(quoting)p 653 1778 V 21 w(desired)195 1832
-y Fu(Non-zero)14 b(means)g(that)f(the)i(results)f(of)g(the)g(matc)o
-(hes)f(are)h(to)f(b)q(e)i(quoted)f(using)h(double)g(quotes)195
-1887 y(\(or)c(an)h(application-sp)q(eci\014)q(c)j(quoting)d(mec)o
-(hanism\))g(if)h(the)f(completed)h(\014lename)g(con)o(tains)f(an)o(y)
-195 1942 y(c)o(haracters)i(in)i Ft(rl_filename_quote_chars)p
-Fu(.)h(This)f(is)f Fl(always)k Fu(non-zero)d(on)f(en)o(try)l(,)f(and)i
-(can)195 1997 y(only)c(b)q(e)g(c)o(hanged)g(within)h(a)f(completion)g
-(en)o(try)g(generator)e(function.)20 b(The)12 b(quoting)g(is)g
-(e\013ected)195 2052 y(via)j(a)g(call)i(to)d(the)i(function)g(p)q(oin)o
-(ted)g(to)e(b)o(y)h Ft(rl_filename_quoting_function)p
-Fu(.)1773 2169 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p
-215 2169 V 21 w(attempted)p 495 2169 V 20 w(completion)p
-789 2169 V 21 w(o)n(v)n(er)195 2224 y Fu(If)47 b(an)g(application-sp)q
-(eci\014)q(c)j(completion)e(function)g(assigned)f(to)g
-Ft(rl_attempted_)195 2279 y(completion_function)24 b
-Fu(sets)i(this)h(v)m(ariable)h(to)e(a)g(non-zero)h(v)m(alue,)j
-(Readline)e(will)g(not)195 2333 y(p)q(erform)15 b(its)g(default)g
-(\014lename)h(completion)g(ev)o(en)f(if)g(the)g(application's)h
-(completion)g(function)195 2388 y(returns)f(no)g(matc)o(hes.)20
-b(It)15 b(should)h(b)q(e)g(set)f(only)h(b)o(y)f(an)g(application's)h
-(completion)h(function.)1773 2506 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 2506 V 21 w(completion)p 510
-2506 V 21 w(t)n(yp)r(e)195 2560 y Fu(Set)e(to)e(a)i(c)o(haracter)f
-(describing)i(the)e(t)o(yp)q(e)h(of)f(completion)i(Readline)g(is)f
-(curren)o(tly)g(attempt-)195 2615 y(ing;)g(see)f(the)f(description)i
-(of)f Ft(rl_complete_internal\(\))c Fu(\(see)k(Section)h(2.6.2)d
-([Completion)195 2670 y(F)l(unctions],)g(page)g(39\))g(for)f(the)h
-(list)h(of)f(c)o(haracters.)p eop
+2670 y(non-zero)h(v)m(alue.)p eop
 %%Page: 43 45
 43 44 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
 (Readline)843 b(43)1773 149 y(V)l(ariable)-1861 b Fi(int)20
-b Fh(rl)p 215 149 18 3 v 21 w(inhibit)p 399 149 V 23
-w(completion)195 204 y Fu(If)14 b(this)h(v)m(ariable)g(is)g(non-zero,)f
-(completion)i(is)e(inhibited.)22 b(The)15 b(completion)g(c)o(haracter)e
-(will)j(b)q(e)195 259 y(inserted)g(as)f(an)o(y)g(other)g(b)q(ound)h(to)
-e Ft(self-insert)p Fu(.)1773 376 y(V)l(ariable)-1861
-b Fi(rl_compignore_func_t)22 b(*)d Fh(rl)p 704 376 V
-22 w(ignore)p 881 376 V 20 w(some)p 1028 376 V 19 w(completions)p
-1344 376 V 21 w(function)195 431 y Fu(This)g(function,)i(if)e
+b Fh(rl)p 215 149 18 3 v 21 w(\014lename)p 444 149 V
+20 w(quoting)p 653 149 V 21 w(desired)195 204 y Fu(Non-zero)14
+b(means)g(that)f(the)i(results)f(of)g(the)g(matc)o(hes)f(are)h(to)f(b)q
+(e)i(quoted)f(using)h(double)g(quotes)195 259 y(\(or)c(an)h
+(application-sp)q(eci\014)q(c)j(quoting)d(mec)o(hanism\))g(if)h(the)f
+(completed)h(\014lename)g(con)o(tains)f(an)o(y)195 314
+y(c)o(haracters)i(in)i Ft(rl_filename_quote_chars)p Fu(.)h(This)f(is)f
+Fl(always)k Fu(non-zero)d(on)f(en)o(try)l(,)f(and)i(can)195
+369 y(only)c(b)q(e)g(c)o(hanged)g(within)h(a)f(completion)g(en)o(try)g
+(generator)e(function.)20 b(The)12 b(quoting)g(is)g(e\013ected)195
+423 y(via)j(a)g(call)i(to)d(the)i(function)g(p)q(oin)o(ted)g(to)e(b)o
+(y)h Ft(rl_filename_quoting_function)p Fu(.)1773 524
+y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 524 V 21
+w(attempted)p 495 524 V 20 w(completion)p 789 524 V 21
+w(o)n(v)n(er)195 579 y Fu(If)47 b(an)g(application-sp)q(eci\014)q(c)j
+(completion)e(function)g(assigned)f(to)g Ft(rl_attempted_)195
+633 y(completion_function)24 b Fu(sets)i(this)h(v)m(ariable)h(to)e(a)g
+(non-zero)h(v)m(alue,)j(Readline)e(will)g(not)195 688
+y(p)q(erform)15 b(its)g(default)g(\014lename)h(completion)g(ev)o(en)f
+(if)g(the)g(application's)h(completion)g(function)195
+743 y(returns)f(no)g(matc)o(hes.)20 b(It)15 b(should)h(b)q(e)g(set)f
+(only)h(b)o(y)f(an)g(application's)h(completion)h(function.)1773
+844 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 844
+V 21 w(completion)p 510 844 V 21 w(t)n(yp)r(e)195 898
+y Fu(Set)e(to)e(a)i(c)o(haracter)f(describing)i(the)e(t)o(yp)q(e)h(of)f
+(completion)i(Readline)g(is)f(curren)o(tly)g(attempt-)195
+953 y(ing;)g(see)f(the)f(description)i(of)f Ft
+(rl_complete_internal\(\))c Fu(\(see)k(Section)h(2.6.2)d([Completion)
+195 1008 y(F)l(unctions],)g(page)g(40\))g(for)f(the)h(list)h(of)f(c)o
+(haracters.)1773 1108 y(V)l(ariable)-1861 b Fi(int)20
+b Fh(rl)p 215 1108 V 21 w(inhibit)p 399 1108 V 23 w(completion)195
+1163 y Fu(If)14 b(this)h(v)m(ariable)g(is)g(non-zero,)f(completion)i
+(is)e(inhibited.)22 b(The)15 b(completion)g(c)o(haracter)e(will)j(b)q
+(e)195 1218 y(inserted)g(as)f(an)o(y)g(other)g(b)q(ound)h(to)e
+Ft(self-insert)p Fu(.)1773 1318 y(V)l(ariable)-1861 b
+Fi(rl_compignore_func_t)22 b(*)d Fh(rl)p 704 1318 V 22
+w(ignore)p 881 1318 V 20 w(some)p 1028 1318 V 19 w(completions)p
+1344 1318 V 21 w(function)195 1373 y Fu(This)g(function,)i(if)e
 (de\014ned,)i(is)e(called)h(b)o(y)f(the)g(completer)g(when)h(real)f
-(\014lename)h(completion)195 486 y(is)e(done,)f(after)f(all)i(the)f
+(\014lename)h(completion)195 1428 y(is)e(done,)f(after)f(all)i(the)f
 (matc)o(hing)g(names)g(ha)o(v)o(e)g(b)q(een)h(generated.)25
-b(It)17 b(is)h(passed)f(a)g Ft(NULL)f Fu(ter-)195 540
+b(It)17 b(is)h(passed)f(a)g Ft(NULL)f Fu(ter-)195 1483
 y(minated)g(arra)o(y)e(of)h(matc)o(hes.)20 b(The)c(\014rst)f(elemen)o
 (t)h(\()p Ft(matches[0])p Fu(\))d(is)j(the)g(maximal)g(substring)195
-595 y(common)e(to)g(all)h(matc)o(hes.)k(This)c(function)g(can)g
+1538 y(common)e(to)g(all)h(matc)o(hes.)k(This)c(function)g(can)g
 (re-arrange)f(the)g(list)h(of)f(matc)o(hes)g(as)g(required,)195
-650 y(but)h(eac)o(h)h(elemen)o(t)g(deleted)g(from)f(the)g(arra)o(y)f(m)
-o(ust)g(b)q(e)i(freed.)1773 767 y(V)l(ariable)-1861 b
-Fi(rl_icppfunc_t)21 b(*)e Fh(rl)p 521 767 V 21 w(directory)p
-769 767 V 22 w(completion)p 1065 767 V 21 w(ho)r(ok)195
-822 y Fu(This)k(function,)i(if)e(de\014ned,)j(is)d(allo)o(w)o(ed)g(to)f
-(mo)q(dify)h(the)g(directory)g(p)q(ortion)g(of)f(\014lenames)195
-877 y(Readline)e(completes.)29 b(It)19 b(is)f(called)i(with)f(the)f
+1592 y(but)h(eac)o(h)h(elemen)o(t)g(deleted)g(from)f(the)g(arra)o(y)f
+(m)o(ust)g(b)q(e)i(freed.)1773 1693 y(V)l(ariable)-1861
+b Fi(rl_icppfunc_t)21 b(*)e Fh(rl)p 521 1693 V 21 w(directory)p
+769 1693 V 22 w(completion)p 1065 1693 V 21 w(ho)r(ok)195
+1748 y Fu(This)k(function,)i(if)e(de\014ned,)j(is)d(allo)o(w)o(ed)g(to)
+f(mo)q(dify)h(the)g(directory)g(p)q(ortion)g(of)f(\014lenames)195
+1802 y(Readline)e(completes.)29 b(It)19 b(is)f(called)i(with)f(the)f
 (address)h(of)e(a)h(string)h(\(the)f(curren)o(t)g(directory)195
-932 y(name\))g(as)g(an)h(argumen)o(t,)f(and)h(ma)o(y)f(mo)q(dify)h
+1857 y(name\))g(as)g(an)h(argumen)o(t,)f(and)h(ma)o(y)f(mo)q(dify)h
 (that)f(string.)30 b(If)19 b(the)f(string)h(is)g(replaced)h(with)195
-986 y(a)g(new)g(string,)h(the)f(old)g(v)m(alue)h(should)g(b)q(e)g
+1912 y(a)g(new)g(string,)h(the)f(old)g(v)m(alue)h(should)g(b)q(e)g
 (freed.)34 b(An)o(y)20 b(mo)q(di\014ed)i(directory)e(name)g(should)195
-1041 y(ha)o(v)o(e)14 b(a)g(trailing)i(slash.)k(The)15
+1967 y(ha)o(v)o(e)14 b(a)g(trailing)i(slash.)k(The)15
 b(mo)q(di\014ed)h(v)m(alue)g(will)g(b)q(e)f(displa)o(y)o(ed)h(as)e
-(part)g(of)h(the)f(completion,)195 1096 y(replacing)h(the)g(directory)f
+(part)g(of)h(the)f(completion,)195 2022 y(replacing)h(the)g(directory)f
 (p)q(ortion)g(of)g(the)g(pathname)g(the)h(user)f(t)o(yp)q(ed.)20
-b(It)14 b(returns)g(an)g(in)o(teger)195 1151 y(that)i(should)h(b)q(e)g
+b(It)14 b(returns)g(an)g(in)o(teger)195 2076 y(that)i(should)h(b)q(e)g
 (non-zero)g(if)g(the)g(function)g(mo)q(di\014es)h(its)e(directory)h
-(argumen)o(t.)23 b(It)17 b(could)g(b)q(e)195 1205 y(used)f(to)e(expand)
+(argumen)o(t.)23 b(It)17 b(could)g(b)q(e)195 2131 y(used)f(to)e(expand)
 i(sym)o(b)q(olic)h(links)f(or)f(shell)i(v)m(ariables)f(in)g(pathnames.)
-1773 1323 y(V)l(ariable)-1861 b Fi(rl_compdisp_func_t)22
-b(*)d Fh(rl)p 652 1323 V 21 w(completion)p 947 1323 V
-21 w(displa)n(y)p 1141 1323 V 22 w(matc)n(hes)p 1366
-1323 V 21 w(ho)r(ok)195 1377 y Fu(If)11 b(non-zero,)h(then)f(this)h(is)
+1773 2232 y(V)l(ariable)-1861 b Fi(rl_compdisp_func_t)22
+b(*)d Fh(rl)p 652 2232 V 21 w(completion)p 947 2232 V
+21 w(displa)n(y)p 1141 2232 V 22 w(matc)n(hes)p 1366
+2232 V 21 w(ho)r(ok)195 2286 y Fu(If)11 b(non-zero,)h(then)f(this)h(is)
 f(the)g(address)g(of)g(a)g(function)g(to)g(call)h(when)f(completing)i
-(a)d(w)o(ord)h(w)o(ould)195 1432 y(normally)h(displa)o(y)g(the)f(list)h
+(a)d(w)o(ord)h(w)o(ould)195 2341 y(normally)h(displa)o(y)g(the)f(list)h
 (of)f(p)q(ossible)h(matc)o(hes.)18 b(This)12 b(function)g(is)g(called)g
-(in)g(lieu)h(of)e(Readline)195 1487 y(displa)o(ying)21
+(in)g(lieu)h(of)e(Readline)195 2396 y(displa)o(ying)21
 b(the)d(list.)32 b(It)19 b(tak)o(es)f(three)h(argumen)o(ts:)26
 b(\()p Ft(char)14 b(**)p Fk(matc)o(hes)p Fu(,)19 b Ft(int)f
-Fk(n)o(um)p 1688 1487 14 2 v 17 w(matc)o(hes)p Fu(,)195
-1542 y Ft(int)13 b Fk(max)p 368 1542 V 16 w(length)p
+Fk(n)o(um)p 1688 2396 14 2 v 17 w(matc)o(hes)p Fu(,)195
+2451 y Ft(int)13 b Fk(max)p 368 2451 V 16 w(length)p
 Fu(\))i(where)f Fk(matc)o(hes)h Fu(is)f(the)g(arra)o(y)f(of)g(matc)o
-(hing)h(strings,)g Fk(n)o(um)p 1578 1542 V 16 w(matc)o(hes)i
-Fu(is)e(the)195 1597 y(n)o(um)o(b)q(er)h(of)f(strings)h(in)h(that)e
-(arra)o(y)l(,)f(and)i Fk(max)p 1012 1597 V 16 w(length)h
+(hing)h(strings,)g Fk(n)o(um)p 1578 2451 V 16 w(matc)o(hes)i
+Fu(is)e(the)195 2506 y(n)o(um)o(b)q(er)h(of)f(strings)h(in)h(that)e
+(arra)o(y)l(,)f(and)i Fk(max)p 1012 2506 V 16 w(length)h
 Fu(is)f(the)g(length)g(of)g(the)f(longest)h(string)g(in)195
-1651 y(that)e(arra)o(y)l(.)19 b(Readline)c(pro)o(vides)g(a)e(con)o(v)o
+2560 y(that)e(arra)o(y)l(.)19 b(Readline)c(pro)o(vides)g(a)e(con)o(v)o
 (enience)j(function,)f Ft(rl_display_match_list)p Fu(,)c(that)195
-1706 y(tak)o(es)17 b(care)g(of)g(doing)h(the)f(displa)o(y)i(to)d
+2615 y(tak)o(es)17 b(care)g(of)g(doing)h(the)f(displa)o(y)i(to)d
 (Readline's)j(output)e(stream.)26 b(That)16 b(function)j(ma)o(y)d(b)q
-(e)195 1761 y(called)h(from)d(this)i(ho)q(ok.)75 1873
-y Fj(2.6.4)30 b(A)21 b(Short)f(Completion)g(Example)137
-1969 y Fu(Here)11 b(is)f(a)g(small)h(application)h(demonstrating)e(the)
-g(use)h(of)e(the)i(GNU)f(Readline)h(library)l(.)19 b(It)11
-b(is)f(called)75 2024 y Ft(fileman)p Fu(,)17 b(and)h(the)g(source)g(co)
-q(de)g(resides)h(in)f(`)p Ft(examples/fileman.c)p Fu('.)25
-b(This)18 b(sample)g(application)75 2079 y(pro)o(vides)c(completion)g
+(e)195 2670 y(called)h(from)d(this)i(ho)q(ok.)p eop
+%%Page: 44 46
+44 45 bop 75 -58 a Fu(44)1299 b(GNU)15 b(Readline)h(Library)75
+149 y Fj(2.6.4)30 b(A)21 b(Short)f(Completion)g(Example)137
+246 y Fu(Here)11 b(is)f(a)g(small)h(application)h(demonstrating)e(the)g
+(use)h(of)e(the)i(GNU)f(Readline)h(library)l(.)19 b(It)11
+b(is)f(called)75 301 y Ft(fileman)p Fu(,)17 b(and)h(the)g(source)g(co)q
+(de)g(resides)h(in)f(`)p Ft(examples/fileman.c)p Fu('.)25
+b(This)18 b(sample)g(application)75 355 y(pro)o(vides)c(completion)g
 (of)e(command)h(names,)g(line)i(editing)g(features,)d(and)i(access)f
 (to)f(the)h(history)h(list.)p eop
-%%Page: 44 46
-44 45 bop 75 -58 a Fu(44)1299 b(GNU)15 b(Readline)h(Library)195
-149 y Ft(/*)24 b(fileman.c)e(--)i(A)g(tiny)f(application)f(which)h
-(demonstrates)g(how)g(to)h(use)f(the)267 201 y(GNU)g(Readline)g
-(library.)46 b(This)24 b(application)e(interactively)g(allows)h(users)
-267 253 y(to)g(manipulate)g(files)g(and)g(their)g(modes.)h(*/)195
-357 y(#include)f(<stdio.h>)195 409 y(#include)g(<sys/types.h>)195
-461 y(#include)g(<sys/file.h>)195 513 y(#include)g(<sys/stat.h>)195
-565 y(#include)g(<sys/errno.h>)195 668 y(#include)g
-(<readline/readline.h>)195 720 y(#include)g(<readline/history.h>)195
-824 y(extern)g(char)g(*xmalloc)g(\(\);)195 928 y(/*)h(The)f(names)g(of)
-h(functions)e(that)i(actually)f(do)g(the)h(manipulation.)e(*/)195
-980 y(int)h(com_list)g(__P\(\(char)g(*\)\);)195 1032
-y(int)g(com_view)g(__P\(\(char)g(*\)\);)195 1083 y(int)g(com_rename)g
-(__P\(\(char)g(*\)\);)195 1135 y(int)g(com_stat)g(__P\(\(char)g(*\)\);)
-195 1187 y(int)g(com_pwd)g(__P\(\(char)g(*\)\);)195 1239
-y(int)g(com_delete)g(__P\(\(char)g(*\)\);)195 1291 y(int)g(com_help)g
-(__P\(\(char)g(*\)\);)195 1343 y(int)g(com_cd)g(__P\(\(char)g(*\)\);)
-195 1395 y(int)g(com_quit)g(__P\(\(char)g(*\)\);)195
-1499 y(/*)h(A)f(structure)g(which)g(contains)g(information)f(on)i(the)f
-(commands)g(this)g(program)267 1550 y(can)g(understand.)f(*/)195
-1654 y(typedef)h(struct)g({)243 1706 y(char)g(*name;)g(/*)h(User)f
-(printable)g(name)g(of)h(the)f(function.)g(*/)243 1758
-y(rl_icpfunc_t)f(*func;)h(/*)h(Function)e(to)i(call)f(to)h(do)f(the)h
-(job.)f(*/)243 1810 y(char)g(*doc;)g(/*)h(Documentation)e(for)h(this)h
-(function.)46 b(*/)195 1862 y(})24 b(COMMAND;)195 1966
-y(COMMAND)f(commands[])f(=)i({)243 2017 y({)f("cd",)h(com_cd,)f
-("Change)f(to)i(directory)f(DIR")g(},)243 2069 y({)g("delete",)g
-(com_delete,)f("Delete)h(FILE")h(},)243 2121 y({)f("help",)g(com_help,)
-g("Display)g(this)g(text")g(},)243 2173 y({)g("?",)h(com_help,)e
-("Synonym)h(for)h(`help'")f(},)243 2225 y({)g("list",)g(com_list,)g
-("List)g(files)g(in)h(DIR")f(},)243 2277 y({)g("ls",)h(com_list,)e
-("Synonym)h(for)g(`list'")g(},)243 2329 y({)g("pwd",)g(com_pwd,)g
-("Print)g(the)h(current)f(working)g(directory")f(},)243
-2381 y({)h("quit",)g(com_quit,)g("Quit)g(using)g(Fileman")g(},)243
-2433 y({)g("rename",)g(com_rename,)f("Rename)h(FILE)h(to)f(NEWNAME")g
-(},)243 2484 y({)g("stat",)g(com_stat,)g("Print)g(out)g(statistics)g
-(on)h(FILE")f(},)243 2536 y({)g("view",)g(com_view,)g("View)g(the)h
-(contents)e(of)i(FILE")f(},)243 2588 y({)g(\(char)h(*\)NULL,)f
-(\(rl_icpfunc_t)f(*\)NULL,)h(\(char)g(*\)NULL)g(})195
-2640 y(};)p eop
 %%Page: 45 47
 45 46 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(45)195 201 y Ft(/*)24 b(Forward)e(declarations.)h(*/)
-195 253 y(char)g(*stripwhite)g(\(\);)195 305 y(COMMAND)g(*find_command)
-f(\(\);)195 409 y(/*)i(The)f(name)g(of)h(this)f(program,)g(as)h(taken)f
-(from)g(argv[0].)g(*/)195 461 y(char)g(*progname;)195
-565 y(/*)h(When)f(non-zero,)g(this)g(means)g(the)g(user)h(is)f(done)h
-(using)f(this)g(program.)g(*/)195 616 y(int)g(done;)195
-720 y(char)g(*)195 772 y(dupstr)g(\(s\))314 824 y(int)h(s;)195
-876 y({)243 928 y(char)f(*r;)243 1032 y(r)g(=)h(xmalloc)f(\(strlen)g
-(\(s\))g(+)h(1\);)243 1083 y(strcpy)f(\(r,)g(s\);)243
-1135 y(return)g(\(r\);)195 1187 y(})195 1291 y(main)g(\(argc,)g(argv\))
-314 1343 y(int)h(argc;)314 1395 y(char)g(**argv;)195
-1447 y({)243 1499 y(char)f(*line,)g(*s;)243 1602 y(progname)f(=)i
-(argv[0];)243 1706 y(initialize_readline)d(\(\);)i(/*)h(Bind)f(our)h
-(completer.)e(*/)243 1810 y(/*)h(Loop)h(reading)f(and)g(executing)g
-(lines)g(until)g(the)g(user)h(quits.)f(*/)243 1862 y(for)g(\()h(;)g
-(done)f(==)h(0;)f(\))290 1914 y({)338 1966 y(line)g(=)h(readline)f
-(\("FileMan:)f("\);)338 2069 y(if)i(\(!line\))386 2121
-y(break;)338 2225 y(/*)g(Remove)f(leading)g(and)g(trailing)g
-(whitespace)f(from)i(the)f(line.)410 2277 y(Then,)g(if)h(there)f(is)g
-(anything)g(left,)g(add)h(it)f(to)h(the)f(history)g(list)410
-2329 y(and)g(execute)g(it.)h(*/)338 2381 y(s)g(=)g(stripwhite)e
-(\(line\);)338 2484 y(if)i(\(*s\))386 2536 y({)434 2588
-y(add_history)e(\(s\);)434 2640 y(execute_line)g(\(s\);)p
-eop
+(Readline)843 b(45)195 149 y Ft(/*)24 b(fileman.c)e(--)i(A)g(tiny)f
+(application)f(which)h(demonstrates)g(how)g(to)h(use)f(the)267
+201 y(GNU)g(Readline)g(library.)46 b(This)24 b(application)e
+(interactively)g(allows)h(users)267 253 y(to)g(manipulate)g(files)g
+(and)g(their)g(modes.)h(*/)195 357 y(#include)f(<stdio.h>)195
+409 y(#include)g(<sys/types.h>)195 461 y(#include)g(<sys/file.h>)195
+513 y(#include)g(<sys/stat.h>)195 565 y(#include)g(<sys/errno.h>)195
+668 y(#include)g(<readline/readline.h>)195 720 y(#include)g
+(<readline/history.h>)195 824 y(extern)g(char)g(*xmalloc)g(\(\);)195
+928 y(/*)h(The)f(names)g(of)h(functions)e(that)i(actually)f(do)g(the)h
+(manipulation.)e(*/)195 980 y(int)h(com_list)g(__P\(\(char)g(*\)\);)195
+1032 y(int)g(com_view)g(__P\(\(char)g(*\)\);)195 1083
+y(int)g(com_rename)g(__P\(\(char)g(*\)\);)195 1135 y(int)g(com_stat)g
+(__P\(\(char)g(*\)\);)195 1187 y(int)g(com_pwd)g(__P\(\(char)g(*\)\);)
+195 1239 y(int)g(com_delete)g(__P\(\(char)g(*\)\);)195
+1291 y(int)g(com_help)g(__P\(\(char)g(*\)\);)195 1343
+y(int)g(com_cd)g(__P\(\(char)g(*\)\);)195 1395 y(int)g(com_quit)g
+(__P\(\(char)g(*\)\);)195 1499 y(/*)h(A)f(structure)g(which)g(contains)
+g(information)f(on)i(the)f(commands)g(this)g(program)267
+1550 y(can)g(understand.)f(*/)195 1654 y(typedef)h(struct)g({)243
+1706 y(char)g(*name;)g(/*)h(User)f(printable)g(name)g(of)h(the)f
+(function.)g(*/)243 1758 y(rl_icpfunc_t)f(*func;)h(/*)h(Function)e(to)i
+(call)f(to)h(do)f(the)h(job.)f(*/)243 1810 y(char)g(*doc;)g(/*)h
+(Documentation)e(for)h(this)h(function.)46 b(*/)195 1862
+y(})24 b(COMMAND;)195 1966 y(COMMAND)f(commands[])f(=)i({)243
+2017 y({)f("cd",)h(com_cd,)f("Change)f(to)i(directory)f(DIR")g(},)243
+2069 y({)g("delete",)g(com_delete,)f("Delete)h(FILE")h(},)243
+2121 y({)f("help",)g(com_help,)g("Display)g(this)g(text")g(},)243
+2173 y({)g("?",)h(com_help,)e("Synonym)h(for)h(`help'")f(},)243
+2225 y({)g("list",)g(com_list,)g("List)g(files)g(in)h(DIR")f(},)243
+2277 y({)g("ls",)h(com_list,)e("Synonym)h(for)g(`list'")g(},)243
+2329 y({)g("pwd",)g(com_pwd,)g("Print)g(the)h(current)f(working)g
+(directory")f(},)243 2381 y({)h("quit",)g(com_quit,)g("Quit)g(using)g
+(Fileman")g(},)243 2433 y({)g("rename",)g(com_rename,)f("Rename)h(FILE)
+h(to)f(NEWNAME")g(},)243 2484 y({)g("stat",)g(com_stat,)g("Print)g(out)
+g(statistics)g(on)h(FILE")f(},)243 2536 y({)g("view",)g(com_view,)g
+("View)g(the)h(contents)e(of)i(FILE")f(},)243 2588 y({)g(\(char)h
+(*\)NULL,)f(\(rl_icpfunc_t)f(*\)NULL,)h(\(char)g(*\)NULL)g(})195
+2640 y(};)p eop
 %%Page: 46 48
-46 47 bop 75 -58 a Fu(46)1299 b(GNU)15 b(Readline)h(Library)386
-149 y Ft(})338 253 y(free)23 b(\(line\);)290 305 y(})243
-357 y(exit)g(\(0\);)195 409 y(})195 513 y(/*)h(Execute)e(a)i(command)f
-(line.)g(*/)195 565 y(int)195 616 y(execute_line)f(\(line\))314
-668 y(char)i(*line;)195 720 y({)243 772 y(register)e(int)i(i;)243
+46 47 bop 75 -58 a Fu(46)1299 b(GNU)15 b(Readline)h(Library)195
+201 y Ft(/*)24 b(Forward)e(declarations.)h(*/)195 253
+y(char)g(*stripwhite)g(\(\);)195 305 y(COMMAND)g(*find_command)f(\(\);)
+195 409 y(/*)i(The)f(name)g(of)h(this)f(program,)g(as)h(taken)f(from)g
+(argv[0].)g(*/)195 461 y(char)g(*progname;)195 565 y(/*)h(When)f
+(non-zero,)g(this)g(means)g(the)g(user)h(is)f(done)h(using)f(this)g
+(program.)g(*/)195 616 y(int)g(done;)195 720 y(char)g(*)195
+772 y(dupstr)g(\(s\))314 824 y(int)h(s;)195 876 y({)243
+928 y(char)f(*r;)243 1032 y(r)g(=)h(xmalloc)f(\(strlen)g(\(s\))g(+)h
+(1\);)243 1083 y(strcpy)f(\(r,)g(s\);)243 1135 y(return)g(\(r\);)195
+1187 y(})195 1291 y(main)g(\(argc,)g(argv\))314 1343
+y(int)h(argc;)314 1395 y(char)g(**argv;)195 1447 y({)243
+1499 y(char)f(*line,)g(*s;)243 1602 y(progname)f(=)i(argv[0];)243
+1706 y(initialize_readline)d(\(\);)i(/*)h(Bind)f(our)h(completer.)e(*/)
+243 1810 y(/*)h(Loop)h(reading)f(and)g(executing)g(lines)g(until)g(the)
+g(user)h(quits.)f(*/)243 1862 y(for)g(\()h(;)g(done)f(==)h(0;)f(\))290
+1914 y({)338 1966 y(line)g(=)h(readline)f(\("FileMan:)f("\);)338
+2069 y(if)i(\(!line\))386 2121 y(break;)338 2225 y(/*)g(Remove)f
+(leading)g(and)g(trailing)g(whitespace)f(from)i(the)f(line.)410
+2277 y(Then,)g(if)h(there)f(is)g(anything)g(left,)g(add)h(it)f(to)h
+(the)f(history)g(list)410 2329 y(and)g(execute)g(it.)h(*/)338
+2381 y(s)g(=)g(stripwhite)e(\(line\);)338 2484 y(if)i(\(*s\))386
+2536 y({)434 2588 y(add_history)e(\(s\);)434 2640 y(execute_line)g
+(\(s\);)p eop
+%%Page: 47 49
+47 48 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)843 b(47)386 149 y Ft(})338 253 y(free)23 b(\(line\);)290
+305 y(})243 357 y(exit)g(\(0\);)195 409 y(})195 513 y(/*)h(Execute)e(a)
+i(command)f(line.)g(*/)195 565 y(int)195 616 y(execute_line)f(\(line\))
+314 668 y(char)i(*line;)195 720 y({)243 772 y(register)e(int)i(i;)243
 824 y(COMMAND)f(*command;)243 876 y(char)g(*word;)243
 980 y(/*)g(Isolate)g(the)h(command)f(word.)g(*/)243 1032
 y(i)g(=)h(0;)243 1083 y(while)f(\(line[i])g(&&)g(whitespace)g
@@ -4040,22 +4101,21 @@ y(i)g(=)h(0;)243 1083 y(while)f(\(line[i])g(&&)g(whitespace)g
 (and)h(return)f(a)g(pointer)g(to)h(that)267 2588 y(command.)46
 b(Return)23 b(a)h(NULL)f(pointer)g(if)h(NAME)f(isn't)g(a)h(command)f
 (name.)g(*/)195 2640 y(COMMAND)g(*)p eop
-%%Page: 47 49
-47 48 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(47)195 149 y Ft(find_command)22 b(\(name\))314
-201 y(char)i(*name;)195 253 y({)243 305 y(register)e(int)i(i;)243
-409 y(for)f(\(i)h(=)f(0;)h(commands[i].name;)e(i++\))290
-461 y(if)i(\(strcmp)f(\(name,)g(commands[i].name\))f(==)h(0\))338
-513 y(return)g(\(&commands[i]\);)243 616 y(return)g(\(\(COMMAND)f
-(*\)NULL\);)195 668 y(})195 772 y(/*)i(Strip)f(whitespace)f(from)i(the)
-f(start)g(and)h(end)f(of)h(STRING.)46 b(Return)24 b(a)f(pointer)267
-824 y(into)g(STRING.)g(*/)195 876 y(char)g(*)195 928
-y(stripwhite)f(\(string\))314 980 y(char)i(*string;)195
-1032 y({)243 1083 y(register)e(char)i(*s,)f(*t;)243 1187
-y(for)g(\(s)h(=)f(string;)g(whitespace)g(\(*s\);)g(s++\))290
-1239 y(;)243 1343 y(if)g(\(*s)h(==)f(0\))290 1395 y(return)g(\(s\);)243
-1499 y(t)g(=)h(s)g(+)g(strlen)f(\(s\))g(-)h(1;)243 1550
-y(while)f(\(t)g(>)h(s)g(&&)g(whitespace)e(\(*t\)\))290
+%%Page: 48 50
+48 49 bop 75 -58 a Fu(48)1299 b(GNU)15 b(Readline)h(Library)195
+149 y Ft(find_command)22 b(\(name\))314 201 y(char)i(*name;)195
+253 y({)243 305 y(register)e(int)i(i;)243 409 y(for)f(\(i)h(=)f(0;)h
+(commands[i].name;)e(i++\))290 461 y(if)i(\(strcmp)f(\(name,)g
+(commands[i].name\))f(==)h(0\))338 513 y(return)g(\(&commands[i]\);)243
+616 y(return)g(\(\(COMMAND)f(*\)NULL\);)195 668 y(})195
+772 y(/*)i(Strip)f(whitespace)f(from)i(the)f(start)g(and)h(end)f(of)h
+(STRING.)46 b(Return)24 b(a)f(pointer)267 824 y(into)g(STRING.)g(*/)195
+876 y(char)g(*)195 928 y(stripwhite)f(\(string\))314
+980 y(char)i(*string;)195 1032 y({)243 1083 y(register)e(char)i(*s,)f
+(*t;)243 1187 y(for)g(\(s)h(=)f(string;)g(whitespace)g(\(*s\);)g(s++\))
+290 1239 y(;)243 1343 y(if)g(\(*s)h(==)f(0\))290 1395
+y(return)g(\(s\);)243 1499 y(t)g(=)h(s)g(+)g(strlen)f(\(s\))g(-)h(1;)
+243 1550 y(while)f(\(t)g(>)h(s)g(&&)g(whitespace)e(\(*t\)\))290
 1602 y(t--;)243 1654 y(*++t)h(=)h('\\0';)243 1758 y(return)f(s;)195
 1810 y(})195 1914 y(/*)h(***********************)o(*******)o(********)o
 (*******)o(*******)o(********)o(****)d(*/)195 1966 y(/*)1575
@@ -4072,11 +4132,11 @@ y(complete)f(on)i(command)f(names)g(if)h(this)f(is)h(the)f(first)g
 (*/)195 2536 y(initialize_readline)d(\(\))195 2588 y({)243
 2640 y(/*)i(Allow)g(conditional)g(parsing)g(of)g(the)h(~/.inputrc)e
 (file.)h(*/)p eop
-%%Page: 48 50
-48 49 bop 75 -58 a Fu(48)1299 b(GNU)15 b(Readline)h(Library)243
-149 y Ft(rl_readline_name)21 b(=)j("FileMan";)243 253
-y(/*)f(Tell)h(the)f(completer)g(that)g(we)h(want)f(a)h(crack)f(first.)g
-(*/)243 305 y(rl_attempted_completion_)o(functio)o(n)e(=)j
+%%Page: 49 51
+49 50 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)843 b(49)243 149 y Ft(rl_readline_name)21 b(=)j("FileMan";)
+243 253 y(/*)f(Tell)h(the)f(completer)g(that)g(we)h(want)f(a)h(crack)f
+(first.)g(*/)243 305 y(rl_attempted_completion_)o(functio)o(n)e(=)j
 (fileman_completion;)195 357 y(})195 461 y(/*)g(Attempt)e(to)i
 (complete)f(on)g(the)h(contents)f(of)g(TEXT.)47 b(START)23
 b(and)h(END)267 513 y(bound)f(the)g(region)g(of)h(rl_line_buffer)e
@@ -4110,11 +4170,11 @@ y(includes)23 b(saving)g(the)h(length)f(of)g(TEXT)h(for)f(efficiency,)f
 243 2381 y(if)g(\(!state\))290 2433 y({)338 2484 y(list_index)g(=)g(0;)
 338 2536 y(len)h(=)f(strlen)g(\(text\);)290 2588 y(})p
 eop
-%%Page: 49 51
-49 50 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(49)243 149 y Ft(/*)23 b(Return)g(the)h(next)f(name)g
-(which)h(partially)e(matches)h(from)g(the)314 201 y(command)g(list.)g
-(*/)243 253 y(while)g(\(name)g(=)h(commands[list_index].name)o(\))290
+%%Page: 50 52
+50 51 bop 75 -58 a Fu(50)1299 b(GNU)15 b(Readline)h(Library)243
+149 y Ft(/*)23 b(Return)g(the)h(next)f(name)g(which)h(partially)e
+(matches)h(from)g(the)314 201 y(command)g(list.)g(*/)243
+253 y(while)g(\(name)g(=)h(commands[list_index].name)o(\))290
 305 y({)338 357 y(list_index++;)338 461 y(if)g(\(strncmp)f(\(name,)g
 (text,)g(len\))g(==)h(0\))386 513 y(return)f(\(dupstr\(name\)\);)290
 565 y(})243 668 y(/*)g(If)h(no)f(names)h(matched,)e(then)i(return)f
@@ -4138,19 +4198,20 @@ b(This)24 b(is)f(for)h(the)f(LIST,)g(VIEW)h(and)f(RENAME)267
 (arg\);)243 2329 y(return)g(\(system)g(\(syscom\)\);)195
 2381 y(})195 2484 y(com_rename)f(\(arg\))314 2536 y(char)i(*arg;)195
 2588 y({)243 2640 y(too_dangerous)e(\("rename"\);)p eop
-%%Page: 50 52
-50 51 bop 75 -58 a Fu(50)1299 b(GNU)15 b(Readline)h(Library)243
-149 y Ft(return)23 b(\(1\);)195 201 y(})195 305 y(com_stat)g(\(arg\))
-314 357 y(char)h(*arg;)195 409 y({)243 461 y(struct)f(stat)g(finfo;)243
-565 y(if)g(\(!valid_argument)f(\("stat",)h(arg\)\))290
-616 y(return)g(\(1\);)243 720 y(if)g(\(stat)g(\(arg,)h(&finfo\))f(==)g
-(-1\))290 772 y({)338 824 y(perror)g(\(arg\);)338 876
-y(return)g(\(1\);)290 928 y(})243 1032 y(printf)g(\("Statistics)f(for)h
-(`\045s':\\n",)g(arg\);)243 1135 y(printf)g(\("\045s)g(has)h(\045d)f
-(link\045s,)g(and)g(is)h(\045d)g(byte\045s)f(in)g(length.\\n",)g(arg,)
-434 1187 y(finfo.st_nlink,)434 1239 y(\(finfo.st_nlink)e(==)j(1\))g(?)f
-("")h(:)g("s",)434 1291 y(finfo.st_size,)434 1343 y(\(finfo.st_size)e
-(==)h(1\))h(?)f("")h(:)g("s"\);)243 1395 y(printf)f(\("Inode)g(Last)g
+%%Page: 51 53
+51 52 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)843 b(51)243 149 y Ft(return)23 b(\(1\);)195
+201 y(})195 305 y(com_stat)g(\(arg\))314 357 y(char)h(*arg;)195
+409 y({)243 461 y(struct)f(stat)g(finfo;)243 565 y(if)g
+(\(!valid_argument)f(\("stat",)h(arg\)\))290 616 y(return)g(\(1\);)243
+720 y(if)g(\(stat)g(\(arg,)h(&finfo\))f(==)g(-1\))290
+772 y({)338 824 y(perror)g(\(arg\);)338 876 y(return)g(\(1\);)290
+928 y(})243 1032 y(printf)g(\("Statistics)f(for)h(`\045s':\\n",)g
+(arg\);)243 1135 y(printf)g(\("\045s)g(has)h(\045d)f(link\045s,)g(and)g
+(is)h(\045d)g(byte\045s)f(in)g(length.\\n",)g(arg,)434
+1187 y(finfo.st_nlink,)434 1239 y(\(finfo.st_nlink)e(==)j(1\))g(?)f("")
+h(:)g("s",)434 1291 y(finfo.st_size,)434 1343 y(\(finfo.st_size)e(==)h
+(1\))h(?)f("")h(:)g("s"\);)243 1395 y(printf)f(\("Inode)g(Last)g
 (Change)g(at:)g(\045s",)h(ctime)f(\(&finfo.st_ctime\)\);)243
 1447 y(printf)g(\(")143 b(Last)23 b(access)g(at:)g(\045s",)h(ctime)f
 (\(&finfo.st_atime\)\);)243 1499 y(printf)g(\(")95 b(Last)23
@@ -4165,20 +4226,20 @@ b(modified)g(at:)g(\045s",)h(ctime)f(\(&finfo.st_mtime\)\);)243
 (0;)243 2484 y(for)f(\(i)h(=)f(0;)h(commands[i].name;)e(i++\))290
 2536 y({)338 2588 y(if)i(\(!*arg)f(||)g(\(strcmp)g(\(arg,)g
 (commands[i].name\))f(==)i(0\)\))386 2640 y({)p eop
-%%Page: 51 53
-51 52 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(51)434 149 y Ft(printf)23 b(\("\045s\\t\\t\045s.\\n",)e
-(commands[i].name,)h(commands[i].doc\);)434 201 y(printed++;)386
-253 y(})290 305 y(})243 409 y(if)h(\(!printed\))290 461
-y({)338 513 y(printf)g(\("No)h(commands)e(match)h(`\045s'.)48
-b(Possibilties)22 b(are:\\n",)h(arg\);)338 616 y(for)h(\(i)f(=)h(0;)g
-(commands[i].name;)d(i++\))386 668 y({)434 720 y(/*)i(Print)g(in)h(six)
-f(columns.)g(*/)434 772 y(if)g(\(printed)g(==)h(6\))481
-824 y({)529 876 y(printed)f(=)h(0;)529 928 y(printf)f(\("\\n"\);)481
-980 y(})434 1083 y(printf)g(\("\045s\\t",)f(commands[i].name\);)434
-1135 y(printed++;)386 1187 y(})338 1291 y(if)i(\(printed\))386
-1343 y(printf)f(\("\\n"\);)290 1395 y(})243 1447 y(return)g(\(0\);)195
-1499 y(})195 1602 y(/*)h(Change)f(to)g(the)h(directory)e(ARG.)i(*/)195
+%%Page: 52 54
+52 53 bop 75 -58 a Fu(52)1299 b(GNU)15 b(Readline)h(Library)434
+149 y Ft(printf)23 b(\("\045s\\t\\t\045s.\\n",)e(commands[i].name,)h
+(commands[i].doc\);)434 201 y(printed++;)386 253 y(})290
+305 y(})243 409 y(if)h(\(!printed\))290 461 y({)338 513
+y(printf)g(\("No)h(commands)e(match)h(`\045s'.)48 b(Possibilties)22
+b(are:\\n",)h(arg\);)338 616 y(for)h(\(i)f(=)h(0;)g(commands[i].name;)d
+(i++\))386 668 y({)434 720 y(/*)i(Print)g(in)h(six)f(columns.)g(*/)434
+772 y(if)g(\(printed)g(==)h(6\))481 824 y({)529 876 y(printed)f(=)h(0;)
+529 928 y(printf)f(\("\\n"\);)481 980 y(})434 1083 y(printf)g
+(\("\045s\\t",)f(commands[i].name\);)434 1135 y(printed++;)386
+1187 y(})338 1291 y(if)i(\(printed\))386 1343 y(printf)f(\("\\n"\);)290
+1395 y(})243 1447 y(return)g(\(0\);)195 1499 y(})195
+1602 y(/*)h(Change)f(to)g(the)h(directory)e(ARG.)i(*/)195
 1654 y(com_cd)f(\(arg\))314 1706 y(char)h(*arg;)195 1758
 y({)243 1810 y(if)f(\(chdir)g(\(arg\))h(==)f(-1\))290
 1862 y({)338 1914 y(perror)g(\(arg\);)338 1966 y(return)g(1;)290
@@ -4188,32 +4249,35 @@ y({)243 1810 y(if)f(\(chdir)g(\(arg\))h(==)f(-1\))290
 2433 y(char)h(*ignore;)195 2484 y({)243 2536 y(char)f(dir[1024],)g(*s;)
 243 2640 y(s)g(=)h(getcwd)f(\(dir,)g(sizeof\(dir\))g(-)g(1\);)p
 eop
-%%Page: 52 54
-52 53 bop 75 -58 a Fu(52)1299 b(GNU)15 b(Readline)h(Library)243
-149 y Ft(if)23 b(\(s)h(==)f(0\))290 201 y({)338 253 y(printf)g
-(\("Error)g(getting)g(pwd:)g(\045s\\n",)g(dir\);)338
-305 y(return)g(1;)290 357 y(})243 461 y(printf)g(\("Current)f
-(directory)h(is)h(\045s\\n",)f(dir\);)243 513 y(return)g(0;)195
-565 y(})195 668 y(/*)h(The)f(user)g(wishes)g(to)h(quit)f(using)g(this)h
-(program.)46 b(Just)24 b(set)f(DONE)267 720 y(non-zero.)f(*/)195
-772 y(com_quit)h(\(arg\))314 824 y(char)h(*arg;)195 876
-y({)243 928 y(done)f(=)h(1;)243 980 y(return)f(\(0\);)195
-1032 y(})195 1135 y(/*)h(Function)e(which)i(tells)f(you)g(that)g(you)h
-(can't)f(do)h(this.)f(*/)195 1187 y(too_dangerous)f(\(caller\))314
-1239 y(char)i(*caller;)195 1291 y({)243 1343 y(fprintf)f(\(stderr,)457
-1395 y("\045s:)h(Too)f(dangerous)g(for)g(me)h(to)g(distribute.)46
-b(Write)23 b(it)h(yourself.\\n",)p 1987 1405 21 42 v
-457 1447 a(caller\);)195 1499 y(})195 1602 y(/*)g(Return)f(non-zero)f
-(if)i(ARG)f(is)h(a)g(valid)f(argument)g(for)g(CALLER,)g(else)g(print)
-267 1654 y(an)g(error)g(message)g(and)h(return)f(zero.)g(*/)195
-1706 y(int)195 1758 y(valid_argument)f(\(caller,)h(arg\))314
-1810 y(char)h(*caller,)e(*arg;)195 1862 y({)243 1914
-y(if)h(\(!arg)g(||)h(!*arg\))290 1966 y({)338 2017 y(fprintf)f
-(\(stderr,)g("\045s:)g(Argument)g(required.\\n",)f(caller\);)338
-2069 y(return)h(\(0\);)290 2121 y(})243 2225 y(return)g(\(1\);)195
-2277 y(})p eop
 %%Page: 53 55
-53 54 bop 75 -58 a Fu(Concept)15 b(Index)1466 b(53)75
+53 54 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)843 b(53)243 149 y Ft(if)23 b(\(s)h(==)f(0\))290
+201 y({)338 253 y(printf)g(\("Error)g(getting)g(pwd:)g(\045s\\n",)g
+(dir\);)338 305 y(return)g(1;)290 357 y(})243 461 y(printf)g
+(\("Current)f(directory)h(is)h(\045s\\n",)f(dir\);)243
+513 y(return)g(0;)195 565 y(})195 668 y(/*)h(The)f(user)g(wishes)g(to)h
+(quit)f(using)g(this)h(program.)46 b(Just)24 b(set)f(DONE)267
+720 y(non-zero.)f(*/)195 772 y(com_quit)h(\(arg\))314
+824 y(char)h(*arg;)195 876 y({)243 928 y(done)f(=)h(1;)243
+980 y(return)f(\(0\);)195 1032 y(})195 1135 y(/*)h(Function)e(which)i
+(tells)f(you)g(that)g(you)h(can't)f(do)h(this.)f(*/)195
+1187 y(too_dangerous)f(\(caller\))314 1239 y(char)i(*caller;)195
+1291 y({)243 1343 y(fprintf)f(\(stderr,)457 1395 y("\045s:)h(Too)f
+(dangerous)g(for)g(me)h(to)g(distribute.)46 b(Write)23
+b(it)h(yourself.\\n",)p 1987 1405 21 42 v 457 1447 a(caller\);)195
+1499 y(})195 1602 y(/*)g(Return)f(non-zero)f(if)i(ARG)f(is)h(a)g(valid)
+f(argument)g(for)g(CALLER,)g(else)g(print)267 1654 y(an)g(error)g
+(message)g(and)h(return)f(zero.)g(*/)195 1706 y(int)195
+1758 y(valid_argument)f(\(caller,)h(arg\))314 1810 y(char)h(*caller,)e
+(*arg;)195 1862 y({)243 1914 y(if)h(\(!arg)g(||)h(!*arg\))290
+1966 y({)338 2017 y(fprintf)f(\(stderr,)g("\045s:)g(Argument)g
+(required.\\n",)f(caller\);)338 2069 y(return)h(\(0\);)290
+2121 y(})243 2225 y(return)g(\(1\);)195 2277 y(})p eop
+%%Page: 54 56
+54 55 bop 75 -58 a Fu(54)1299 b(GNU)15 b(Readline)h(Library)p
+eop
+%%Page: 55 57
+55 56 bop 75 -58 a Fu(Concept)15 b(Index)1466 b(55)75
 149 y Fq(Concept)27 b(Index)75 321 y Fs(C)75 382 y Ff(command)14
 b(editing)e Fe(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
 g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)22
@@ -4243,12 +4307,12 @@ b Ff(4)1012 976 y Fs(Y)1012 1044 y Ff(y)o(anking)e(text)t
 Fe(.)7 b(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
 g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)17
 b Ff(2)p eop
-%%Page: 54 56
-54 55 bop 75 -58 a Fu(54)1299 b(GNU)15 b(Readline)h(Library)p
+%%Page: 56 58
+56 57 bop 75 -58 a Fu(56)1299 b(GNU)15 b(Readline)h(Library)p
 eop
-%%Page: 55 57
-55 56 bop 75 -58 a Fu(F)l(unction)16 b(and)f(V)l(ariable)i(Index)1187
-b(55)75 149 y Fq(F)-7 b(unction)26 b(and)h(V)-7 b(ariable)26
+%%Page: 57 59
+57 58 bop 75 -58 a Fu(F)l(unction)16 b(and)f(V)l(ariable)i(Index)1187
+b(57)75 149 y Fq(F)-7 b(unction)26 b(and)h(V)-7 b(ariable)26
 b(Index)p 79 307 21 3 v 75 369 a Fd(_rl_digit_)o(p)7
 b Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
 f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23
@@ -4256,7 +4320,7 @@ b Ff(34)75 415 y Fd(_rl_digit_)o(va)o(lue)6 b Fe(.)t(.)g(.)g(.)g(.)g(.)
 h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
 (.)g(.)h(.)f(.)g(.)20 b Ff(34)75 462 y Fd(_rl_lowerc)o(as)o(e_p)6
 b Fe(.)t(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)20 b Ff(33)75
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)20 b Ff(34)75
 508 y Fd(_rl_to_low)o(er)6 b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
 (.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
 g(.)h(.)f(.)22 b Ff(34)75 554 y Fd(_rl_to_upp)o(er)6
@@ -4264,7 +4328,7 @@ b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
 h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)22
 b Ff(34)75 600 y Fd(_rl_upperc)o(as)o(e_p)6 b Fe(.)t(.)g(.)g(.)g(.)g(.)
 h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)20 b Ff(33)75 733 y Fs(A)75 794 y
+(.)g(.)h(.)f(.)g(.)20 b Ff(34)75 733 y Fs(A)75 794 y
 Fd(abort)11 b(\(C-g\))5 b Fe(.)t(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
 g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
 (.)g(.)g(.)h(.)f(.)17 b Ff(17)75 841 y Fd(accept-lin)o(e)10
@@ -4289,7 +4353,7 @@ b(\(C-a\))c Fe(.)t(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
 (.)f(.)g(.)g(.)g(.)g(.)18 b Ff(12)75 1359 y(b)q(ell-st)o(yle)7
 b Fe(.)i(.)d(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
 g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)20 b Ff(4)75 1490 y Fs(C)75 1552 y Fd(call-last-)o(kb)o(d-m)
+(.)g(.)g(.)20 b Ff(5)75 1490 y Fs(C)75 1552 y Fd(call-last-)o(kb)o(d-m)
 o(ac)o(ro)9 b(\(C-x)j(e\))5 b Fe(.)h(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
 g(.)g(.)g(.)g(.)h(.)f(.)18 b Ff(17)75 1598 y Fd(capitalize)o(-w)o(ord)9
 b(\(M-c\))d Fe(.)f(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
@@ -4345,74 +4409,79 @@ Fe(.)c(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
 (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)24 b Ff(18)1012
 307 y Fd(dump-variab)o(le)o(s)10 b(\(\))e Fe(.)e(.)h(.)f(.)g(.)g(.)g(.)
 g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)23 b Ff(18)1012 465 y Fs(E)1012 537 y Ff(editing-mo)q(de)12
+(.)g(.)23 b Ff(18)1012 457 y Fs(E)1012 525 y Ff(editing-mo)q(de)12
 b Fe(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
 (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)22
-b Ff(5)1012 587 y(enable-k)o(eypad)9 b Fe(.)g(.)d(.)h(.)f(.)g(.)g(.)g
+b Ff(5)1012 575 y(enable-k)o(eypad)9 b Fe(.)g(.)d(.)h(.)f(.)g(.)g(.)g
 (.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)22 b Ff(5)1012 638 y Fd(end-kbd-mac)o(ro)9
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)22 b Ff(5)1012 624 y Fd(end-kbd-mac)o(ro)9
 b(\(C-x)i(\)\))e Fe(.)e(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)23 b Ff(16)1012 689
+(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)23 b Ff(16)1012 673
 y Fd(end-of-hist)o(or)o(y)10 b(\(M->\))d Fe(.)t(.)f(.)g(.)h(.)f(.)g(.)g
 (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)20
-b Ff(13)1012 740 y Fd(end-of-line)9 b(\(C-e\))e Fe(.)f(.)h(.)f(.)g(.)g
+b Ff(13)1012 723 y Fd(end-of-line)9 b(\(C-e\))e Fe(.)f(.)h(.)f(.)g(.)g
 (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)23 b Ff(12)1012 791 y Fd(exchange-po)o(in)o(t-a)o(nd)o(-ma)
+g(.)g(.)g(.)23 b Ff(12)1012 772 y Fd(exchange-po)o(in)o(t-a)o(nd)o(-ma)
 o(rk)9 b(\(C-x)j(C-x\))c Fe(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)24
-b Ff(17)1012 842 y(expand-tilde)6 b Fe(.)j(.)d(.)g(.)h(.)f(.)g(.)g(.)g
+b Ff(17)1012 821 y(expand-tilde)6 b Fe(.)j(.)d(.)g(.)h(.)f(.)g(.)g(.)g
 (.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)19 b Ff(5)1012 999 y
-Fs(F)1012 1070 y Fd(forward-bac)o(kw)o(ard)o(-d)o(ele)o(te)o(-ch)o(ar)9
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)19 b Ff(5)1012 970 y
+Fs(F)1012 1038 y Fd(forward-bac)o(kw)o(ard)o(-d)o(ele)o(te)o(-ch)o(ar)9
 b(\(\))f Fe(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)22
-b Ff(14)1012 1121 y Fd(forward-cha)o(r)10 b(\(C-f\))f
+b Ff(14)1012 1088 y Fd(forward-cha)o(r)10 b(\(C-f\))f
 Fe(.)s(.)e(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22 b Ff(12)1012 1172 y
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22 b Ff(12)1012 1137 y
 Fd(forward-sea)o(rc)o(h-h)o(is)o(tor)o(y)10 b(\(C-s\))e
 Fe(.)e(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)24
-b Ff(13)1012 1223 y Fd(forward-wor)o(d)10 b(\(M-f\))f
+b Ff(13)1012 1186 y Fd(forward-wor)o(d)10 b(\(M-f\))f
 Fe(.)s(.)e(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22 b Ff(12)1012 1373 y
-Fs(H)1012 1445 y Fd(history-sea)o(rc)o(h-b)o(ac)o(kwa)o(rd)9
-b(\(\))i Fe(.)c(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)25 b Ff(13)1012 1496 y Fd(history-sea)o(rc)o(h-f)o(or)o(war)o(d)10
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22 b Ff(12)1012 1328 y
+Fs(H)1012 1397 y Ff(history-preserv)o(e-p)q(oi)q(n)o(t)8
+b Fe(.)h(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)21 b Ff(5)1012 1446 y
+Fd(history-sea)o(rc)o(h-b)o(ac)o(kwa)o(rd)9 b(\(\))i
+Fe(.)c(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)25
+b Ff(13)1012 1496 y Fd(history-sea)o(rc)o(h-f)o(or)o(war)o(d)10
 b(\(\))s Fe(.)c(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)17 b Ff(13)1012 1546 y(horizon)o(tal-scrol)q(l-mo)r(de)6
+(.)g(.)g(.)17 b Ff(13)1012 1545 y(horizon)o(tal-scrol)q(l-mo)r(de)6
 b Fe(.)j(.)d(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19 b Ff(5)1012 1697 y
-Fs(I)1012 1768 y Ff(input-meta)8 b Fe(.)g(.)e(.)g(.)g(.)g(.)h(.)f(.)g
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19 b Ff(6)1012 1687 y
+Fs(I)1012 1755 y Ff(input-meta)8 b Fe(.)g(.)e(.)g(.)g(.)g(.)h(.)f(.)g
 (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 b Ff(6)1012 1819
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 b Ff(6)1012 1805
 y Fd(insert-comm)o(en)o(t)10 b(\(M-#\))d Fe(.)t(.)f(.)g(.)h(.)f(.)g(.)g
 (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)20
-b Ff(17)1012 1870 y Fd(insert-comp)o(le)o(tio)o(ns)9
+b Ff(17)1012 1854 y Fd(insert-comp)o(le)o(tio)o(ns)9
 b(\(M-*\))t Fe(.)c(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)18 b Ff(16)1012 1921 y(isearc)o(h-terminators)t
+(.)g(.)g(.)g(.)g(.)18 b Ff(16)1012 1903 y(isearc)o(h-terminators)t
 Fe(.)8 b(.)f(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
 g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)16 b Ff(6)1012
-2071 y Fs(K)1012 2143 y Ff(k)o(eymap)9 b Fe(.)e(.)f(.)h(.)f(.)g(.)g(.)g
+2046 y Fs(K)1012 2114 y Ff(k)o(eymap)9 b Fe(.)e(.)f(.)h(.)f(.)g(.)g(.)g
 (.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
 g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22
-b Ff(6)1012 2194 y Fd(kill-line)10 b(\(C-k\))f Fe(.)d(.)g(.)g(.)g(.)g
+b Ff(6)1012 2163 y Fd(kill-line)10 b(\(C-k\))f Fe(.)d(.)g(.)g(.)g(.)g
 (.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)24 b Ff(14)1012 2245 y Fd(kill-region)9
+g(.)g(.)h(.)f(.)g(.)24 b Ff(14)1012 2213 y Fd(kill-region)9
 b(\(\))i Fe(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
 (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25
-b Ff(15)1012 2295 y Fd(kill-whole-)o(li)o(ne)9 b(\(\))g
+b Ff(15)1012 2262 y Fd(kill-whole-)o(li)o(ne)9 b(\(\))g
 Fe(.)c(.)i(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22 b Ff(15)1012 2346 y
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22 b Ff(15)1012 2311 y
 Fd(kill-word)10 b(\(M-d\))f Fe(.)d(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
 (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-24 b Ff(15)1012 2497 y Fs(M)1012 2568 y Ff(mark-mo)q(di\014ed-li)q(nes)
+24 b Ff(15)1012 2454 y Fs(M)1012 2522 y Ff(mark-mo)q(di\014ed-li)q(nes)
 8 b Fe(.)h(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
 (.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 b Ff(6)1012
-2619 y Fd(menu-comple)o(te)9 b(\(\))g Fe(.)e(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)23 b Ff(16)1012 2670 y(meta-\015ag)t Fe(.)8 b(.)e(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)18
-b Ff(6)p eop
-%%Page: 56 58
-56 57 bop 75 -58 a Fu(56)1299 b(GNU)15 b(Readline)h(Library)75
+2571 y(matc)o(h-hidden-\014l)q(es)14 b Fe(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)24 b Ff(6)1012 2621 y Fd(menu-comple)o(te)9
+b(\(\))g Fe(.)e(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)23 b Ff(16)1012
+2670 y(meta-\015ag)t Fe(.)8 b(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)18 b Ff(6)p eop
+%%Page: 58 60
+58 59 bop 75 -58 a Fu(58)1299 b(GNU)15 b(Readline)h(Library)75
 149 y Fs(N)75 212 y Fd(next-histo)o(ry)9 b(\(C-n\))g
 Fe(.)t(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
 (.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)21 b Ff(12)75 258 y Fd(non-increm)o(en)o
@@ -4463,16 +4532,16 @@ h(.)f(.)g(.)g(.)g(.)g(.)22 b Ff(33)75 1678 y Fd(rl_already)o(_p)o(rom)o
 (pt)o(ed)t Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
 (.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(23)75
 1724 y Fd(rl_attempt)o(ed)o(_co)o(mp)o(let)o(ion)o(_f)o(unc)o(ti)o(on)t
-Fe(.)s(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)17 b Ff(40)75
+Fe(.)s(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)17 b Ff(41)75
 1771 y Fd(rl_attempt)o(ed)o(_co)o(mp)o(let)o(ion)o(_o)o(ver)6
 b Fe(.)s(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20
-b Ff(42)75 1817 y Fd(rl_basic_q)o(uo)o(te_)o(ch)o(ara)o(cte)o(rs)8
+b Ff(43)75 1817 y Fd(rl_basic_q)o(uo)o(te_)o(ch)o(ara)o(cte)o(rs)8
 b Fe(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-22 b Ff(41)75 1863 y Fd(rl_basic_w)o(or)o(d_b)o(re)o(ak_)o(cha)o(ra)o
+22 b Ff(42)75 1863 y Fd(rl_basic_w)o(or)o(d_b)o(re)o(ak_)o(cha)o(ra)o
 (cte)o(rs)5 b Fe(.)s(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)18
-b Ff(41)75 1910 y Fd(rl_begin_u)o(nd)o(o_g)o(ro)o(up)t
+b Ff(42)75 1910 y Fd(rl_begin_u)o(nd)o(o_g)o(ro)o(up)t
 Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(29)75 1956 y Fd(rl_bind_ke)o(y)7
+g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(30)75 1956 y Fd(rl_bind_ke)o(y)7
 b Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
 f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23
 b Ff(27)75 2002 y Fd(rl_bind_ke)o(y_)o(in_)o(ma)o(p)5
@@ -4503,38 +4572,38 @@ b Fe(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
 h(.)f(.)g(.)24 b Ff(32)75 2512 y Fd(rl_clear_s)o(ig)o(nal)o(s)6
 b Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
 g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)19 b Ff(38)1012
-149 y Fd(rl_complete)6 b Fe(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)24 b Ff(39)1012 196 y Fd(rl_complete)o(_i)o(nte)o(rn)o(al)s
+149 y Fd(rl_complete)6 b Fe(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+20 b Ff(39,)13 b(40)1012 196 y Fd(rl_complete)o(_i)o(nte)o(rn)o(al)s
 Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)17 b Ff(39)1012 242 y Fd(rl_complete)o(r_)o
+g(.)g(.)g(.)h(.)f(.)g(.)17 b Ff(40)1012 242 y Fd(rl_complete)o(r_)o
 (quo)o(te)o(_ch)o(ar)o(act)o(ers)5 b Fe(.)t(.)h(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)20 b Ff(41)1012 288 y Fd(rl_complete)o(r_)o(wor)o
+(.)g(.)g(.)g(.)g(.)20 b Ff(42)1012 288 y Fd(rl_complete)o(r_)o(wor)o
 (d_)o(bre)o(ak)o(_ch)o(ara)o(ct)o(ers)8 b Fe(.)e(.)g(.)g(.)h(.)f(.)g(.)
-25 b Ff(41)1012 335 y Fd(rl_completi)o(on)o(_ap)o(pe)o(nd_)o(ch)o(ara)o
+25 b Ff(42)1012 335 y Fd(rl_completi)o(on)o(_ap)o(pe)o(nd_)o(ch)o(ara)o
 (cte)o(r)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)19
 b Ff(42)1012 381 y Fd(rl_completi)o(on)o(_di)o(sp)o(lay)o(_m)o(atc)o
 (hes)o(_h)o(ook)8 b Fe(.)e(.)g(.)g(.)h(.)f(.)g(.)25 b
 Ff(43)1012 427 y Fd(rl_completi)o(on)o(_en)o(tr)o(y_f)o(un)o(cti)o(on)s
-Fe(.)s(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)17 b Ff(39,)c(40)1012
+Fe(.)s(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)17 b Ff(39,)c(41)1012
 474 y Fd(rl_completi)o(on)o(_ma)o(tc)o(hes)8 b Fe(.)f(.)f(.)g(.)g(.)g
 (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)25
 b Ff(40)1012 520 y Fd(rl_completi)o(on)o(_qu)o(er)o(y_i)o(te)o(ms)9
 b Fe(.)s(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
 23 b Ff(41)1012 566 y Fd(rl_completi)o(on)o(_ty)o(pe)t
 Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(42)1012 613 y
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(43)1012 613 y
 Fd(rl_copy_key)o(ma)o(p)8 b Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
 (.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
 h(.)21 b Ff(26)1012 659 y Fd(rl_copy_tex)o(t)6 b Fe(.)g(.)h(.)f(.)g(.)g
 (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 b Ff(31)1012 705 y
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 b Ff(32)1012 705 y
 Fd(rl_crlf)t Fe(.)t(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
 (.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)17 b Ff(30)1012 752 y Fd(rl_delete_t)o(ex)o(t)8
+f(.)g(.)g(.)g(.)g(.)h(.)17 b Ff(31)1012 752 y Fd(rl_delete_t)o(ex)o(t)8
 b Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
 f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)21 b
-Ff(31)1012 798 y Fd(rl_deprep_t)o(er)o(m_f)o(un)o(cti)o(on)7
+Ff(32)1012 798 y Fd(rl_deprep_t)o(er)o(m_f)o(un)o(cti)o(on)7
 b Fe(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
 g(.)g(.)24 b Ff(24)1012 844 y Fd(rl_deprep_t)o(er)o(min)o(al)t
 Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
@@ -4563,12 +4632,12 @@ g(.)g(.)21 b Ff(26)1012 1261 y Fd(rl_end)5 b Fe(.)t(.)h(.)g(.)h(.)f(.)g
 f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)18
 b Ff(22)1012 1308 y Fd(rl_end_undo)o(_g)o(rou)o(p)6 b
 Fe(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)19 b Ff(29)1012 1354
+(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)19 b Ff(30)1012 1354
 y Fd(rl_erase_em)o(pt)o(y_l)o(in)o(e)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h
 (.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)18
 b Ff(22)1012 1400 y Fd(rl_event_ho)o(ok)8 b Fe(.)s(.)e(.)h(.)f(.)g(.)g
 (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)22 b Ff(23)1012 1447 y Fd(rl_execute_)o(ne)o
+g(.)g(.)g(.)h(.)f(.)g(.)22 b Ff(24)1012 1447 y Fd(rl_execute_)o(ne)o
 (xt)7 b Fe(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
 (.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21
 b Ff(32)1012 1493 y Fd(rl_executin)o(g_)o(key)o(ma)o(p)t
@@ -4580,7 +4649,7 @@ o(mac)o(ro)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
 (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
 g(.)20 b Ff(31)1012 1632 y Fd(rl_explicit)o(_a)o(rg)7
 b Fe(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 b Ff(25)1012
+f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 b Ff(26)1012
 1678 y Fd(rl_extend_l)o(in)o(e_b)o(uf)o(fer)8 b Fe(.)f(.)f(.)g(.)g(.)g
 (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)25
 b Ff(33)1012 1725 y Fd(rl_filename)o(_c)o(omp)o(le)o(tio)o(n_)o(des)o
@@ -4593,13 +4662,13 @@ b Ff(41)1012 1864 y Fd(rl_filename)o(_q)o(uot)o(e_)o(cha)o(ra)o(cte)o
 (rs)7 b Fe(.)s(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)20
 b Ff(42)1012 1910 y Fd(rl_filename)o(_q)o(uot)o(in)o(g_d)o(es)o(ire)o
 (d)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)21
-b Ff(42)1012 1956 y Fd(rl_filename)o(_q)o(uot)o(in)o(g_f)o(un)o(cti)o
+b Ff(43)1012 1956 y Fd(rl_filename)o(_q)o(uot)o(in)o(g_f)o(un)o(cti)o
 (on)7 b Fe(.)s(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)20
 b Ff(41)1012 2003 y Fd(rl_forced_u)o(pd)o(ate)o(_d)o(isp)o(la)o(y)7
 b Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
 f(.)23 b Ff(30)1012 2049 y Fd(rl_free_lin)o(e_)o(sta)o(te)t
 Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(37)1012 2095
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(38)1012 2095
 y Fd(rl_free_und)o(o_)o(lis)o(t)6 b Fe(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g
 (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
 19 b Ff(30)1012 2142 y Fd(rl_function)o(_d)o(ump)o(er)t
@@ -4607,7 +4676,7 @@ Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
 g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(29)1012 2188
 y Fd(rl_function)o(_o)o(f_k)o(ey)o(seq)8 b Fe(.)f(.)f(.)g(.)g(.)g(.)g
 (.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)25
-b Ff(28)1012 2234 y Fd(rl_funmap_n)o(am)o(es)7 b Fe(.)s(.)f(.)g(.)h(.)f
+b Ff(29)1012 2234 y Fd(rl_funmap_n)o(am)o(es)7 b Fe(.)s(.)f(.)g(.)h(.)f
 (.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
 h(.)f(.)g(.)g(.)g(.)21 b Ff(29)1012 2281 y Fd(rl_generic_)o(bi)o(nd)7
 b Fe(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
@@ -4621,231 +4690,237 @@ h(.)f(.)g(.)22 b Ff(27)1012 2373 y Fd(rl_get_keym)o(ap)o(_by)o(_n)o
 g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(27)1012
 2466 y Fd(rl_get_scre)o(en)o(_si)o(ze)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.)
 f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
-(.)19 b Ff(38)1012 2512 y Fd(rl_getc)t Fe(.)t(.)6 b(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)17 b
-Ff(32)p eop
-%%Page: 57 59
-57 58 bop 75 -58 a Fu(F)l(unction)16 b(and)f(V)l(ariable)i(Index)1187
-b(57)75 149 y Fd(rl_getc_fu)o(nc)o(tio)o(n)6 b Fe(.)t(.)g(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)g(.)h(.)19 b Ff(24)75 195 y Fd(rl_gnu_rea)o(dl)o(ine)o(_p)5
+(.)19 b Ff(38)1012 2512 y Fd(rl_get_term)o(ca)o(p)8 b
+Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)21 b Ff(35)p
+eop
+%%Page: 59 61
+59 60 bop 75 -58 a Fu(F)l(unction)16 b(and)f(V)l(ariable)i(Index)1187
+b(59)75 149 y Fd(rl_getc)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)17 b Ff(32)75 195
+y Fd(rl_getc_fu)o(nc)o(tio)o(n)6 b Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+h(.)19 b Ff(24)75 241 y Fd(rl_gnu_rea)o(dl)o(ine)o(_p)5
 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19 b Ff(23)75 241
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19 b Ff(23)75 286
 y Fd(rl_ignore_)o(co)o(mpl)o(et)o(ion)o(_du)o(pl)o(ica)o(te)o(s)5
 b Fe(.)s(.)h(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)18 b Ff(42)75
-286 y Fd(rl_ignore_)o(so)o(me_)o(co)o(mpl)o(eti)o(on)o(s_f)o(un)o(cti)o
-(on)7 b Fe(.)g(.)f(.)g(.)g(.)g(.)24 b Ff(43)75 332 y
+332 y Fd(rl_ignore_)o(so)o(me_)o(co)o(mpl)o(eti)o(on)o(s_f)o(un)o(cti)o
+(on)7 b Fe(.)g(.)f(.)g(.)g(.)g(.)24 b Ff(43)75 378 y
 Fd(rl_inhibit)o(_c)o(omp)o(le)o(tio)o(n)9 b Fe(.)d(.)g(.)g(.)h(.)f(.)g
 (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25
-b Ff(43)75 378 y Fd(rl_initial)o(iz)o(e)9 b Fe(.)s(.)d(.)g(.)g(.)h(.)f
+b Ff(43)75 424 y Fd(rl_initial)o(iz)o(e)9 b Fe(.)s(.)d(.)g(.)g(.)h(.)f
 (.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)22 b Ff(33)75 424 y Fd(rl_insert_)o(co)o(mpl)o
+h(.)f(.)g(.)g(.)g(.)g(.)22 b Ff(33)75 469 y Fd(rl_insert_)o(co)o(mpl)o
 (et)o(ion)o(s)9 b Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25 b Ff(40)75 469 y Fd(rl_insert_)o(te)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25 b Ff(40)75 515 y Fd(rl_insert_)o(te)
 o(xt)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
 (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21
-b Ff(31)75 515 y Fd(rl_instrea)o(m)7 b Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g
+b Ff(31)75 561 y Fd(rl_instrea)o(m)7 b Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g
 (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 b Ff(23)75 561 y Fd(rl_invokin)o(g_)o
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 b Ff(23)75 606 y Fd(rl_invokin)o(g_)o
 (key)o(se)o(qs)t Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(28)75
-606 y Fd(rl_invokin)o(g_)o(key)o(se)o(qs_)o(in_)o(ma)o(p)8
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(29)75
+652 y Fd(rl_invokin)o(g_)o(key)o(se)o(qs_)o(in_)o(ma)o(p)8
 b Fe(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)21
-b Ff(29)75 652 y Fd(rl_kill_te)o(xt)6 b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+b Ff(29)75 698 y Fd(rl_kill_te)o(xt)6 b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g
 (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)22 b Ff(32)75 698 y Fd(rl_last_fu)o(nc)6
+g(.)g(.)g(.)g(.)h(.)f(.)22 b Ff(32)75 743 y Fd(rl_last_fu)o(nc)6
 b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
 h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)22
-b Ff(23)75 743 y Fd(rl_library)o(_v)o(ers)o(io)o(n)5
+b Ff(23)75 789 y Fd(rl_library)o(_v)o(ers)o(io)o(n)5
 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)18 b Ff(23)75 789 y Fd(rl_line_bu)o(ff)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)18 b Ff(23)75 835 y Fd(rl_line_bu)o(ff)
 o(er)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
 (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21
-b Ff(22)75 835 y Fd(rl_list_fu)o(nm)o(ap_)o(na)o(mes)s
+b Ff(22)75 880 y Fd(rl_list_fu)o(nm)o(ap_)o(na)o(mes)s
 Fe(.)s(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)16 b Ff(29)75 880 y Fd(rl_macro_b)o(in)o(d)9
+f(.)g(.)g(.)g(.)g(.)h(.)16 b Ff(29)75 926 y Fd(rl_macro_b)o(in)o(d)9
 b Fe(.)s(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
 h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)22
-b Ff(34)75 926 y Fd(rl_macro_d)o(um)o(per)6 b Fe(.)t(.)g(.)g(.)g(.)g(.)
+b Ff(34)75 972 y Fd(rl_macro_d)o(um)o(per)6 b Fe(.)t(.)g(.)g(.)g(.)g(.)
 h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)20 b Ff(34)75 972 y Fd(rl_make_ba)o(re)o(_ke)o(ym)o
+(.)g(.)h(.)f(.)g(.)20 b Ff(34)75 1017 y Fd(rl_make_ba)o(re)o(_ke)o(ym)o
 (ap)t Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(26)75 1017
+(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(26)75 1063
 y Fd(rl_make_ke)o(ym)o(ap)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
 g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)21 b Ff(26)75 1063 y Fd(rl_mark)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)g
+(.)g(.)21 b Ff(27)75 1109 y Fd(rl_mark)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)g
 (.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
 g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)17
-b Ff(22)75 1109 y Fd(rl_message)7 b Fe(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+b Ff(22)75 1154 y Fd(rl_message)7 b Fe(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g
 (.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)24 b Ff(31)75 1154 y Fd(rl_modifyi)o(ng)6
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)24 b Ff(31)75 1200 y Fd(rl_modifyi)o(ng)6
 b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
 h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)22
-b Ff(30)75 1200 y Fd(rl_named_f)o(un)o(cti)o(on)5 b Fe(.)s(.)i(.)f(.)g
+b Ff(30)75 1246 y Fd(rl_named_f)o(un)o(cti)o(on)5 b Fe(.)s(.)i(.)f(.)g
 (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)19 b Ff(28)75 1246 y Fd(rl_num_cha)o(rs)o(_to)o(_r)o
+g(.)g(.)g(.)g(.)19 b Ff(28)75 1291 y Fd(rl_num_cha)o(rs)o(_to)o(_r)o
 (ead)s Fe(.)s(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)16 b Ff(22)75 1291 y Fd(rl_numeric)o(_a)
+(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)16 b Ff(22)75 1337 y Fd(rl_numeric)o(_a)
 o(rg)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
 (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21
-b Ff(26)75 1337 y Fd(rl_on_new_)o(li)o(ne)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)
+b Ff(26)75 1383 y Fd(rl_on_new_)o(li)o(ne)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)
 h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)21 b Ff(30)75 1383 y Fd(rl_on_new_)o(li)o(ne_)o
+(.)h(.)f(.)g(.)g(.)g(.)21 b Ff(30)75 1428 y Fd(rl_on_new_)o(li)o(ne_)o
 (wi)o(th_)o(pro)o(mp)o(t)8 b Fe(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)21 b Ff(30)75 1428 y Fd(rl_outstre)o(am)6
+(.)g(.)g(.)g(.)h(.)f(.)21 b Ff(30)75 1474 y Fd(rl_outstre)o(am)6
 b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
 h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)22
-b Ff(23)75 1474 y Fd(rl_parse_a)o(nd)o(_bi)o(nd)5 b Fe(.)s(.)i(.)f(.)g
+b Ff(23)75 1520 y Fd(rl_parse_a)o(nd)o(_bi)o(nd)5 b Fe(.)s(.)i(.)f(.)g
 (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)19 b Ff(28)75 1520 y Fd(rl_pending)o(_i)o(npu)o(t)6
+g(.)g(.)g(.)g(.)19 b Ff(28)75 1565 y Fd(rl_pending)o(_i)o(npu)o(t)6
 b Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
 g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)19 b Ff(22)75
-1565 y Fd(rl_point)s Fe(.)s(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+1611 y Fd(rl_point)s Fe(.)s(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
 (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)16 b Ff(22)75 1611 y Fd(rl_possibl)o(e_)o
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)16 b Ff(22)75 1657 y Fd(rl_possibl)o(e_)o
 (com)o(pl)o(eti)o(ons)7 b Fe(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)23 b Ff(40)75 1657 y
+h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)23 b Ff(40)75 1702 y
 Fd(rl_pre_inp)o(ut)o(_ho)o(ok)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)
 f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19
-b Ff(23)75 1702 y Fd(rl_prep_te)o(rm)o(_fu)o(nc)o(tio)o(n)9
+b Ff(24)75 1748 y Fd(rl_prep_te)o(rm)o(_fu)o(nc)o(tio)o(n)9
 b Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)25 b Ff(24)75 1748 y Fd(rl_prep_te)o(rm)o(ina)o(l)6
+f(.)g(.)g(.)g(.)25 b Ff(24)75 1794 y Fd(rl_prep_te)o(rm)o(ina)o(l)6
 b Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)19 b Ff(32)75
-1794 y Fd(rl_prompt)8 b Fe(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)19 b Ff(33)75
+1840 y Fd(rl_prompt)8 b Fe(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
 (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)24 b Ff(22)75 1840 y Fd(rl_push_ma)o(cr)o(o_i)o(np)
+g(.)g(.)g(.)g(.)h(.)24 b Ff(23)75 1885 y Fd(rl_push_ma)o(cr)o(o_i)o(np)
 o(ut)t Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(32)75 1885
+(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(32)75 1931
 y Fd(rl_read_in)o(it)o(_fi)o(le)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h
 (.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-19 b Ff(28)75 1931 y Fd(rl_read_ke)o(y)7 b Fe(.)f(.)g(.)g(.)h(.)f(.)g
+19 b Ff(28)75 1977 y Fd(rl_read_ke)o(y)7 b Fe(.)f(.)g(.)g(.)h(.)f(.)g
 (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 b Ff(32)75 1977 y
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 b Ff(32)75 2022 y
 Fd(rl_readlin)o(e_)o(nam)o(e)6 b Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
 (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
-19 b Ff(23)75 2022 y Fd(rl_readlin)o(e_)o(sta)o(te)5
+19 b Ff(23)75 2068 y Fd(rl_readlin)o(e_)o(sta)o(te)5
 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19 b Ff(24)75 2068
-y Fd(rl_redispl)o(ay)6 b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)22 b Ff(30)75 2114 y Fd(rl_redispl)o(ay)o(_fu)o(nc)o(tio)o(n)9
-b Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)25 b Ff(24)75 2159 y Fd(rl_reset_a)o(ft)o(er_)o(si)o
-(gna)o(l)9 b Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)25 b Ff(38)75 2205 y Fd(rl_reset_l)o(in)o
-(e_s)o(ta)o(te)t Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(30)75
-2251 y Fd(rl_reset_t)o(er)o(min)o(al)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)19 b Ff(33)75 2296 y Fd(rl_resize_)o(te)o(rmi)o(na)o(l)5
-b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)18 b Ff(38)75 2342 y
-Fd(rl_restore)o(_p)o(rom)o(pt)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19
-b Ff(31)75 2388 y Fd(rl_save_pr)o(om)o(pt)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19 b Ff(24)75 2114
+y Fd(rl_readlin)o(e_)o(ver)o(si)o(on)t Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17
+b Ff(23)75 2159 y Fd(rl_redispl)o(ay)6 b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)h(.)f(.)22 b Ff(30)75 2205 y Fd(rl_redispl)o(ay)o(_fu)o
+(nc)o(tio)o(n)9 b Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25 b Ff(24)75 2251 y
+Fd(rl_reset_a)o(ft)o(er_)o(si)o(gna)o(l)9 b Fe(.)d(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25
+b Ff(38)75 2296 y Fd(rl_reset_l)o(in)o(e_s)o(ta)o(te)t
+Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(31)75 2342 y Fd(rl_reset_t)o(er)o
+(min)o(al)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19 b
+Ff(33)75 2388 y Fd(rl_resize_)o(te)o(rmi)o(na)o(l)5 b
+Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)18 b Ff(38)75 2433 y Fd(rl_restore)o(_p)
+o(rom)o(pt)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19
+b Ff(31)75 2479 y Fd(rl_save_pr)o(om)o(pt)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)
 h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)21 b Ff(31)75 2433 y Fd(rl_set_key)7
+(.)h(.)f(.)g(.)g(.)g(.)21 b Ff(31)75 2525 y Fd(rl_set_key)7
 b Fe(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
 g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)24
-b Ff(28)75 2479 y Fd(rl_set_key)o(bo)o(ard)o(_i)o(npu)o(t_t)o(im)o(eou)
-o(t)6 b Fe(.)s(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)19
-b Ff(32)1012 149 y Fd(rl_set_keym)o(ap)8 b Fe(.)s(.)e(.)h(.)f(.)g(.)g
+b Ff(28)1012 149 y Fd(rl_set_keyb)o(oa)o(rd_)o(in)o(put)o(_t)o(ime)o
+(out)5 b Fe(.)t(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)20
+b Ff(32)1012 195 y Fd(rl_set_keym)o(ap)8 b Fe(.)s(.)e(.)h(.)f(.)g(.)g
 (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)22 b Ff(27)1012 195 y Fd(rl_set_pare)o(n_)o
+g(.)g(.)g(.)h(.)f(.)g(.)22 b Ff(27)1012 241 y Fd(rl_set_pare)o(n_)o
 (bli)o(nk)o(_ti)o(me)o(out)7 b Fe(.)t(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)22 b Ff(34)1012 241 y Fd(rl_set_prom)o(pt)8
+(.)g(.)h(.)f(.)g(.)g(.)g(.)22 b Ff(34)1012 287 y Fd(rl_set_prom)o(pt)8
 b Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
 g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)22
-b Ff(31)1012 287 y Fd(rl_set_scre)o(en)o(_si)o(ze)t Fe(.)t(.)6
+b Ff(31)1012 333 y Fd(rl_set_scre)o(en)o(_si)o(ze)t Fe(.)t(.)6
 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(38)1012 334 y Fd(rl_set_sign)o(al)o(s)8
+(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(38)1012 379 y Fd(rl_set_sign)o(al)o(s)8
 b Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
 f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)21 b
-Ff(38)1012 380 y Fd(rl_show_cha)o(r)6 b Fe(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+Ff(38)1012 426 y Fd(rl_show_cha)o(r)6 b Fe(.)g(.)h(.)f(.)g(.)g(.)g(.)g
 (.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)23 b Ff(31)1012 426 y Fd(rl_special_)o(pr)o
+g(.)g(.)h(.)f(.)g(.)g(.)23 b Ff(31)1012 472 y Fd(rl_special_)o(pr)o
 (efi)o(xe)o(s)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
 h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)18 b Ff(42)1012
-472 y Fd(rl_startup_)o(ho)o(ok)7 b Fe(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g
+518 y Fd(rl_startup_)o(ho)o(ok)7 b Fe(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g
 (.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)21 b Ff(23)1012 518 y Fd(rl_stuff_ch)o(ar)8 b
+g(.)g(.)21 b Ff(23)1012 564 y Fd(rl_stuff_ch)o(ar)8 b
 Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
 (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)22
-b Ff(32)1012 564 y Fd(rl_terminal)o(_n)o(ame)6 b Fe(.)s(.)g(.)g(.)g(.)h
+b Ff(32)1012 610 y Fd(rl_terminal)o(_n)o(ame)6 b Fe(.)s(.)g(.)g(.)g(.)h
 (.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)20 b Ff(23)1012 610 y Fd(rl_tty_set_)o(de)o(fau)o(lt)o
+h(.)f(.)g(.)g(.)20 b Ff(23)1012 656 y Fd(rl_tty_set_)o(de)o(fau)o(lt)o
 (_bi)o(nd)o(ing)o(s)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)21 b Ff(33)1012 656 y Fd(rl_unbind_c)o(om)o(man)o(d_)o
+(.)h(.)f(.)g(.)21 b Ff(33)1012 702 y Fd(rl_unbind_c)o(om)o(man)o(d_)o
 (in_)o(ma)o(p)7 b Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)23 b Ff(28)1012 702 y Fd(rl_unbind_f)o(un)o(cti)o
+g(.)g(.)g(.)h(.)f(.)23 b Ff(28)1012 748 y Fd(rl_unbind_f)o(un)o(cti)o
 (on)o(_in)o(_m)o(ap)9 b Fe(.)s(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)23 b Ff(28)1012 748 y Fd(rl_unbind_k)o(ey)8
+(.)g(.)g(.)g(.)g(.)g(.)23 b Ff(28)1012 794 y Fd(rl_unbind_k)o(ey)8
 b Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
 g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)22
-b Ff(27)1012 794 y Fd(rl_unbind_k)o(ey)o(_in)o(_m)o(ap)s
+b Ff(28)1012 840 y Fd(rl_unbind_k)o(ey)o(_in)o(_m)o(ap)s
 Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)17 b Ff(27)1012 840 y Fd(rl_username)o(_c)o
+g(.)g(.)g(.)h(.)f(.)g(.)17 b Ff(28)1012 886 y Fd(rl_username)o(_c)o
 (omp)o(le)o(tio)o(n_)o(fun)o(cti)o(on)t Fe(.)s(.)7 b(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)18 b Ff(40)1012 886 y Fd(rl_variable)o(_b)o(ind)6
+g(.)h(.)f(.)g(.)18 b Ff(40)1012 932 y Fd(rl_variable)o(_b)o(ind)6
 b Fe(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
 h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)20 b Ff(34)1012
-932 y Fd(rl_variable)o(_d)o(ump)o(er)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f
+978 y Fd(rl_variable)o(_d)o(ump)o(er)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f
 (.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-19 b Ff(34)1012 1063 y Fs(S)1012 1125 y Fd(self-insert)9
+19 b Ff(34)1012 1109 y Fs(S)1012 1170 y Fd(self-insert)9
 b(\(a,)j(b,)g(A,)g(1,)g(!,)g(...)o(\))6 b Fe(.)g(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)20 b Ff(14)1012 1171 y Fd(set-mark)10
+h(.)f(.)g(.)g(.)g(.)20 b Ff(14)1012 1216 y Fd(set-mark)10
 b(\(C-@\))g Fe(.)c(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
 (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25
-b Ff(17)1012 1217 y(sho)o(w-all-if-am)o(bigu)q(ous)14
+b Ff(17)1012 1262 y(sho)o(w-all-if-am)o(bigu)q(ous)14
 b Fe(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)23 b Ff(6)1012 1263
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)23 b Ff(7)1012 1308
 y Fd(start-kbd-m)o(ac)o(ro)9 b(\(C-x)j(\(\))c Fe(.)d(.)i(.)f(.)g(.)g(.)
 g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)22
-b Ff(16)1012 1386 y Fs(T)1012 1448 y Fd(tab-insert)9
-b(\(M-)1281 1446 y Fn(h)p 1292 1420 74 2 v 1292 1448
-a Fm(T)m(AB)p 1292 1456 V 1364 1446 a Fn(i)1379 1448
+b Ff(16)1012 1432 y Fs(T)1012 1494 y Fd(tab-insert)9
+b(\(M-)1281 1492 y Fn(h)p 1292 1466 74 2 v 1292 1494
+a Fm(T)m(AB)p 1292 1501 V 1364 1492 a Fn(i)1379 1494
 y Fd(\))e Fe(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)20 b Ff(14)1012 1494
+f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)20 b Ff(14)1012 1540
 y Fd(tilde-expan)o(d)10 b(\(M-~\))f Fe(.)s(.)e(.)f(.)g(.)g(.)g(.)g(.)g
 (.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22
-b Ff(17)1012 1540 y Fd(transpose-c)o(ha)o(rs)9 b(\(C-t\))d
+b Ff(17)1012 1586 y Fd(transpose-c)o(ha)o(rs)9 b(\(C-t\))d
 Fe(.)f(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)20 b Ff(14)1012 1586 y Fd(transpose-w)o(or)o(ds)9
+(.)f(.)g(.)g(.)g(.)20 b Ff(14)1012 1632 y Fd(transpose-w)o(or)o(ds)9
 b(\(M-t\))d Fe(.)f(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20 b Ff(14)1012 1717 y
-Fs(U)1012 1779 y Fd(undo)12 b(\(C-_)f(or)h(C-x)g(C-u\))c
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20 b Ff(14)1012 1763 y
+Fs(U)1012 1825 y Fd(undo)12 b(\(C-_)f(or)h(C-x)g(C-u\))c
 Fe(.)t(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)21 b Ff(17)1012 1825 y Fd(universal-a)o(rg)o
+(.)g(.)h(.)f(.)g(.)g(.)21 b Ff(17)1012 1871 y Fd(universal-a)o(rg)o
 (ume)o(nt)9 b(\(\))d Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
 (.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20 b Ff(16)1012
-1871 y Fd(unix-line-d)o(is)o(car)o(d)10 b(\(C-u\))5 b
+1917 y Fd(unix-line-d)o(is)o(car)o(d)10 b(\(C-u\))5 b
 Fe(.)t(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)18 b Ff(15)1012 1917 y Fd(unix-word-r)o(ub)o(out)9
+(.)h(.)f(.)18 b Ff(15)1012 1963 y Fd(unix-word-r)o(ub)o(out)9
 b(\(C-w\))d Fe(.)t(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)19 b Ff(15)1012 1963 y Fd(upcase-word)9
+(.)g(.)g(.)g(.)h(.)f(.)g(.)19 b Ff(15)1012 2009 y Fd(upcase-word)9
 b(\(M-u\))e Fe(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
 (.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)23 b Ff(14)1012
-2094 y Fs(V)1012 2156 y Ff(visible-stats)14 b Fe(.)6
+2140 y Fs(V)1012 2201 y Ff(visible-stats)14 b Fe(.)6
 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
 (.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)24
-b Ff(6)1012 2279 y Fs(Y)1012 2341 y Fd(yank)12 b(\(C-y\))5
+b Ff(7)1012 2325 y Fs(Y)1012 2387 y Fd(yank)12 b(\(C-y\))5
 b Fe(.)t(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
 f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19
-b Ff(15)1012 2387 y Fd(yank-last-a)o(rg)9 b(\(M-.)i(or)h(M-_\))c
+b Ff(15)1012 2433 y Fd(yank-last-a)o(rg)9 b(\(M-.)i(or)h(M-_\))c
 Fe(.)f(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23
-b Ff(13)1012 2433 y Fd(yank-nth-ar)o(g)10 b(\(M-C-y\))d
+b Ff(13)1012 2479 y Fd(yank-nth-ar)o(g)10 b(\(M-C-y\))d
 Fe(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)20 b Ff(13)1012 2479 y Fd(yank-pop)10
+(.)g(.)g(.)g(.)g(.)h(.)20 b Ff(13)1012 2525 y Fd(yank-pop)10
 b(\(M-y\))g Fe(.)c(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
 (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25
 b Ff(15)p eop
-%%Page: 58 60
-58 59 bop 75 -58 a Fu(58)1299 b(GNU)15 b(Readline)h(Library)p
+%%Page: 60 62
+60 61 bop 75 -58 a Fu(60)1299 b(GNU)15 b(Readline)h(Library)p
 eop
-%%Page: -1 61
--1 60 bop 1862 -58 a Fu(i)75 149 y Fq(T)-7 b(able)27
+%%Page: -1 63
+-1 62 bop 1862 -58 a Fu(i)75 149 y Fq(T)-7 b(able)27
 b(of)f(Con)n(ten)n(ts)75 320 y Fs(1)67 b(Command)22 b(Line)i(Editing)d
 Fa(.)10 b(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)h
 (.)f(.)g(.)g(.)42 b Fs(1)224 389 y Fu(1.1)j(In)o(tro)q(duction)16
@@ -4946,7 +5021,7 @@ Fl(.)f(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
 (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)25
 b Fu(32)374 2442 y(2.4.9)44 b(T)l(erminal)16 b(Managemen)o(t)11
 b Fl(.)c(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)27 b Fu(32)374 2496 y(2.4.10)43
+h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)27 b Fu(33)374 2496 y(2.4.10)43
 b(Utilit)o(y)17 b(F)l(unctions)c Fl(.)7 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f
 (.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
 f(.)h(.)f(.)28 b Fu(33)374 2551 y(2.4.11)43 b(Miscellaneous)18
@@ -4958,30 +5033,30 @@ b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
 y(2.4.13)43 b(A)16 b(Readline)g(Example)9 b Fl(.)f(.)f(.)h(.)f(.)h(.)g
 (.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
 h(.)f(.)24 b Fu(35)p eop
-%%Page: -2 62
--2 61 bop 75 -58 a Fu(ii)1321 b(GNU)15 b(Readline)h(Library)224
+%%Page: -2 64
+-2 63 bop 75 -58 a Fu(ii)1321 b(GNU)15 b(Readline)h(Library)224
 42 y(2.5)45 b(Readline)16 b(Signal)h(Handling)12 b Fl(.)c(.)g(.)f(.)h
 (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)27 b Fu(36)224 96
+f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)27 b Fu(37)224 96
 y(2.6)45 b(Custom)14 b(Completers)f Fl(.)8 b(.)f(.)h(.)f(.)h(.)f(.)h(.)
 f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)28 b Fu(38)374
+(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)28 b Fu(39)374
 151 y(2.6.1)44 b(Ho)o(w)14 b(Completing)i(W)l(orks)10
 b Fl(.)d(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)25 b Fu(38)374 206 y(2.6.2)44
+f(.)h(.)f(.)h(.)f(.)h(.)f(.)25 b Fu(39)374 206 y(2.6.2)44
 b(Completion)16 b(F)l(unctions)6 b Fl(.)i(.)g(.)f(.)h(.)f(.)h(.)f(.)h
 (.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-21 b Fu(39)374 261 y(2.6.3)44 b(Completion)16 b(V)l(ariables)c
+21 b Fu(40)374 261 y(2.6.3)44 b(Completion)16 b(V)l(ariables)c
 Fl(.)c(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)27 b Fu(40)374 315
+(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)27 b Fu(41)374 315
 y(2.6.4)44 b(A)15 b(Short)g(Completion)h(Example)5 b
 Fl(.)j(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)20 b Fu(43)75 437 y Fs(Concept)i(Index)10 b Fa(.)i(.)e(.)g(.)g
+(.)f(.)20 b Fu(44)75 437 y Fs(Concept)i(Index)10 b Fa(.)i(.)e(.)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(.)h(.)f(.)33 b Fs(53)75 572
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)33 b Fs(55)75 572
 y(F)-6 b(unction)25 b(and)d(V)-6 b(ariable)24 b(Index)9
 b Fa(.)i(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)32 b Fs(55)p eop
+g(.)32 b Fs(57)p eop
 %%Trailer
 end
 userdict /end-hook known{end-hook}if
index cba0c23b271e1775de6664126be78304fb4789f7..4049272185d696735965028e02da08c1589d3b48 100644 (file)
@@ -1,12 +1,12 @@
 %!PS-Adobe-3.0
 %%Creator: groff version 1.16.1
-%%CreationDate: Mon Mar  5 14:37:30 2001
+%%CreationDate: Tue Oct  9 15:08:13 2001
 %%DocumentNeededResources: font Times-Roman
 %%+ font Times-Bold
 %%+ font Times-Italic
 %%+ font Courier
 %%DocumentSuppliedResources: procset grops 1.16 1
-%%Pages: 13
+%%Pages: 14
 %%PageOrder: Ascend
 %%Orientation: Portrait
 %%EndComments
@@ -308,8 +308,8 @@ le is read, and the k)-5.359 F .658 -.15(ey b)-.1 H(ind-).15 E 1.083
 (wn commands and bindings.)-.25 E -.15(Fo)108 669.6 S 2.5(re).15 G
 (xample, placing)-2.65 E(M\255Control\255u: uni)144 686.4 Q -.15(ve)-.25
 G(rsal\255ar).15 E(gument)-.18 E(or)108 698.4 Q(C\255Meta\255u: uni)144
-710.4 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E(GNU Readline 4.2)
-72 768 Q(2001 Mar 5)135.96 E(1)205.67 E EP
+710.4 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E(GNU Readline 4.2a)
+72 768 Q(2001 October 9)123.745 E(1)197.895 E EP
 %%Page: 2 2
 %%BeginPageSetup
 BP
@@ -391,18 +391,19 @@ F2(\\f)144 612 Q F0(form feed)29.89 E F2(\\n)144 624 Q F0(ne)27.66 E
 (wline)-.25 E F2(\\r)144 636 Q F0(carriage return)28.78 E F2(\\t)144 648
 Q F0(horizontal tab)29.89 E F2(\\v)144 660 Q F0 -.15(ve)28.22 G
 (rtical tab).15 E F2(\\)144 672 Q F1(nnn)A F0
-(the character whose ASCII code is the octal v)18.22 E(alue)-.25 E F1
-(nnn)2.5 E F0(\(one to three digits\))2.5 E F2(\\x)144 684 Q F1(nnn)A F0
-(the character whose ASCII code is the he)13.22 E(xadecimal v)-.15 E
-(alue)-.25 E F1(nnn)2.5 E F0(\(one to three digits\))2.5 E .74
-(When entering the te)108 700.8 R .74(xt of a macro, single or double q\
-uotes should be used to indicate a macro de\214nition.)-.15 F .089
-(Unquoted te)108 712.8 R .089(xt is assumed to be a function name.)-.15
-F .09(In the macro body)5.089 F 2.59(,t)-.65 G .09
-(he backslash escapes described abo)-2.59 F -.15(ve)-.15 G(are e)108
-724.8 Q 2.5(xpanded. Backslash)-.15 F(will quote an)2.5 E 2.5(yo)-.15 G
-(ther character in the macro te)-2.5 E(xt, including " and '.)-.15 E
-(GNU Readline 4.2)72 768 Q(2001 Mar 5)135.96 E(2)205.67 E EP
+(the eight-bit character whose v)18.22 E(alue is the octal v)-.25 E
+(alue)-.25 E F1(nnn)2.5 E F0(\(one to three digits\))2.5 E F2(\\x)144
+684 Q F1(HH)A F0(the eight-bit character whose v)13.78 E(alue is the he)
+-.25 E(xadecimal v)-.15 E(alue)-.25 E F1(HH)2.5 E F0(\(one or tw)2.5 E
+2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E .74(When entering the te)
+108 700.8 R .74(xt of a macro, single or double quotes should be used t\
+o indicate a macro de\214nition.)-.15 F .089(Unquoted te)108 712.8 R
+.089(xt is assumed to be a function name.)-.15 F .09(In the macro body)
+5.089 F 2.59(,t)-.65 G .09(he backslash escapes described abo)-2.59 F
+-.15(ve)-.15 G(are e)108 724.8 Q 2.5(xpanded. Backslash)-.15 F
+(will quote an)2.5 E 2.5(yo)-.15 G(ther character in the macro te)-2.5 E
+(xt, including " and '.)-.15 E(GNU Readline 4.2a)72 768 Q
+(2001 October 9)123.745 E(2)197.895 E EP
 %%Page: 3 3
 %%BeginPageSetup
 BP
@@ -482,749 +483,775 @@ F .515 -.15(ey b)-.1 H .216(indings similar to emacs or vi.).15 F F1
 -2.6 G(s.).15 E F1(expand\255tilde \(Off\))108 559.2 Q F0(If set to)144
 571.2 Q F1(on)2.5 E F0 2.5(,t)C(ilde e)-2.5 E
 (xpansion is performed when readline attempts w)-.15 E(ord completion.)
--.1 E F1(horizontal\255scr)108 583.2 Q(oll\255mode \(Off\))-.18 E F0
-.448(When set to)144 595.2 R F1(On)2.948 E F0 2.948(,m)C(ak)-2.948 E
+-.1 E F1(history-pr)108 583.2 Q(eser)-.18 E -.1(ve)-.1 G(-point).1 E F0
+1.492(If set to)144 595.2 R F1(on)3.992 E F0 3.992(,t)C 1.493(he histor\
+y code attempts to place point at the same location on each history lin\
+e)-3.992 F(retri)144 607.2 Q -.15(ve)-.25 G 2.5(dw).15 G(ith)-2.5 E F1
+(pr)2.5 E -.15(ev)-.18 G(ious-history).15 E F0(or)2.5 E F1(next-history)
+2.5 E F0(.)A F1(horizontal\255scr)108 619.2 Q(oll\255mode \(Off\))-.18 E
+F0 .449(When set to)144 631.2 R F1(On)2.949 E F0 2.949(,m)C(ak)-2.949 E
 .448(es readline use a single line for display)-.1 F 2.948(,s)-.65 G
-.449(crolling the input horizontally on a)-2.948 F 1.194(single screen \
+.448(crolling the input horizontally on a)-2.948 F 1.194(single screen \
 line when it becomes longer than the screen width rather than wrapping \
-to a ne)144 607.2 R(w)-.25 E(line.)144 619.2 Q F1(input\255meta \(Off\))
-108 631.2 Q F0 .367(If set to)144 643.2 R F1(On)2.867 E F0 2.867(,r)C
+to a ne)144 643.2 R(w)-.25 E(line.)144 655.2 Q F1(input\255meta \(Off\))
+108 667.2 Q F0 .367(If set to)144 679.2 R F1(On)2.867 E F0 2.867(,r)C
 .367(eadline will enable eight-bit input \(that is, it will not clear t\
-he eighth bit in the char)-2.867 F(-)-.2 E .957(acters it reads\), re)
-144 655.2 R -.05(ga)-.15 G .956
-(rdless of what the terminal claims it can support.).05 F .956(The name)
-5.956 F F1(meta\255\215ag)3.456 E F0 .956(is a)3.456 F(synon)144 667.2 Q
-(ym for this v)-.15 E(ariable.)-.25 E F1(isear)108 679.2 Q
-(ch\255terminators \(`)-.18 E(`C\255[ C\255J')-.63 E('\))-.63 E F0 .439
-(The string of characters that should terminate an incremental search w\
-ithout subsequently e)144 691.2 R -.15(xe)-.15 G(cut-).15 E .935
-(ing the character as a command.)144 703.2 R .935(If this v)5.935 F .935
-(ariable has not been gi)-.25 F -.15(ve)-.25 G 3.434(nav).15 G .934
-(alue, the characters)-3.684 F F2(ESC)3.434 E F0(and)144 715.2 Q F2
-(C\255J)2.5 E F0(will terminate an incremental search.)2.5 E
-(GNU Readline 4.2)72 768 Q(2001 Mar 5)135.96 E(3)205.67 E EP
+he eighth bit in the char)-2.867 F(-)-.2 E .956(acters it reads\), re)
+144 691.2 R -.05(ga)-.15 G .956
+(rdless of what the terminal claims it can support.).05 F .957(The name)
+5.956 F F1(meta\255\215ag)3.457 E F0 .957(is a)3.457 F(synon)144 703.2 Q
+(ym for this v)-.15 E(ariable.)-.25 E(GNU Readline 4.2a)72 768 Q
+(2001 October 9)123.745 E(3)197.895 E EP
 %%Page: 4 4
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
-/Times-Bold@0 SF -.1(ke)108 84 S(ymap \(emacs\)).1 E F0 2.323
-(Set the current readline k)144 96 R -.15(ey)-.1 G 4.823(map. The).15 F
-2.323(set of le)4.823 F -.05(ga)-.15 G 4.823(lk).05 G -.15(ey)-4.923 G
-2.323(map names is).15 F/F2 10/Times-Italic@0 SF 2.324
-(emacs, emacs-standar)4.823 F(d,)-.37 E .809
-(emacs-meta, emacs-ctlx, vi, vi-mo)144 108 R(ve)-.1 E 3.308(,v)-.1 G
+/Times-Bold@0 SF(isear)108 84 Q(ch\255terminators \(`)-.18 E
+(`C\255[ C\255J')-.63 E('\))-.63 E F0 .439(The string of characters tha\
+t should terminate an incremental search without subsequently e)144 96 R
+-.15(xe)-.15 G(cut-).15 E .934(ing the character as a command.)144 108 R
+.935(If this v)5.935 F .935(ariable has not been gi)-.25 F -.15(ve)-.25
+G 3.435(nav).15 G .935(alue, the characters)-3.685 F/F2 10
+/Times-Italic@0 SF(ESC)3.435 E F0(and)144 120 Q F2(C\255J)2.5 E F0
+(will terminate an incremental search.)2.5 E F1 -.1(ke)108 132 S
+(ymap \(emacs\)).1 E F0 2.323(Set the current readline k)144 144 R -.15
+(ey)-.1 G 4.823(map. The).15 F 2.323(set of le)4.823 F -.05(ga)-.15 G
+4.823(lk).05 G -.15(ey)-4.923 G 2.323(map names is).15 F F2 2.323
+(emacs, emacs-standar)4.823 F(d,)-.37 E .808
+(emacs-meta, emacs-ctlx, vi, vi-mo)144 156 R(ve)-.1 E 3.308(,v)-.1 G
 (i-command)-3.308 E F0 3.308(,a)C(nd)-3.308 E F2(vi-insert)3.308 E F0(.)
-.68 E F2(vi)5.808 E F0 .808(is equi)3.308 F -.25(va)-.25 G .808(lent to)
-.25 F F2(vi-command)3.308 E F0(;)A F2(emacs)144 120 Q F0 .697(is equi)
-3.196 F -.25(va)-.25 G .697(lent to).25 F F2(emacs-standar)3.197 E(d)
+.68 E F2(vi)5.808 E F0 .808(is equi)3.308 F -.25(va)-.25 G .809(lent to)
+.25 F F2(vi-command)3.309 E F0(;)A F2(emacs)144 168 Q F0 .697(is equi)
+3.197 F -.25(va)-.25 G .697(lent to).25 F F2(emacs-standar)3.197 E(d)
 -.37 E F0 5.697(.T)C .697(he def)-5.697 F .697(ault v)-.1 F .697
 (alue is)-.25 F F2(emacs)3.197 E F0 5.697(.T).27 G .697(he v)-5.697 F
-.697(alue of)-.25 F F1(editing\255mode)3.197 E F0(also af)144 132 Q
+.697(alue of)-.25 F F1(editing\255mode)3.196 E F0(also af)144 180 Q
 (fects the def)-.25 E(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F1
-(mark\255dir)108 144 Q(ectories \(On\))-.18 E F0(If set to)144 156 Q F1
+(mark\255dir)108 192 Q(ectories \(On\))-.18 E F0(If set to)144 204 Q F1
 (On)2.5 E F0 2.5(,c)C(ompleted directory names ha)-2.5 E .3 -.15(ve a s)
 -.2 H(lash appended.).15 E F1(mark\255modi\214ed\255lines \(Off\))108
-168 Q F0(If set to)144 180 Q F1(On)2.5 E F0 2.5(,h)C
+216 Q F0(If set to)144 228 Q F1(On)2.5 E F0 2.5(,h)C
 (istory lines that ha)-2.5 E .3 -.15(ve b)-.2 H
 (een modi\214ed are displayed with a preceding asterisk \().15 E F1(*)A
-F0(\).)A F1(output\255meta \(Off\))108 192 Q F0 .507(If set to)144 204 R
-F1(On)3.007 E F0 3.007(,r)C .507(eadline will display characters with t\
-he eighth bit set directly rather than as a meta-)-3.007 F(pre\214x)144
-216 Q(ed escape sequence.)-.15 E F1
-(print\255completions\255horizontally \(Off\))108 228 Q F0 1.318
-(If set to)144 240 R F1(On)3.818 E F0 3.818(,r)C 1.319(eadline will dis\
-play completions with matches sorted horizontally in alphabetical)-3.818
-F(order)144 252 Q 2.5(,r)-.4 G(ather than do)-2.5 E(wn the screen.)-.25
-E F1(sho)108 264 Q(w\255all\255if\255ambiguous \(Off\))-.1 E F0 .478
-(This alters the def)144 276 R .478(ault beha)-.1 F .478
-(vior of the completion functions.)-.2 F .477(If set to)5.477 F F1(on)
-2.977 E F0 2.977(,w)C .477(ords which ha)-3.077 F .777 -.15(ve m)-.2 H
+F0(\).)A F1(match\255hidden\255\214les \(On\))108 240 Q F0 .192(This v)
+144 252 R .192(ariable, when set to)-.25 F F1(On)2.692 E F0 2.692(,c)C
+.192(auses readline to match \214les whose names be)-2.692 F .193
+(gin with a `.)-.15 F 2.693('\()-.7 G(hidden)-2.693 E 1.024
+(\214les\) when performing \214lename completion, unless the leading `.)
+144 264 R 3.523('i)-.7 G 3.523(ss)-3.523 G 1.023
+(upplied by the user in the)-3.523 F(\214lename to be completed.)144 276
+Q F1(output\255meta \(Off\))108 288 Q F0 .506(If set to)144 300 R F1(On)
+3.006 E F0 3.006(,r)C .507(eadline will display characters with the eig\
+hth bit set directly rather than as a meta-)-3.006 F(pre\214x)144 312 Q
+(ed escape sequence.)-.15 E F1
+(print\255completions\255horizontally \(Off\))108 324 Q F0 1.319
+(If set to)144 336 R F1(On)3.819 E F0 3.819(,r)C 1.318(eadline will dis\
+play completions with matches sorted horizontally in alphabetical)-3.819
+F(order)144 348 Q 2.5(,r)-.4 G(ather than do)-2.5 E(wn the screen.)-.25
+E F1(sho)108 360 Q(w\255all\255if\255ambiguous \(Off\))-.1 E F0 .477
+(This alters the def)144 372 R .477(ault beha)-.1 F .477
+(vior of the completion functions.)-.2 F .478(If set to)5.478 F F1(on)
+2.978 E F0 2.978(,w)C .478(ords which ha)-3.078 F .778 -.15(ve m)-.2 H
 (ore).15 E 1.264(than one possible completion cause the matches to be l\
-isted immediately instead of ringing the)144 288 R(bell.)144 300 Q F1
-(visible\255stats \(Off\))108 312 Q F0 .847(If set to)144 324 R F1(On)
+isted immediately instead of ringing the)144 384 R(bell.)144 396 Q F1
+(visible\255stats \(Off\))108 408 Q F0 .846(If set to)144 420 R F1(On)
 3.346 E F0 3.346(,ac)C .846(haracter denoting a \214le')-3.346 F 3.346
 (st)-.55 G .846(ype as reported by)-3.346 F F2(stat)3.346 E F0 .846
 (\(2\) is appended to the \214lename)B
-(when listing possible completions.)144 336 Q F1(Conditional Constructs)
-87 352.8 Q F0 .05(Readline implements a f)108 364.8 R .05(acility simil\
+(when listing possible completions.)144 432 Q F1(Conditional Constructs)
+87 448.8 Q F0 .05(Readline implements a f)108 460.8 R .05(acility simil\
 ar in spirit to the conditional compilation features of the C preproces\
-sor)-.1 F .097(which allo)108 376.8 R .097(ws k)-.25 F .396 -.15(ey b)
+sor)-.1 F .096(which allo)108 472.8 R .096(ws k)-.25 F .396 -.15(ey b)
 -.1 H .096(indings and v).15 F .096
-(ariable settings to be performed as the result of tests.)-.25 F .096
-(There are four parser)5.096 F(directi)108 388.8 Q -.15(ve)-.25 G 2.5
-(su).15 G(sed.)-2.5 E F1($if)108 405.6 Q F0(The)24.89 E F1($if)2.962 E
-F0 .462(construct allo)2.962 F .463(ws bindings to be made based on the\
- editing mode, the terminal being used,)-.25 F .478
-(or the application using readline.)144 417.6 R .477(The te)5.477 F .477
+(ariable settings to be performed as the result of tests.)-.25 F .097
+(There are four parser)5.096 F(directi)108 484.8 Q -.15(ve)-.25 G 2.5
+(su).15 G(sed.)-2.5 E F1($if)108 501.6 Q F0(The)24.89 E F1($if)2.963 E
+F0 .463(construct allo)2.963 F .462(ws bindings to be made based on the\
+ editing mode, the terminal being used,)-.25 F .477
+(or the application using readline.)144 513.6 R .477(The te)5.477 F .477
 (xt of the test e)-.15 F .477
 (xtends to the end of the line; no characters)-.15 F
-(are required to isolate it.)144 429.6 Q F1(mode)144 446.4 Q F0(The)
-12.67 E F1(mode=)3.711 E F0 1.211(form of the)3.711 F F1($if)3.711 E F0
+(are required to isolate it.)144 525.6 Q F1(mode)144 542.4 Q F0(The)
+12.67 E F1(mode=)3.712 E F0 1.212(form of the)3.712 F F1($if)3.711 E F0
 (directi)3.711 E 1.511 -.15(ve i)-.25 H 3.711(su).15 G 1.211
 (sed to test whether readline is in emacs or vi)-3.711 F 3.065
-(mode. This)180 458.4 R .565(may be used in conjunction with the)3.065 F
+(mode. This)180 554.4 R .565(may be used in conjunction with the)3.065 F
 F1 .565(set k)3.065 F(eymap)-.1 E F0 .565(command, for instance, to)
-3.065 F .029(set bindings in the)180 470.4 R F2(emacs-standar)2.529 E(d)
+3.065 F .03(set bindings in the)180 566.4 R F2(emacs-standar)2.529 E(d)
 -.37 E F0(and)2.529 E F2(emacs-ctlx)2.529 E F0 -.1(ke)2.529 G .029
-(ymaps only if readline is starting out)-.05 F(in emacs mode.)180 482.4
-Q F1(term)144 499.2 Q F0(The)15.46 E F1(term=)3.197 E F0 .696
-(form may be used to include terminal-speci\214c k)3.197 F .996 -.15
-(ey b)-.1 H .696(indings, perhaps to bind).15 F .654(the k)180 511.2 R
+(ymaps only if readline is starting out)-.05 F(in emacs mode.)180 578.4
+Q F1(term)144 595.2 Q F0(The)15.46 E F1(term=)3.196 E F0 .696
+(form may be used to include terminal-speci\214c k)3.196 F .996 -.15
+(ey b)-.1 H .697(indings, perhaps to bind).15 F .654(the k)180 607.2 R
 .954 -.15(ey s)-.1 H .654(equences output by the terminal').15 F 3.154
 (sf)-.55 G .654(unction k)-3.154 F -.15(ey)-.1 G 3.154(s. The).15 F -.1
-(wo)3.154 G .654(rd on the right side of).1 F(the)180 523.2 Q F1(=)3.004
-E F0 .504(is tested ag)3.004 F .503(ainst the full name of the terminal\
+(wo)3.154 G .654(rd on the right side of).1 F(the)180 619.2 Q F1(=)3.003
+E F0 .503(is tested ag)3.003 F .504(ainst the full name of the terminal\
  and the portion of the terminal name)-.05 F(before the \214rst)180
-535.2 Q F1<ad>2.5 E F0 5(.T)C(his allo)-5 E(ws)-.25 E F2(sun)2.5 E F0
+631.2 Q F1<ad>2.5 E F0 5(.T)C(his allo)-5 E(ws)-.25 E F2(sun)2.5 E F0
 (to match both)2.5 E F2(sun)2.5 E F0(and)2.5 E F2(sun\255cmd)2.5 E F0
-2.5(,f).77 G(or instance.)-2.5 E F1(application)144 552 Q F0(The)180 564
+2.5(,f).77 G(or instance.)-2.5 E F1(application)144 648 Q F0(The)180 660
 Q F1(application)3.003 E F0 .503
 (construct is used to include application-speci\214c settings.)3.003 F
 .503(Each program)5.503 F .114(using the readline library sets the)180
-576 R F2 .114(application name)2.614 F F0 2.614(,a)C .114
-(nd an initialization \214le can test for a)-2.614 F .5(particular v)180
-588 R 3(alue. This)-.25 F .501(could be used to bind k)3 F .801 -.15
-(ey s)-.1 H .501(equences to functions useful for a spe-).15 F .397
-(ci\214c program.)180 600 R -.15(Fo)5.397 G 2.896(ri).15 G .396
+672 R F2 .114(application name)2.614 F F0 2.614(,a)C .114
+(nd an initialization \214le can test for a)-2.614 F .501(particular v)
+180 684 R 3.001(alue. This)-.25 F .501(could be used to bind k)3.001 F
+.801 -.15(ey s)-.1 H .5(equences to functions useful for a spe-).15 F
+.396(ci\214c program.)180 696 R -.15(Fo)5.396 G 2.896(ri).15 G .396
 (nstance, the follo)-2.896 F .396(wing command adds a k)-.25 F .696 -.15
-(ey s)-.1 H .396(equence that quotes the).15 F(current or pre)180 612 Q
-(vious w)-.25 E(ord in Bash:)-.1 E F1($if)180 636 Q F0(Bash)2.5 E 2.5
-(#Q)180 648 S(uote the current or pre)-2.5 E(vious w)-.25 E(ord)-.1 E
-("\\C-xq": "\\eb\\"\\ef\\"")180 660 Q F1($endif)180 672 Q($endif)108
-688.8 Q F0(This command, as seen in the pre)9.33 E(vious e)-.25 E
-(xample, terminates an)-.15 E F1($if)2.5 E F0(command.)2.5 E F1($else)
-108 705.6 Q F0(Commands in this branch of the)15.45 E F1($if)2.5 E F0
-(directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E -.15(xe)-.15 G
-(cuted if the test f).15 E(ails.)-.1 E(GNU Readline 4.2)72 768 Q
-(2001 Mar 5)135.96 E(4)205.67 E EP
+(ey s)-.1 H .397(equence that quotes the).15 F(current or pre)180 708 Q
+(vious w)-.25 E(ord in Bash:)-.1 E(GNU Readline 4.2a)72 768 Q
+(2001 October 9)123.745 E(4)197.895 E EP
 %%Page: 5 5
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
-/Times-Bold@0 SF($include)108 84 Q F0 .356(This directi)144 96 R .656
--.15(ve t)-.25 H(ak).15 E .356(es a single \214lename as an ar)-.1 F
-.357(gument and reads commands and bindings from that)-.18 F 2.5
-(\214le. F)144 108 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)
--.25 E .3 -.15(ve w)-.25 H(ould read).05 E/F2 10/Times-Italic@0 SF
-(/etc/inputr)2.5 E(c)-.37 E F0(:)A F1($include)144 132 Q F2(/etc/inputr)
-5.833 E(c)-.37 E/F3 10.95/Times-Bold@0 SF(SEARCHING)72 148.8 Q F0 1.004
-(Readline pro)108 160.8 R 1.003(vides commands for searching through th\
-e command history for lines containing a speci\214ed)-.15 F 2.5
-(string. There)108 172.8 R(are tw)2.5 E 2.5(os)-.1 G(earch modes:)-2.5 E
-F2(incr)2.5 E(emental)-.37 E F0(and)2.5 E F2(non-incr)2.5 E(emental)-.37
-E F0(.).51 E .697(Incremental searches be)108 189.6 R .697
+/Times-Bold@0 SF($if)180 84 Q F0(Bash)2.5 E 2.5(#Q)180 96 S
+(uote the current or pre)-2.5 E(vious w)-.25 E(ord)-.1 E
+("\\C-xq": "\\eb\\"\\ef\\"")180 108 Q F1($endif)180 120 Q($endif)108
+136.8 Q F0(This command, as seen in the pre)9.33 E(vious e)-.25 E
+(xample, terminates an)-.15 E F1($if)2.5 E F0(command.)2.5 E F1($else)
+108 153.6 Q F0(Commands in this branch of the)15.45 E F1($if)2.5 E F0
+(directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E -.15(xe)-.15 G
+(cuted if the test f).15 E(ails.)-.1 E F1($include)108 170.4 Q F0 .357
+(This directi)144 182.4 R .657 -.15(ve t)-.25 H(ak).15 E .357
+(es a single \214lename as an ar)-.1 F .356
+(gument and reads commands and bindings from that)-.18 F 2.5(\214le. F)
+144 194.4 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)-.25 E .3
+-.15(ve w)-.25 H(ould read).05 E/F2 10/Times-Italic@0 SF(/etc/inputr)2.5
+E(c)-.37 E F0(:)A F1($include)144 218.4 Q F2(/etc/inputr)5.833 E(c)-.37
+E/F3 10.95/Times-Bold@0 SF(SEARCHING)72 235.2 Q F0 1.003(Readline pro)
+108 247.2 R 1.003(vides commands for searching through the command hist\
+ory for lines containing a speci\214ed)-.15 F 2.5(string. There)108
+259.2 R(are tw)2.5 E 2.5(os)-.1 G(earch modes:)-2.5 E F2(incr)2.5 E
+(emental)-.37 E F0(and)2.5 E F2(non-incr)2.5 E(emental)-.37 E F0(.).51 E
+.698(Incremental searches be)108 276 R .698
 (gin before the user has \214nished typing the search string.)-.15 F
-.698(As each character of the)5.698 F .113
-(search string is typed, readline displays the ne)108 201.6 R .112
+.697(As each character of the)5.697 F .112
+(search string is typed, readline displays the ne)108 288 R .112
 (xt entry from the history matching the string typed so f)-.15 F(ar)-.1
-E 5.112(.A)-.55 G(n)-5.112 E .544
-(incremental search requires only as man)108 213.6 R 3.044(yc)-.15 G
-.544(haracters as needed to \214nd the desired history entry)-3.044 F
-5.545(.T)-.65 G 3.045(os)-6.345 G(earch)-3.045 E(backw)108 225.6 Q .181
+E 5.113(.A)-.55 G(n)-5.113 E .545
+(incremental search requires only as man)108 300 R 3.045(yc)-.15 G .544
+(haracters as needed to \214nd the desired history entry)-3.045 F 5.544
+(.T)-.65 G 3.044(os)-6.344 G(earch)-3.044 E(backw)108 312 Q .18
 (ard in the history for a particular string, type)-.1 F F1(C\255r)2.681
-E F0 5.181(.T)C(yping)-5.981 E F1(C\255s)2.68 E F0 .18(searches forw)
-2.68 F .18(ard through the history)-.1 F(.)-.65 E .354
-(The characters present in the v)108 237.6 R .354(alue of the)-.25 F F1
+E F0 5.181(.T)C(yping)-5.981 E F1(C\255s)2.681 E F0 .181(searches forw)
+2.681 F .181(ard through the history)-.1 F(.)-.65 E .354
+(The characters present in the v)108 324 R .354(alue of the)-.25 F F1
 (isear)2.854 E(ch-terminators)-.18 E F0 -.25(va)2.854 G .354
-(riable are used to terminate an incremen-).25 F .6(tal search.)108
-249.6 R .6(If that v)5.6 F .6(ariable has not been assigned a v)-.25 F
-.6(alue the)-.25 F F2(Escape)3.1 E F0(and)3.1 E F1(C\255J)3.1 E F0 .6
-(characters will terminate an)3.1 F .122(incremental search.)108 261.6 R
-F1(C\255G)5.122 E F0 .122
-(will abort an incremental search and restore the original line.)2.622 F
-.123(When the search is)5.123 F(terminated, the history entry containin\
-g the search string becomes the current line.)108 273.6 Q 2.407 -.8
-(To \214)108 290.4 T .806
+(riable are used to terminate an incremen-).25 F .6(tal search.)108 336
+R .6(If that v)5.6 F .6(ariable has not been assigned a v)-.25 F .6
+(alue the)-.25 F F2(Escape)3.1 E F0(and)3.1 E F1(C\255J)3.1 E F0 .6
+(characters will terminate an)3.1 F .123(incremental search.)108 348 R
+F1(C\255G)5.123 E F0 .123
+(will abort an incremental search and restore the original line.)2.623 F
+.122(When the search is)5.122 F(terminated, the history entry containin\
+g the search string becomes the current line.)108 360 Q 2.406 -.8
+(To \214)108 376.8 T .806
 (nd other matching entries in the history list, type).8 F F1(C\255s)
 3.306 E F0(or)3.306 E F1(C\255r)3.306 E F0 .806(as appropriate.)3.306 F
-.806(This will search back-)5.806 F -.1(wa)108 302.4 S 1.308(rd or forw)
+.807(This will search back-)5.806 F -.1(wa)108 388.8 S 1.309(rd or forw)
 .1 F 1.309(ard in the history for the ne)-.1 F 1.309
 (xt line matching the search string typed so f)-.15 F(ar)-.1 E 6.309(.A)
--.55 G 1.609 -.15(ny o)-6.309 H 1.309(ther k).15 F -.15(ey)-.1 G .317
+-.55 G 1.609 -.15(ny o)-6.309 H 1.308(ther k).15 F -.15(ey)-.1 G .317
 (sequence bound to a readline command will terminate the search and e)
-108 314.4 R -.15(xe)-.15 G .317(cute that command.).15 F -.15(Fo)5.317 G
-2.817(ri).15 G(nstance,)-2.817 E 3.48(an)108 326.4 S -.25(ew)-3.48 G .98
-(line will terminate the search and accept the line, thereby e).25 F
--.15(xe)-.15 G .981(cuting the command from the history).15 F 3.062
-(list. A)108 338.4 R(mo)3.062 E -.15(ve)-.15 G .562
+108 400.8 R -.15(xe)-.15 G .318(cute that command.).15 F -.15(Fo)5.318 G
+2.818(ri).15 G(nstance,)-2.818 E 3.481(an)108 412.8 S -.25(ew)-3.481 G
+.981(line will terminate the search and accept the line, thereby e).25 F
+-.15(xe)-.15 G .98(cuting the command from the history).15 F 3.061
+(list. A)108 424.8 R(mo)3.061 E -.15(ve)-.15 G .562
 (ment command will terminate the search, mak).15 F 3.062(et)-.1 G .562
 (he last line found the current line, and be)-3.062 F(gin)-.15 E
-(editing.)108 350.4 Q .567(Non-incremental searches read the entire sea\
+(editing.)108 436.8 Q .567(Non-incremental searches read the entire sea\
 rch string before starting to search for matching history lines.)108
-367.2 R(The search string may be typed by the user or be part of the co\
-ntents of the current line.)108 379.2 Q F3(EDITING COMMANDS)72 396 Q F0
-1.392(The follo)108 408 R 1.391
+453.6 R(The search string may be typed by the user or be part of the co\
+ntents of the current line.)108 465.6 Q F3(EDITING COMMANDS)72 482.4 Q
+F0 1.391(The follo)108 494.4 R 1.391
 (wing is a list of the names of the commands and the def)-.25 F 1.391
 (ault k)-.1 F 1.691 -.15(ey s)-.1 H 1.391(equences to which the).15 F
-3.891(ya)-.15 G(re)-3.891 E 2.5(bound. Command)108 420 R
+3.892(ya)-.15 G(re)-3.892 E 2.5(bound. Command)108 506.4 R
 (names without an accompan)2.5 E(ying k)-.15 E .3 -.15(ey s)-.1 H
-(equence are unbound by def).15 E(ault.)-.1 E .054(In the follo)108
-436.8 R .054(wing descriptions,)-.25 F F2(point)2.554 E F0 .055
-(refers to the current cursor position, and)2.554 F F2(mark)2.555 E F0
-.055(refers to a cursor position)2.555 F(sa)108 448.8 Q -.15(ve)-.2 G
+(equence are unbound by def).15 E(ault.)-.1 E .055(In the follo)108
+523.2 R .055(wing descriptions,)-.25 F F2(point)2.555 E F0 .055
+(refers to the current cursor position, and)2.555 F F2(mark)2.555 E F0
+.054(refers to a cursor position)2.554 F(sa)108 535.2 Q -.15(ve)-.2 G
 2.5(db).15 G 2.5(yt)-2.5 G(he)-2.5 E F1(set\255mark)2.5 E F0 2.5
 (command. The)2.5 F(te)2.5 E
 (xt between the point and mark is referred to as the)-.15 E F2 -.37(re)
-2.5 G(gion)-.03 E F0(.)A F1(Commands f)87 465.6 Q(or Mo)-.25 E(ving)-.1
-E(beginning\255of\255line \(C\255a\))108 477.6 Q F0(Mo)144 489.6 Q .3
--.15(ve t)-.15 H 2.5(ot).15 G(he start of the current line.)-2.5 E F1
-(end\255of\255line \(C\255e\))108 501.6 Q F0(Mo)144 513.6 Q .3 -.15
-(ve t)-.15 H 2.5(ot).15 G(he end of the line.)-2.5 E F1 -.25(fo)108
-525.6 S(rward\255char \(C\255f\)).25 E F0(Mo)144 537.6 Q .3 -.15(ve f)
--.15 H(orw).15 E(ard a character)-.1 E(.)-.55 E F1
-(backward\255char \(C\255b\))108 549.6 Q F0(Mo)144 561.6 Q .3 -.15(ve b)
--.15 H(ack a character).15 E(.)-.55 E F1 -.25(fo)108 573.6 S(rward\255w)
-.25 E(ord \(M\255f\))-.1 E F0(Mo)144 585.6 Q .823 -.15(ve f)-.15 H(orw)
-.15 E .523(ard to the end of the ne)-.1 F .523(xt w)-.15 F 3.023(ord. W)
--.1 F .522(ords are composed of alphanumeric characters \(let-)-.8 F
-(ters and digits\).)144 597.6 Q F1(backward\255w)108 609.6 Q
-(ord \(M\255b\))-.1 E F0(Mo)144 621.6 Q 1.71 -.15(ve b)-.15 H 1.41
+2.5 G(gion)-.03 E F0(.)A F1(Commands f)87 552 Q(or Mo)-.25 E(ving)-.1 E
+(beginning\255of\255line \(C\255a\))108 564 Q F0(Mo)144 576 Q .3 -.15
+(ve t)-.15 H 2.5(ot).15 G(he start of the current line.)-2.5 E F1
+(end\255of\255line \(C\255e\))108 588 Q F0(Mo)144 600 Q .3 -.15(ve t)
+-.15 H 2.5(ot).15 G(he end of the line.)-2.5 E F1 -.25(fo)108 612 S
+(rward\255char \(C\255f\)).25 E F0(Mo)144 624 Q .3 -.15(ve f)-.15 H(orw)
+.15 E(ard a character)-.1 E(.)-.55 E F1(backward\255char \(C\255b\))108
+636 Q F0(Mo)144 648 Q .3 -.15(ve b)-.15 H(ack a character).15 E(.)-.55 E
+F1 -.25(fo)108 660 S(rward\255w).25 E(ord \(M\255f\))-.1 E F0(Mo)144 672
+Q .822 -.15(ve f)-.15 H(orw).15 E .522(ard to the end of the ne)-.1 F
+.523(xt w)-.15 F 3.023(ord. W)-.1 F .523
+(ords are composed of alphanumeric characters \(let-)-.8 F
+(ters and digits\).)144 684 Q F1(backward\255w)108 696 Q(ord \(M\255b\))
+-.1 E F0(Mo)144 708 Q 1.71 -.15(ve b)-.15 H 1.41
 (ack to the start of the current or pre).15 F 1.41(vious w)-.25 F 3.91
 (ord. W)-.1 F 1.41(ords are composed of alphanumeric)-.8 F
-(characters \(letters and digits\).)144 633.6 Q F1(clear\255scr)108
-645.6 Q(een \(C\255l\))-.18 E F0 .993(Clear the screen lea)144 657.6 R
-.993(ving the current line at the top of the screen.)-.2 F -.4(Wi)5.993
-G .993(th an ar).4 F .993(gument, refresh the)-.18 F
-(current line without clearing the screen.)144 669.6 Q F1 -.18(re)108
-681.6 S(draw\255curr).18 E(ent\255line)-.18 E F0
-(Refresh the current line.)144 693.6 Q(GNU Readline 4.2)72 768 Q
-(2001 Mar 5)135.96 E(5)205.67 E EP
+(characters \(letters and digits\).)144 720 Q(GNU Readline 4.2a)72 768 Q
+(2001 October 9)123.745 E(5)197.895 E EP
 %%Page: 6 6
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
-/Times-Bold@0 SF(Commands f)87 84 Q(or Manipulating the History)-.25 E
-(accept\255line \(Newline, Retur)108 96 Q(n\))-.15 E F0 .364
-(Accept the line re)144 108 R -.05(ga)-.15 G .364
+/Times-Bold@0 SF(clear\255scr)108 84 Q(een \(C\255l\))-.18 E F0 .993
+(Clear the screen lea)144 96 R .993
+(ving the current line at the top of the screen.)-.2 F -.4(Wi)5.993 G
+.993(th an ar).4 F .993(gument, refresh the)-.18 F
+(current line without clearing the screen.)144 108 Q F1 -.18(re)108 120
+S(draw\255curr).18 E(ent\255line)-.18 E F0(Refresh the current line.)144
+132 Q F1(Commands f)87 148.8 Q(or Manipulating the History)-.25 E
+(accept\255line \(Newline, Retur)108 160.8 Q(n\))-.15 E F0 .365
+(Accept the line re)144 172.8 R -.05(ga)-.15 G .364
 (rdless of where the cursor is.).05 F .364(If this line is non-empty)
-5.364 F 2.864(,i)-.65 G 2.864(tm)-2.864 G .365(ay be added to the)-2.864
-F .741(history list for future recall with)144 120 R F1(add_history\(\))
-3.241 E F0 5.741(.I)C 3.241(ft)-5.741 G .74
+5.364 F 2.864(,i)-.65 G 2.864(tm)-2.864 G .364(ay be added to the)-2.864
+F .74(history list for future recall with)144 184.8 R F1
+(add_history\(\))3.24 E F0 5.741(.I)C 3.241(ft)-5.741 G .741
 (he line is a modi\214ed history line, the history)-3.241 F
-(line is restored to its original state.)144 132 Q F1(pr)108 144 Q -.15
-(ev)-.18 G(ious\255history \(C\255p\)).15 E F0(Fetch the pre)144 156 Q
-(vious command from the history list, mo)-.25 E(ving back in the list.)
--.15 E F1(next\255history \(C\255n\))108 168 Q F0(Fetch the ne)144 180 Q
-(xt command from the history list, mo)-.15 E(ving forw)-.15 E
-(ard in the list.)-.1 E F1(beginning\255of\255history \(M\255<\))108 192
-Q F0(Mo)144 204 Q .3 -.15(ve t)-.15 H 2.5(ot).15 G
-(he \214rst line in the history)-2.5 E(.)-.65 E F1
-(end\255of\255history \(M\255>\))108 216 Q F0(Mo)144 228 Q .3 -.15(ve t)
--.15 H 2.5(ot).15 G(he end of the input history)-2.5 E 2.5(,i)-.65 G
-(.e., the line currently being entered.)-2.5 E F1 -2.29 -.18(re v)108
-240 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0 1.47
-(Search backw)144 252 R 1.471(ard starting at the current line and mo)
--.1 F 1.471(ving `up' through the history as necessary)-.15 F(.)-.65 E
-(This is an incremental search.)144 264 Q F1 -.25(fo)108 276 S
-(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.132
-(Search forw)144 288 R 1.132(ard starting at the current line and mo)-.1
-F 1.131(ving `do)-.15 F 1.131(wn' through the history as necessary)-.25
-F(.)-.65 E(This is an incremental search.)144 300 Q F1(non\255incr)108
-312 Q(emental\255r)-.18 E -2.3 -.15(ev e)-.18 H(rse\255sear).15 E
-(ch\255history \(M\255p\))-.18 E F0 .164(Search backw)144 324 R .164(ar\
-d through the history starting at the current line using a non-incremen\
-tal search for)-.1 F 2.5(as)144 336 S(tring supplied by the user)-2.5 E
-(.)-.55 E F1(non\255incr)108 348 Q(emental\255f)-.18 E(orward\255sear)
--.25 E(ch\255history \(M\255n\))-.18 E F0 1.354(Search forw)144 360 R
-1.354(ard through the history using a non-incremental search for a stri\
-ng supplied by the)-.1 F(user)144 372 Q(.)-.55 E F1(history\255sear)108
-384 Q(ch\255f)-.18 E(orward)-.25 E F0 .248(Search forw)144 396 R .249(a\
-rd through the history for the string of characters between the start o\
-f the current line)-.1 F(and the current cursor position \(the)144 408 Q
-/F2 10/Times-Italic@0 SF(point)2.5 E F0 2.5(\). This)B
-(is a non-incremental search.)2.5 E F1(history\255sear)108 420 Q
-(ch\255backward)-.18 E F0 .951(Search backw)144 432 R .951(ard through \
-the history for the string of characters between the start of the curre\
-nt)-.1 F(line and the point.)144 444 Q
-(This is a non-incremental search.)5 E F1(yank\255nth\255ar)108 456 Q
-2.5(g\()-.1 G<4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144 468
-R .622(gument to the pre)-.18 F .622
+(line is restored to its original state.)144 196.8 Q F1(pr)108 208.8 Q
+-.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0(Fetch the pre)144
+220.8 Q(vious command from the history list, mo)-.25 E
+(ving back in the list.)-.15 E F1(next\255history \(C\255n\))108 232.8 Q
+F0(Fetch the ne)144 244.8 Q(xt command from the history list, mo)-.15 E
+(ving forw)-.15 E(ard in the list.)-.1 E F1
+(beginning\255of\255history \(M\255<\))108 256.8 Q F0(Mo)144 268.8 Q .3
+-.15(ve t)-.15 H 2.5(ot).15 G(he \214rst line in the history)-2.5 E(.)
+-.65 E F1(end\255of\255history \(M\255>\))108 280.8 Q F0(Mo)144 292.8 Q
+.3 -.15(ve t)-.15 H 2.5(ot).15 G(he end of the input history)-2.5 E 2.5
+(,i)-.65 G(.e., the line currently being entered.)-2.5 E F1 -2.29 -.18
+(re v)108 304.8 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0
+1.471(Search backw)144 316.8 R 1.471
+(ard starting at the current line and mo)-.1 F 1.47
+(ving `up' through the history as necessary)-.15 F(.)-.65 E
+(This is an incremental search.)144 328.8 Q F1 -.25(fo)108 340.8 S
+(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.131
+(Search forw)144 352.8 R 1.131(ard starting at the current line and mo)
+-.1 F 1.132(ving `do)-.15 F 1.132(wn' through the history as necessary)
+-.25 F(.)-.65 E(This is an incremental search.)144 364.8 Q F1
+(non\255incr)108 376.8 Q(emental\255r)-.18 E -2.3 -.15(ev e)-.18 H
+(rse\255sear).15 E(ch\255history \(M\255p\))-.18 E F0 .165(Search backw)
+144 388.8 R .164(ard through the history starting at the current line u\
+sing a non-incremental search for)-.1 F 2.5(as)144 400.8 S
+(tring supplied by the user)-2.5 E(.)-.55 E F1(non\255incr)108 412.8 Q
+(emental\255f)-.18 E(orward\255sear)-.25 E(ch\255history \(M\255n\))-.18
+E F0 1.353(Search forw)144 424.8 R 1.354(ard through the history using \
+a non-incremental search for a string supplied by the)-.1 F(user)144
+436.8 Q(.)-.55 E F1(history\255sear)108 448.8 Q(ch\255f)-.18 E(orward)
+-.25 E F0 .249(Search forw)144 460.8 R .249(ard through the history for\
+ the string of characters between the start of the current line)-.1 F
+(and the current cursor position \(the)144 472.8 Q/F2 10/Times-Italic@0
+SF(point)2.5 E F0 2.5(\). This)B(is a non-incremental search.)2.5 E F1
+(history\255sear)108 484.8 Q(ch\255backward)-.18 E F0 .95(Search backw)
+144 496.8 R .951(ard through the history for the string of characters b\
+etween the start of the current)-.1 F(line and the point.)144 508.8 Q
+(This is a non-incremental search.)5 E F1(yank\255nth\255ar)108 520.8 Q
+2.5(g\()-.1 G<4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144
+532.8 R .622(gument to the pre)-.18 F .622
 (vious command \(usually the second w)-.25 F .622(ord on the pre)-.1 F
-.622(vious line\))-.25 F .795(at point.)144 480 R -.4(Wi)5.795 G .794
+.622(vious line\))-.25 F .794(at point.)144 544.8 R -.4(Wi)5.794 G .794
 (th an ar).4 F(gument)-.18 E F2(n)3.294 E F0 3.294(,i).24 G .794
 (nsert the)-3.294 F F2(n)3.294 E F0 .794(th w)B .794(ord from the pre)
--.1 F .794(vious command \(the w)-.25 F .794(ords in the)-.1 F(pre)144
-492 Q .291(vious command be)-.25 F .291(gin with w)-.15 F .291(ord 0\).)
--.1 F 2.791(An)5.291 G -2.25 -.15(eg a)-2.791 H(ti).15 E .591 -.15(ve a)
--.25 H -.18(rg).15 G .291(ument inserts the).18 F F2(n)2.791 E F0 .291
-(th w)B .292(ord from the end of)-.1 F(the pre)144 504 Q(vious command.)
--.25 E F1(yank\255last\255ar)108 516 Q 2.5(g\()-.1 G -1.667(M\255. ,)
--2.5 F -1.667(M\255_ \))2.5 F F0 1.308(Insert the last ar)144 528 R
-1.308(gument to the pre)-.18 F 1.307(vious command \(the last w)-.25 F
-1.307(ord of the pre)-.1 F 1.307(vious history entry\).)-.25 F -.4(Wi)
-144 540 S .735(th an ar).4 F .735(gument, beha)-.18 F 1.035 -.15(ve ex)
--.2 H .735(actly lik).15 F(e)-.1 E F1(yank\255nth\255ar)3.235 E(g)-.1 E
-F0 5.736(.S)C(uccessi)-5.736 E 1.036 -.15(ve c)-.25 H .736(alls to).15 F
-F1(yank\255last\255ar)3.236 E(g)-.1 E F0(mo)3.236 E -.15(ve)-.15 G
-(back through the history list, inserting the last ar)144 552 Q
-(gument of each line in turn.)-.18 E F1(Commands f)87 568.8 Q
-(or Changing T)-.25 E(ext)-.92 E(delete\255char \(C\255d\))108 580.8 Q
-F0 .358(Delete the character at point.)144 592.8 R .358
+-.1 F .794(vious command \(the w)-.25 F .795(ords in the)-.1 F(pre)144
+556.8 Q .292(vious command be)-.25 F .292(gin with w)-.15 F .291
+(ord 0\).)-.1 F 2.791(An)5.291 G -2.25 -.15(eg a)-2.791 H(ti).15 E .591
+-.15(ve a)-.25 H -.18(rg).15 G .291(ument inserts the).18 F F2(n)2.791 E
+F0 .291(th w)B .291(ord from the end of)-.1 F(the pre)144 568.8 Q
+(vious command.)-.25 E F1(yank\255last\255ar)108 580.8 Q 2.5(g\()-.1 G
+-1.667(M\255. ,)-2.5 F -1.667(M\255_ \))2.5 F F0 1.307
+(Insert the last ar)144 592.8 R 1.307(gument to the pre)-.18 F 1.307
+(vious command \(the last w)-.25 F 1.308(ord of the pre)-.1 F 1.308
+(vious history entry\).)-.25 F -.4(Wi)144 604.8 S .736(th an ar).4 F
+.736(gument, beha)-.18 F 1.036 -.15(ve ex)-.2 H .736(actly lik).15 F(e)
+-.1 E F1(yank\255nth\255ar)3.235 E(g)-.1 E F0 5.735(.S)C(uccessi)-5.735
+E 1.035 -.15(ve c)-.25 H .735(alls to).15 F F1(yank\255last\255ar)3.235
+E(g)-.1 E F0(mo)3.235 E -.15(ve)-.15 G
+(back through the history list, inserting the last ar)144 616.8 Q
+(gument of each line in turn.)-.18 E F1(Commands f)87 633.6 Q
+(or Changing T)-.25 E(ext)-.92 E(delete\255char \(C\255d\))108 645.6 Q
+F0 .357(Delete the character at point.)144 657.6 R .358
 (If point is at the be)5.358 F .358
 (ginning of the line, there are no characters in the)-.15 F
-(line, and the last character typed w)144 604.8 Q(as not bound to)-.1 E
+(line, and the last character typed w)144 669.6 Q(as not bound to)-.1 E
 F1(delete\255char)2.5 E F0 2.5(,t)C(hen return)-2.5 E/F3 9/Times-Bold@0
 SF(EOF)2.5 E/F4 9/Times-Roman@0 SF(.)A F1
-(backward\255delete\255char \(Rubout\))108 616.8 Q F0 .552
-(Delete the character behind the cursor)144 628.8 R 5.553(.W)-.55 G .553
+(backward\255delete\255char \(Rubout\))108 681.6 Q F0 .553
+(Delete the character behind the cursor)144 693.6 R 5.553(.W)-.55 G .553
 (hen gi)-5.553 F -.15(ve)-.25 G 3.053(nan).15 G .553(umeric ar)-3.053 F
-.553(gument, sa)-.18 F .853 -.15(ve t)-.2 H .553(he deleted te).15 F
-.553(xt on)-.15 F(the kill ring.)144 640.8 Q F1 -.25(fo)108 652.8 S
-(rward\255backward\255delete\255char).25 E F0 .474
-(Delete the character under the cursor)144 664.8 R 2.974(,u)-.4 G .474
-(nless the cursor is at the end of the line, in which case the)-2.974 F
-(character behind the cursor is deleted.)144 676.8 Q F1
-(quoted\255insert \(C\255q, C\255v\))108 688.8 Q F0 1.228(Add the ne)144
-700.8 R 1.228(xt character that you type to the line v)-.15 F 3.728
-(erbatim. This)-.15 F 1.228(is ho)3.728 F 3.729(wt)-.25 G 3.729(oi)
--3.729 G 1.229(nsert characters lik)-3.729 F(e)-.1 E F1(C\255q)144 712.8
-Q F0 2.5(,f)C(or e)-2.5 E(xample.)-.15 E(GNU Readline 4.2)72 768 Q
-(2001 Mar 5)135.96 E(6)205.67 E EP
+.552(gument, sa)-.18 F .852 -.15(ve t)-.2 H .552(he deleted te).15 F
+.552(xt on)-.15 F(the kill ring.)144 705.6 Q(GNU Readline 4.2a)72 768 Q
+(2001 October 9)123.745 E(6)197.895 E EP
 %%Page: 7 7
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
-/Times-Bold@0 SF(tab\255insert \(M-T)108 84 Q(AB\))-.9 E F0
-(Insert a tab character)144 96 Q(.)-.55 E F1
-(self\255insert \(a, b, A, 1, !, ...\))108 108 Q F0
-(Insert the character typed.)144 120 Q F1(transpose\255chars \(C\255t\))
-108 132 Q F0 .322(Drag the character before point forw)144 144 R .321
+/Times-Bold@0 SF -.25(fo)108 84 S(rward\255backward\255delete\255char)
+.25 E F0 .473(Delete the character under the cursor)144 96 R 2.973(,u)
+-.4 G .474
+(nless the cursor is at the end of the line, in which case the)-2.973 F
+(character behind the cursor is deleted.)144 108 Q F1
+(quoted\255insert \(C\255q, C\255v\))108 120 Q F0 1.229(Add the ne)144
+132 R 1.228(xt character that you type to the line v)-.15 F 3.728
+(erbatim. This)-.15 F 1.228(is ho)3.728 F 3.728(wt)-.25 G 3.728(oi)
+-3.728 G 1.228(nsert characters lik)-3.728 F(e)-.1 E F1(C\255q)144 144 Q
+F0 2.5(,f)C(or e)-2.5 E(xample.)-.15 E F1(tab\255insert \(M-T)108 156 Q
+(AB\))-.9 E F0(Insert a tab character)144 168 Q(.)-.55 E F1
+(self\255insert \(a, b, A, 1, !, ...\))108 180 Q F0
+(Insert the character typed.)144 192 Q F1(transpose\255chars \(C\255t\))
+108 204 Q F0 .321(Drag the character before point forw)144 216 R .321
 (ard o)-.1 F -.15(ve)-.15 G 2.821(rt).15 G .321
-(he character at point, mo)-2.821 F .321(ving point forw)-.15 F .321
+(he character at point, mo)-2.821 F .322(ving point forw)-.15 F .322
 (ard as well.)-.1 F 1.182
-(If point is at the end of the line, then this transposes the tw)144 156
-R 3.683(oc)-.1 G 1.183(haracters before point.)-3.683 F(Ne)6.183 E -.05
-(ga)-.15 G(ti).05 E -.15(ve)-.25 G(ar)144 168 Q(guments ha)-.18 E .3
+(If point is at the end of the line, then this transposes the tw)144 228
+R 3.682(oc)-.1 G 1.182(haracters before point.)-3.682 F(Ne)6.182 E -.05
+(ga)-.15 G(ti).05 E -.15(ve)-.25 G(ar)144 240 Q(guments ha)-.18 E .3
 -.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E F1
-(transpose\255w)108 180 Q(ords \(M\255t\))-.1 E F0(Drag the w)144 192 Q
-(ord before point past the w)-.1 E(ord after point, mo)-.1 E
-(ving point o)-.15 E -.15(ve)-.15 G 2.5(rt).15 G(hat w)-2.5 E
-(ord as well.)-.1 E F1(upcase\255w)108 204 Q(ord \(M\255u\))-.1 E F0
-1.699(Uppercase the current \(or follo)144 216 R 1.698(wing\) w)-.25 F
-4.198(ord. W)-.1 F 1.698(ith a ne)-.4 F -.05(ga)-.15 G(ti).05 E 1.998
--.15(ve a)-.25 H -.18(rg).15 G 1.698(ument, uppercase the pre).18 F
-(vious)-.25 E -.1(wo)144 228 S(rd, b).1 E(ut do not mo)-.2 E .3 -.15
-(ve p)-.15 H(oint.).15 E F1(do)108 240 Q(wncase\255w)-.1 E
-(ord \(M\255l\))-.1 E F0(Lo)144 252 Q 1.647
+(transpose\255w)108 252 Q(ords \(M\255t\))-.1 E F0 .023(Drag the w)144
+264 R .023(ord before point past the w)-.1 F .023(ord after point, mo)
+-.1 F .023(ving point o)-.15 F -.15(ve)-.15 G 2.524(rt).15 G .024(hat w)
+-2.524 F .024(ord as well.)-.1 F .024(If point)5.024 F
+(is at the end of the line, this transposes the last tw)144 276 Q 2.5
+(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 288 Q
+(ord \(M\255u\))-.1 E F0 1.699(Uppercase the current \(or follo)144 300
+R 1.698(wing\) w)-.25 F 4.198(ord. W)-.1 F 1.698(ith a ne)-.4 F -.05(ga)
+-.15 G(ti).05 E 1.998 -.15(ve a)-.25 H -.18(rg).15 G 1.698
+(ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 312 S(rd, b).1 E
+(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(do)108 324 Q
+(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 336 Q 1.647
 (wercase the current \(or follo)-.25 F 1.647(wing\) w)-.25 F 4.147
 (ord. W)-.1 F 1.648(ith a ne)-.4 F -.05(ga)-.15 G(ti).05 E 1.948 -.15
 (ve a)-.25 H -.18(rg).15 G 1.648(ument, lo).18 F 1.648(wercase the pre)
--.25 F(vious)-.25 E -.1(wo)144 264 S(rd, b).1 E(ut do not mo)-.2 E .3
--.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 276 Q
-(ord \(M\255c\))-.1 E F0 1.975(Capitalize the current \(or follo)144 288
+-.25 F(vious)-.25 E -.1(wo)144 348 S(rd, b).1 E(ut do not mo)-.2 E .3
+-.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 360 Q
+(ord \(M\255c\))-.1 E F0 1.975(Capitalize the current \(or follo)144 372
 R 1.974(wing\) w)-.25 F 4.474(ord. W)-.1 F 1.974(ith a ne)-.4 F -.05(ga)
 -.15 G(ti).05 E 2.274 -.15(ve a)-.25 H -.18(rg).15 G 1.974
-(ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 300 S(rd, b).1
+(ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 384 S(rd, b).1
 E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(Killing and Y)87
-316.8 Q(anking)-.85 E(kill\255line \(C\255k\))108 328.8 Q F0
-(Kill the te)144 340.8 Q(xt from point to the end of the line.)-.15 E F1
-(backward\255kill\255line \(C\255x Rubout\))108 352.8 Q F0(Kill backw)
-144 364.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1
-(unix\255line\255discard \(C\255u\))108 376.8 Q F0(Kill backw)144 388.8
+400.8 Q(anking)-.85 E(kill\255line \(C\255k\))108 412.8 Q F0
+(Kill the te)144 424.8 Q(xt from point to the end of the line.)-.15 E F1
+(backward\255kill\255line \(C\255x Rubout\))108 436.8 Q F0(Kill backw)
+144 448.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1
+(unix\255line\255discard \(C\255u\))108 460.8 Q F0(Kill backw)144 472.8
 Q(ard from point to the be)-.1 E(ginning of the line.)-.15 E
 (The killed te)5 E(xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt)
--2.5 G(he kill-ring.)-2.5 E F1(kill\255whole\255line)108 400.8 Q F0
+-2.5 G(he kill-ring.)-2.5 E F1(kill\255whole\255line)108 484.8 Q F0
 (Kill all characters on the current line, no matter where point is.)144
-412.8 Q F1(kill\255w)108 424.8 Q(ord \(M\255d\))-.1 E F0 1.308
-(Kill from point the end of the current w)144 436.8 R 1.308
+496.8 Q F1(kill\255w)108 508.8 Q(ord \(M\255d\))-.1 E F0 1.308
+(Kill from point the end of the current w)144 520.8 R 1.308
 (ord, or if between w)-.1 F 1.308(ords, to the end of the ne)-.1 F 1.308
-(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 448.8 S
+(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 532.8 S
 (rd boundaries are the same as those used by).8 E F1 -.25(fo)2.5 G
-(rward\255w).25 E(ord)-.1 E F0(.)A F1(backward\255kill\255w)108 460.8 Q
-(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 472.8 Q(ord behind point.)
+(rward\255w).25 E(ord)-.1 E F0(.)A F1(backward\255kill\255w)108 544.8 Q
+(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 556.8 Q(ord behind point.)
 -.1 E -.8(Wo)5 G(rd boundaries are the same as those used by).8 E F1
-(backward\255w)2.5 E(ord)-.1 E F0(.)A F1(unix\255w)108 484.8 Q
-(ord\255rubout \(C\255w\))-.1 E F0 .365(Kill the w)144 496.8 R .365
+(backward\255w)2.5 E(ord)-.1 E F0(.)A F1(unix\255w)108 568.8 Q
+(ord\255rubout \(C\255w\))-.1 E F0 .365(Kill the w)144 580.8 R .365
 (ord behind point, using white space as a w)-.1 F .364(ord boundary)-.1
 F 5.364(.T)-.65 G .364(he killed te)-5.364 F .364(xt is sa)-.15 F -.15
 (ve)-.2 G 2.864(do).15 G 2.864(nt)-2.864 G(he)-2.864 E(kill-ring.)144
-508.8 Q F1(delete\255horizontal\255space \(M\255\\\))108 520.8 Q F0
-(Delete all spaces and tabs around point.)144 532.8 Q F1(kill\255r)108
-544.8 Q(egion)-.18 E F0 1.13(Kill the te)144 556.8 R 1.13
+592.8 Q F1(delete\255horizontal\255space \(M\255\\\))108 604.8 Q F0
+(Delete all spaces and tabs around point.)144 616.8 Q F1(kill\255r)108
+628.8 Q(egion)-.18 E F0 1.13(Kill the te)144 640.8 R 1.13
 (xt between the point and)-.15 F/F2 10/Times-Italic@0 SF(mark)3.63 E F0
 (\(sa)3.63 E -.15(ve)-.2 G 3.63(dc).15 G 1.13(ursor position\).)-3.63 F
 1.13(This te)6.13 F 1.13(xt is referred to as the)-.15 F F2 -.37(re)144
-568.8 S(gion)-.03 E F0(.)A F1(copy\255r)108 580.8 Q(egion\255as\255kill)
--.18 E F0(Cop)144 592.8 Q 2.5(yt)-.1 G(he te)-2.5 E(xt in the re)-.15 E
+652.8 S(gion)-.03 E F0(.)A F1(copy\255r)108 664.8 Q(egion\255as\255kill)
+-.18 E F0(Cop)144 676.8 Q 2.5(yt)-.1 G(he te)-2.5 E(xt in the re)-.15 E
 (gion to the kill b)-.15 E(uf)-.2 E(fer)-.25 E(.)-.55 E F1
-(copy\255backward\255w)108 604.8 Q(ord)-.1 E F0(Cop)144 616.8 Q 4.801
+(copy\255backward\255w)108 688.8 Q(ord)-.1 E F0(Cop)144 700.8 Q 4.801
 (yt)-.1 G 2.301(he w)-4.801 F 2.301(ord before point to the kill b)-.1 F
 (uf)-.2 E(fer)-.25 E 7.301(.T)-.55 G 2.301(he w)-7.301 F 2.3
-(ord boundaries are the same as)-.1 F F1(back-)4.8 E(ward\255w)144 628.8
-Q(ord)-.1 E F0(.)A F1(copy\255f)108 640.8 Q(orward\255w)-.25 E(ord)-.1 E
-F0(Cop)144 652.8 Q 4.507(yt)-.1 G 2.007(he w)-4.507 F 2.007(ord follo)
--.1 F 2.007(wing point to the kill b)-.25 F(uf)-.2 E(fer)-.25 E 7.008
-(.T)-.55 G 2.008(he w)-7.008 F 2.008(ord boundaries are the same as)-.1
-F F1 -.25(fo)4.508 G -.37(r-).25 G(ward\255w)144 664.8 Q(ord)-.1 E F0(.)
-A F1(yank \(C\255y\))108 676.8 Q F0 -1(Ya)144 688.8 S
-(nk the top of the kill ring into the b)1 E(uf)-.2 E(fer at point.)-.25
-E F1(yank\255pop \(M\255y\))108 700.8 Q F0
-(Rotate the kill ring, and yank the ne)144 712.8 Q 2.5(wt)-.25 G 2.5
-(op. Only)-2.5 F -.1(wo)2.5 G(rks follo).1 E(wing)-.25 E F1(yank)2.5 E
-F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A(GNU Readline 4.2)72 768 Q
-(2001 Mar 5)135.96 E(7)205.67 E EP
+(ord boundaries are the same as)-.1 F F1(back-)4.8 E(ward\255w)144 712.8
+Q(ord)-.1 E F0(.)A(GNU Readline 4.2a)72 768 Q(2001 October 9)123.745 E
+(7)197.895 E EP
 %%Page: 8 8
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
-/Times-Bold@0 SF(Numeric Ar)87 84 Q(guments)-.1 E(digit\255ar)108 96 Q
+/Times-Bold@0 SF(copy\255f)108 84 Q(orward\255w)-.25 E(ord)-.1 E F0(Cop)
+144 96 Q 4.507(yt)-.1 G 2.007(he w)-4.507 F 2.007(ord follo)-.1 F 2.007
+(wing point to the kill b)-.25 F(uf)-.2 E(fer)-.25 E 7.008(.T)-.55 G
+2.008(he w)-7.008 F 2.008(ord boundaries are the same as)-.1 F F1 -.25
+(fo)4.508 G -.37(r-).25 G(ward\255w)144 108 Q(ord)-.1 E F0(.)A F1
+(yank \(C\255y\))108 120 Q F0 -1(Ya)144 132 S
+(nk the top of the kill ring into the b)1 E(uf)-.2 E(fer at point.)-.25
+E F1(yank\255pop \(M\255y\))108 144 Q F0
+(Rotate the kill ring, and yank the ne)144 156 Q 2.5(wt)-.25 G 2.5
+(op. Only)-2.5 F -.1(wo)2.5 G(rks follo).1 E(wing)-.25 E F1(yank)2.5 E
+F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 172.8 Q
+(guments)-.1 E(digit\255ar)108 184.8 Q
 (gument \(M\2550, M\2551, ..., M\255\255\))-.1 E F0 .642
-(Add this digit to the ar)144 108 R .641
+(Add this digit to the ar)144 196.8 R .641
 (gument already accumulating, or start a ne)-.18 F 3.141(wa)-.25 G -.18
 (rg)-3.141 G 3.141(ument. M\255\255).18 F .641(starts a ne)3.141 F(g-)
--.15 E(ati)144 120 Q .3 -.15(ve a)-.25 H -.18(rg).15 G(ument.).18 E F1
-(uni)108 132 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0 .778
-(This is another w)144 144 R .779(ay to specify an ar)-.1 F 3.279
+-.15 E(ati)144 208.8 Q .3 -.15(ve a)-.25 H -.18(rg).15 G(ument.).18 E F1
+(uni)108 220.8 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0 .778
+(This is another w)144 232.8 R .779(ay to specify an ar)-.1 F 3.279
 (gument. If)-.18 F .779(this command is follo)3.279 F .779
 (wed by one or more digits,)-.25 F 1.376
 (optionally with a leading minus sign, those digits de\214ne the ar)144
-156 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144
-168 Q 1.17(wed by digits, e)-.25 F -.15(xe)-.15 G(cuting).15 E F1(uni)
+244.8 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144
+256.8 Q 1.17(wed by digits, e)-.25 F -.15(xe)-.15 G(cuting).15 E F1(uni)
 3.67 E -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0(ag)3.67 E 1.17
 (ain ends the numeric ar)-.05 F 1.17(gument, b)-.18 F 1.17(ut is other)
--.2 F(-)-.2 E .899(wise ignored.)144 180 R .898
+-.2 F(-)-.2 E .899(wise ignored.)144 268.8 R .898
 (As a special case, if this command is immediately follo)5.899 F .898
 (wed by a character that is)-.25 F .243
-(neither a digit or minus sign, the ar)144 192 R .243
+(neither a digit or minus sign, the ar)144 280.8 R .243
 (gument count for the ne)-.18 F .243(xt command is multiplied by four)
--.15 F 5.243(.T)-.55 G(he)-5.243 E(ar)144 204 Q .378
+-.15 F 5.243(.T)-.55 G(he)-5.243 E(ar)144 292.8 Q .378
 (gument count is initially one, so e)-.18 F -.15(xe)-.15 G .378
 (cuting this function the \214rst time mak).15 F .378(es the ar)-.1 F
-.378(gument count)-.18 F(four)144 216 Q 2.5(,as)-.4 G(econd time mak)
+.378(gument count)-.18 F(four)144 304.8 Q 2.5(,as)-.4 G(econd time mak)
 -2.5 E(es the ar)-.1 E(gument count sixteen, and so on.)-.18 E F1
-(Completing)87 232.8 Q(complete \(T)108 244.8 Q(AB\))-.9 E F0 1.908
-(Attempt to perform completion on the te)144 256.8 R 1.908
+(Completing)87 321.6 Q(complete \(T)108 333.6 Q(AB\))-.9 E F0 1.908
+(Attempt to perform completion on the te)144 345.6 R 1.908
 (xt before point.)-.15 F 1.909(The actual completion performed is)6.909
-F(application-speci\214c.)144 268.8 Q F1(Bash)5.518 E F0 3.018(,f)C .518
+F(application-speci\214c.)144 357.6 Q F1(Bash)5.518 E F0 3.018(,f)C .518
 (or instance, attempts completion treating the te)-3.018 F .517
-(xt as a v)-.15 F .517(ariable \(if the)-.25 F(te)144 280.8 Q .656
+(xt as a v)-.15 F .517(ariable \(if the)-.25 F(te)144 369.6 Q .656
 (xt be)-.15 F .656(gins with)-.15 F F1($)3.156 E F0 .656
 (\), username \(if the te)B .656(xt be)-.15 F .656(gins with)-.15 F F1
 (~)3.156 E F0 .656(\), hostname \(if the te)B .656(xt be)-.15 F .656
 (gins with)-.15 F F1(@)3.157 E F0 .657(\), or)B .93
-(command \(including aliases and functions\) in turn.)144 292.8 R .929
+(command \(including aliases and functions\) in turn.)144 381.6 R .929
 (If none of these produces a match, \214lename)5.929 F 1.273
-(completion is attempted.)144 304.8 R F1(Gdb)6.273 E F0 3.773(,o)C 3.773
+(completion is attempted.)144 393.6 R F1(Gdb)6.273 E F0 3.773(,o)C 3.773
 (nt)-3.773 G 1.273(he other hand, allo)-3.773 F 1.273
-(ws completion of program functions and)-.25 F -.25(va)144 316.8 S(riab\
+(ws completion of program functions and)-.25 F -.25(va)144 405.6 S(riab\
 les, and only attempts \214lename completion under certain circumstance\
-s.).25 E F1(possible\255completions \(M\255?\))108 328.8 Q F0
-(List the possible completions of the te)144 340.8 Q(xt before point.)
--.15 E F1(insert\255completions \(M\255*\))108 352.8 Q F0 .783
-(Insert all completions of the te)144 364.8 R .783
+s.).25 E F1(possible\255completions \(M\255?\))108 417.6 Q F0
+(List the possible completions of the te)144 429.6 Q(xt before point.)
+-.15 E F1(insert\255completions \(M\255*\))108 441.6 Q F0 .783
+(Insert all completions of the te)144 453.6 R .783
 (xt before point that w)-.15 F .783(ould ha)-.1 F 1.083 -.15(ve b)-.2 H
 .783(een generated by).15 F F1(possible\255com-)3.282 E(pletions)144
-376.8 Q F0(.)A F1(menu\255complete)108 388.8 Q F0 .928(Similar to)144
-400.8 R F1(complete)3.428 E F0 3.428(,b)C .929(ut replaces the w)-3.628
+465.6 Q F0(.)A F1(menu\255complete)108 477.6 Q F0 .928(Similar to)144
+489.6 R F1(complete)3.428 E F0 3.428(,b)C .929(ut replaces the w)-3.628
 F .929(ord to be completed with a single match from the list of)-.1 F
-1.194(possible completions.)144 412.8 R 1.194(Repeated e)6.194 F -.15
+1.194(possible completions.)144 501.6 R 1.194(Repeated e)6.194 F -.15
 (xe)-.15 G 1.194(cution of).15 F F1(menu\255complete)3.694 E F0 1.193
 (steps through the list of possible)3.694 F .828
-(completions, inserting each match in turn.)144 424.8 R .828
+(completions, inserting each match in turn.)144 513.6 R .828
 (At the end of the list of completions, the bell is rung)5.828 F 1.927
-(\(subject to the setting of Bbell\255style)144 436.8 R F1 4.427(\)a)C
+(\(subject to the setting of Bbell\255style)144 525.6 R F1 4.427(\)a)C
 1.927(nd the original text is r)-4.427 F(estor)-.18 E 4.426(ed. An)-.18
 F(ar)4.426 E 1.926(gument of)-.1 F/F2 10/Times-Italic@0 SF(n)4.426 E F1
-(mo)144 448.8 Q -.1(ve)-.1 G(s).1 E F2(n)3.145 E F1 .645(positions f)
+(mo)144 537.6 Q -.1(ve)-.1 G(s).1 E F2(n)3.145 E F1 .645(positions f)
 3.145 F .645(orward in the list of matches; a negati)-.25 F .845 -.1
 (ve a)-.1 H -.1(rg).1 G .645(ument may be used to mo).1 F -.1(ve)-.1 G
-.666(backward thr)144 460.8 R .666(ough the list.)-.18 F .665
+.666(backward thr)144 549.6 R .666(ough the list.)-.18 F .665
 (This command is intended to be bound to T)5.666 F .665(AB, b)-.9 F .665
-(ut is unbound)-.2 F(by default.)144 472.8 Q
-(delete\255char\255or\255list)108 484.8 Q F0 .373
-(Deletes the character under the cursor if not at the be)144 496.8 R
+(ut is unbound)-.2 F(by default.)144 561.6 Q
+(delete\255char\255or\255list)108 573.6 Q F0 .373
+(Deletes the character under the cursor if not at the be)144 585.6 R
 .374(ginning or end of the line \(lik)-.15 F(e)-.1 E F1(delete-char)
-2.874 E F0(\).)A(If at the end of the line, beha)144 508.8 Q -.15(ve)-.2
+2.874 E F0(\).)A(If at the end of the line, beha)144 597.6 Q -.15(ve)-.2
 G 2.5(si).15 G(dentically to)-2.5 E F1(possible-completions)2.5 E F0(.)A
-F1 -.25(Ke)87 525.6 S(yboard Macr).25 E(os)-.18 E(start\255kbd\255macr)
-108 537.6 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)).833 E F0(Be)144 549.6 Q
+F1 -.25(Ke)87 614.4 S(yboard Macr).25 E(os)-.18 E(start\255kbd\255macr)
+108 626.4 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)).833 E F0(Be)144 638.4 Q
 (gin sa)-.15 E(ving the characters typed into the current k)-.2 E -.15
-(ey)-.1 G(board macro.).15 E F1(end\255kbd\255macr)108 561.6 Q 2.5(o\()
--.18 G(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 573.6 Q
+(ey)-.1 G(board macro.).15 E F1(end\255kbd\255macr)108 650.4 Q 2.5(o\()
+-.18 G(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 662.4 Q
 (ving the characters typed into the current k)-.2 E -.15(ey)-.1 G
 (board macro and store the de\214nition.).15 E F1
-(call\255last\255kbd\255macr)108 585.6 Q 2.5(o\()-.18 G(C\255x e\))-2.5
-E F0(Re-e)144 597.6 Q -.15(xe)-.15 G 1(cute the last k).15 F -.15(ey)-.1
+(call\255last\255kbd\255macr)108 674.4 Q 2.5(o\()-.18 G(C\255x e\))-2.5
+E F0(Re-e)144 686.4 Q -.15(xe)-.15 G 1(cute the last k).15 F -.15(ey)-.1
 G .999(board macro de\214ned, by making the characters in the macro app\
-ear as if).15 F(typed at the k)144 609.6 Q -.15(ey)-.1 G(board.).15 E F1
-(Miscellaneous)87 626.4 Q -.18(re)108 638.4 S<ad72>.18 E
-(ead\255init\255\214le \(C\255x C\255r\))-.18 E F0 1.776
-(Read in the contents of the)144 650.4 R F2(inputr)4.276 E(c)-.37 E F0
-1.777(\214le, and incorporate an)4.276 F 4.277(yb)-.15 G 1.777
-(indings or v)-4.277 F 1.777(ariable assignments)-.25 F(found there.)144
-662.4 Q F1(abort \(C\255g\))108 674.4 Q F0 3.249
-(Abort the current editing command and ring the terminal')144 686.4 R
-5.748(sb)-.55 G 3.248(ell \(subject to the setting of)-5.748 F F1
-(bell\255style)144 698.4 Q F0(\).)A(GNU Readline 4.2)72 768 Q
-(2001 Mar 5)135.96 E(8)205.67 E EP
+ear as if).15 F(typed at the k)144 698.4 Q -.15(ey)-.1 G(board.).15 E
+(GNU Readline 4.2a)72 768 Q(2001 October 9)123.745 E(8)197.895 E EP
 %%Page: 9 9
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
-/Times-Bold@0 SF(do\255upper)108 84 Q(case\255v)-.18 E
-(ersion \(M\255a, M\255b, M\255)-.1 E/F2 10/Times-Italic@0 SF(x)A F1 2.5
-(,.)C(..\))-2.5 E F0 1.755(If the meta\214ed character)144 96 R F2(x)
-4.255 E F0 1.755(is lo)4.255 F 1.756
+/Times-Bold@0 SF(Miscellaneous)87 84 Q -.18(re)108 96 S<ad72>.18 E
+(ead\255init\255\214le \(C\255x C\255r\))-.18 E F0 1.776
+(Read in the contents of the)144 108 R/F2 10/Times-Italic@0 SF(inputr)
+4.276 E(c)-.37 E F0 1.777(\214le, and incorporate an)4.276 F 4.277(yb)
+-.15 G 1.777(indings or v)-4.277 F 1.777(ariable assignments)-.25 F
+(found there.)144 120 Q F1(abort \(C\255g\))108 132 Q F0 3.249
+(Abort the current editing command and ring the terminal')144 144 R
+5.748(sb)-.55 G 3.248(ell \(subject to the setting of)-5.748 F F1
+(bell\255style)144 156 Q F0(\).)A F1(do\255upper)108 168 Q(case\255v)
+-.18 E(ersion \(M\255a, M\255b, M\255)-.1 E F2(x)A F1 2.5(,.)C(..\))-2.5
+E F0 1.755(If the meta\214ed character)144 180 R F2(x)4.255 E F0 1.755
+(is lo)4.255 F 1.756
 (wercase, run the command that is bound to the corresponding)-.25 F
-(uppercase character)144 108 Q(.)-.55 E F1(pr)108 120 Q
-(e\214x\255meta \(ESC\))-.18 E F0(Metafy the ne)144 132 Q
+(uppercase character)144 192 Q(.)-.55 E F1(pr)108 204 Q
+(e\214x\255meta \(ESC\))-.18 E F0(Metafy the ne)144 216 Q
 (xt character typed.)-.15 E/F3 9/Times-Bold@0 SF(ESC)5 E F1(f)2.25 E F0
 (is equi)2.5 E -.25(va)-.25 G(lent to).25 E F1(Meta\255f)2.5 E F0(.)A F1
-(undo \(C\255_, C\255x C\255u\))108 144 Q F0
-(Incremental undo, separately remembered for each line.)144 156 Q F1
--2.29 -.18(re v)108 168 T(ert\255line \(M\255r\)).08 E F0 1.095
-(Undo all changes made to this line.)144 180 R 1.095(This is lik)6.095 F
+(undo \(C\255_, C\255x C\255u\))108 228 Q F0
+(Incremental undo, separately remembered for each line.)144 240 Q F1
+-2.29 -.18(re v)108 252 T(ert\255line \(M\255r\)).08 E F0 1.095
+(Undo all changes made to this line.)144 264 R 1.095(This is lik)6.095 F
 3.595(ee)-.1 G -.15(xe)-3.745 G 1.095(cuting the).15 F F1(undo)3.595 E
 F0 1.095(command enough times to)3.595 F
-(return the line to its initial state.)144 192 Q F1
-(tilde\255expand \(M\255&\))108 204 Q F0(Perform tilde e)144 216 Q
+(return the line to its initial state.)144 276 Q F1
+(tilde\255expand \(M\255&\))108 288 Q F0(Perform tilde e)144 300 Q
 (xpansion on the current w)-.15 E(ord.)-.1 E F1
-(set\255mark \(C\255@, M\255<space>\))108 228 Q F0
-(Set the mark to the point.)144 240 Q(If a numeric ar)5 E
+(set\255mark \(C\255@, M\255<space>\))108 312 Q F0
+(Set the mark to the point.)144 324 Q(If a numeric ar)5 E
 (gument is supplied, the mark is set to that position.)-.18 E F1
-(exchange\255point\255and\255mark \(C\255x C\255x\))108 252 Q F0(Sw)144
-264 Q .282(ap the point with the mark.)-.1 F .283
+(exchange\255point\255and\255mark \(C\255x C\255x\))108 336 Q F0(Sw)144
+348 Q .282(ap the point with the mark.)-.1 F .283
 (The current cursor position is set to the sa)5.283 F -.15(ve)-.2 G
 2.783(dp).15 G .283(osition, and the old)-2.783 F(cursor position is sa)
-144 276 Q -.15(ve)-.2 G 2.5(da).15 G 2.5(st)-2.5 G(he mark.)-2.5 E F1
-(character\255sear)108 288 Q(ch \(C\255]\))-.18 E F0 3.036(Ac)144 300 S
+144 360 Q -.15(ve)-.2 G 2.5(da).15 G 2.5(st)-2.5 G(he mark.)-2.5 E F1
+(character\255sear)108 372 Q(ch \(C\255]\))-.18 E F0 3.036(Ac)144 384 S
 .536(haracter is read and point is mo)-3.036 F -.15(ve)-.15 G 3.035(dt)
 .15 G 3.035(ot)-3.035 G .535(he ne)-3.035 F .535
 (xt occurrence of that character)-.15 F 5.535(.A)-.55 G(ne)-2.5 E -.05
 (ga)-.15 G(ti).05 E .835 -.15(ve c)-.25 H(ount).15 E(searches for pre)
-144 312 Q(vious occurrences.)-.25 E F1(character\255sear)108 324 Q
-(ch\255backward \(M\255C\255]\))-.18 E F0 3.543(Ac)144 336 S 1.043
+144 396 Q(vious occurrences.)-.25 E F1(character\255sear)108 408 Q
+(ch\255backward \(M\255C\255]\))-.18 E F0 3.543(Ac)144 420 S 1.043
 (haracter is read and point is mo)-3.543 F -.15(ve)-.15 G 3.544(dt).15 G
 3.544(ot)-3.544 G 1.044(he pre)-3.544 F 1.044
 (vious occurrence of that character)-.25 F 6.044(.A)-.55 G(ne)-2.5 E
 -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G
-(count searches for subsequent occurrences.)144 348 Q F1
-(insert\255comment \(M\255#\))108 360 Q F0 .291(The v)144 372 R .291
+(count searches for subsequent occurrences.)144 432 Q F1
+(insert\255comment \(M\255#\))108 444 Q F0 .291(The v)144 456 R .291
 (alue of the readline)-.25 F F1(comment\255begin)2.791 E F0 -.25(va)
 2.791 G .291(riable is inserted at the be).25 F .29
 (ginning of the current line,)-.15 F 1.277
-(and the line is accepted as if a ne)144 384 R 1.277
+(and the line is accepted as if a ne)144 468 R 1.277
 (wline had been typed.)-.25 F 1.277(The def)6.277 F 1.277(ault v)-.1 F
-1.277(alue of)-.25 F F1(comment\255begin)3.777 E F0(mak)144 396 Q
-(es the current line a shell comment.)-.1 E F1(dump\255functions)108 408
-Q F0 .627(Print all of the functions and their k)144 420 R .927 -.15
+1.277(alue of)-.25 F F1(comment\255begin)3.777 E F0(mak)144 480 Q
+(es the current line a shell comment.)-.1 E F1(dump\255functions)108 492
+Q F0 .627(Print all of the functions and their k)144 504 R .927 -.15
 (ey b)-.1 H .626(indings to the readline output stream.).15 F .626
 (If a numeric ar)5.626 F(gu-)-.18 E
-(ment is supplied, the output is formatted in such a w)144 432 Q
+(ment is supplied, the output is formatted in such a w)144 516 Q
 (ay that it can be made part of an)-.1 E F2(inputr)2.5 E(c)-.37 E F0
-(\214le.)2.5 E F1(dump\255v)108 444 Q(ariables)-.1 E F0 .283
-(Print all of the settable v)144 456 R .283(ariables and their v)-.25 F
+(\214le.)2.5 E F1(dump\255v)108 528 Q(ariables)-.1 E F0 .283
+(Print all of the settable v)144 540 R .283(ariables and their v)-.25 F
 .283(alues to the readline output stream.)-.25 F .283(If a numeric ar)
 5.283 F(gu-)-.18 E
-(ment is supplied, the output is formatted in such a w)144 468 Q
+(ment is supplied, the output is formatted in such a w)144 552 Q
 (ay that it can be made part of an)-.1 E F2(inputr)2.5 E(c)-.37 E F0
-(\214le.)2.5 E F1(dump\255macr)108 480 Q(os)-.18 E F0 .756
-(Print all of the readline k)144 492 R 1.056 -.15(ey s)-.1 H .756
+(\214le.)2.5 E F1(dump\255macr)108 564 Q(os)-.18 E F0 .756
+(Print all of the readline k)144 576 R 1.056 -.15(ey s)-.1 H .756
 (equences bound to macros and the strings the).15 F 3.256(yo)-.15 G
-3.256(uput. If)-3.256 F 3.255(an)3.255 G(umeric)-3.255 E(ar)144 504 Q
+3.256(uput. If)-3.256 F 3.255(an)3.255 G(umeric)-3.255 E(ar)144 588 Q
 .528(gument is supplied, the output is formatted in such a w)-.18 F .528
 (ay that it can be made part of an)-.1 F F2(inputr)3.028 E(c)-.37 E F0
-(\214le.)144 516 Q F1(emacs\255editing\255mode \(C\255e\))108 528 Q F0
-(When in)144 540 Q F1(vi)2.5 E F0(editing mode, this causes a switch to)
+(\214le.)144 600 Q F1(emacs\255editing\255mode \(C\255e\))108 612 Q F0
+(When in)144 624 Q F1(vi)2.5 E F0(editing mode, this causes a switch to)
 2.5 E F1(emacs)2.5 E F0(editing mode.)2.5 E F1
-(vi\255editing\255mode \(M\255C\255j\))108 552 Q F0(When in)144 564 Q F1
+(vi\255editing\255mode \(M\255C\255j\))108 636 Q F0(When in)144 648 Q F1
 (emacs)2.5 E F0(editing mode, this causes a switch to)2.5 E F1(vi)2.5 E
-F0(editing mode.)2.5 E/F4 10.95/Times-Bold@0 SF(DEF)72 580.8 Q -.548(AU)
+F0(editing mode.)2.5 E/F4 10.95/Times-Bold@0 SF(DEF)72 664.8 Q -.548(AU)
 -.986 G 2.014 -1.007(LT K).548 H(EY BINDINGS)1.007 E F0 .065(The follo)
-108 592.8 R .065(wing is a list of the def)-.25 F .065
+108 676.8 R .065(wing is a list of the def)-.25 F .065
 (ault emacs and vi bindings.)-.1 F .064
 (Characters with the eighth bit set are written as)5.064 F .615
-(M\255<character>, and are referred to as)108 604.8 R F2(meta\214ed)
+(M\255<character>, and are referred to as)108 688.8 R F2(meta\214ed)
 3.115 E F0 3.115(characters. The)3.115 F .616
 (printable ASCII characters not mentioned)3.116 F 1.116
-(in the list of emacs standard bindings are bound to the)108 616.8 R F1
+(in the list of emacs standard bindings are bound to the)108 700.8 R F1
 (self\255insert)3.615 E F0 1.115(function, which just inserts the gi)
 3.615 F -.15(ve)-.25 G(n).15 E .945(character into the input line.)108
-628.8 R .945(In vi insertion mode, all characters not speci\214cally me\
-ntioned are bound to)5.945 F F1(self\255insert)108 640.8 Q F0 5.359(.C)C
+712.8 R .945(In vi insertion mode, all characters not speci\214cally me\
+ntioned are bound to)5.945 F F1(self\255insert)108 724.8 Q F0 5.359(.C)C
 .359(haracters assigned to signal generation by)-5.359 F F2(stty)2.859 E
 F0 .359(\(1\) or the terminal dri).32 F -.15(ve)-.25 G 1.159 -.4(r, s)
-.15 H .358(uch as C-Z or C-C,).4 F .187(retain that function.)108 652.8
-R .187(Upper and lo)5.187 F .188(wer case meta\214ed characters are bou\
-nd to the same function in the emacs)-.25 F .305(mode meta k)108 664.8 R
--.15(ey)-.1 G 2.805(map. The).15 F .305(remaining characters are unboun\
-d, which causes readline to ring the bell \(subject)2.805 F
-(to the setting of the)108 676.8 Q F1(bell\255style)2.5 E F0 -.25(va)2.5
-G(riable\).).25 E F1(Emacs Mode)87 693.6 Q F0(Emacs Standard bindings)
-151.2 705.6 Q 2.5("C-@" set-mark)151.2 729.6 R(GNU Readline 4.2)72 768 Q
-(2001 Mar 5)135.96 E(9)205.67 E EP
+.15 H .358(uch as C-Z or C-C,).4 F(GNU Readline 4.2a)72 768 Q
+(2001 October 9)123.745 E(9)197.895 E EP
 %%Page: 10 10
 %%BeginPageSetup
 BP
 %%EndPageSetup
-/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R 2.5
-("C-A" be)151.2 84 R(ginning-of-line)-.15 E 2.5("C-B" backw)151.2 96 R
-(ard-char)-.1 E 2.5("C-D" delete-char)151.2 108 R 2.5("C-E" end-of-line)
-151.2 120 R 2.5("C-F" forw)151.2 132 R(ard-char)-.1 E 2.5("C-G" abort)
-151.2 144 R 2.5("C-H" backw)151.2 156 R(ard-delete-char)-.1 E 2.5
-("C-I" complete)151.2 168 R 2.5("C-J" accept-line)151.2 180 R 2.5
-("C-K" kill-line)151.2 192 R 2.5("C-L" clear)151.2 204 R(-screen)-.2 E
-2.5("C-M" accept-line)151.2 216 R 2.5("C-N" ne)151.2 228 R(xt-history)
--.15 E 2.5("C-P" pre)151.2 240 R(vious-history)-.25 E 2.5
-("C-Q" quoted-insert)151.2 252 R 2.5("C-R" re)151.2 264 R -.15(ve)-.25 G
-(rse-search-history).15 E 2.5("C-S" forw)151.2 276 R(ard-search-history)
--.1 E 2.5("C-T" transpose-chars)151.2 288 R 2.5("C-U" unix-line-discard)
-151.2 300 R 2.5("C-V" quoted-insert)151.2 312 R 2.5("C-W" unix-w)151.2
-324 R(ord-rubout)-.1 E 2.5("C-Y" yank)151.2 336 R 2.5("C-]" character)
-151.2 348 R(-search)-.2 E 2.5("C-_" undo)151.2 360 R 3.333("")151.2 372
-S(to "/")-.833 E(self-insert)5 E 2.5("0" to)151.2 384 R 2.5
-("9" self-insert)2.5 F 2.5(":" to)151.2 396 R 2.5("~" self-insert)2.5 F
-2.5("C-?" backw)151.2 408 R(ard-delete-char)-.1 E(Emacs Meta bindings)
-151.2 424.8 Q 2.5("M-C-G" abort)151.2 448.8 R 2.5("M-C-H" backw)151.2
-460.8 R(ard-kill-w)-.1 E(ord)-.1 E 2.5("M-C-I" tab-insert)151.2 472.8 R
-2.5("M-C-J" vi-editing-mode)151.2 484.8 R 2.5("M-C-M" vi-editing-mode)
-151.2 496.8 R 2.5("M-C-R" re)151.2 508.8 R -.15(ve)-.25 G(rt-line).15 E
-2.5("M-C-Y" yank-nth-ar)151.2 520.8 R(g)-.18 E 2.5("M-C-[" complete)
-151.2 532.8 R 2.5("M-C-]" character)151.2 544.8 R(-search-backw)-.2 E
-(ard)-.1 E 2.5("M-space" set-mark)151.2 556.8 R 2.5
-("M-#" insert-comment)151.2 568.8 R 2.5("M-&" tilde-e)151.2 580.8 R
-(xpand)-.15 E 2.5("M-*" insert-completions)151.2 592.8 R 2.5
-("M--" digit-ar)151.2 604.8 R(gument)-.18 E 2.5("M-." yank-last-ar)151.2
-616.8 R(g)-.18 E 2.5("M-0" digit-ar)151.2 628.8 R(gument)-.18 E 2.5
-("M-1" digit-ar)151.2 640.8 R(gument)-.18 E 2.5("M-2" digit-ar)151.2
-652.8 R(gument)-.18 E 2.5("M-3" digit-ar)151.2 664.8 R(gument)-.18 E 2.5
-("M-4" digit-ar)151.2 676.8 R(gument)-.18 E 2.5("M-5" digit-ar)151.2
-688.8 R(gument)-.18 E 2.5("M-6" digit-ar)151.2 700.8 R(gument)-.18 E 2.5
-("M-7" digit-ar)151.2 712.8 R(gument)-.18 E 2.5("M-8" digit-ar)151.2
-724.8 R(gument)-.18 E(GNU Readline 4.2)72 768 Q(2001 Mar 5)135.96 E(10)
-200.67 E EP
+/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R .187
+(retain that function.)108 84 R .187(Upper and lo)5.187 F .188(wer case\
+ meta\214ed characters are bound to the same function in the emacs)-.25
+F .305(mode meta k)108 96 R -.15(ey)-.1 G 2.805(map. The).15 F .305(rem\
+aining characters are unbound, which causes readline to ring the bell \
+\(subject)2.805 F(to the setting of the)108 108 Q/F1 10/Times-Bold@0 SF
+(bell\255style)2.5 E F0 -.25(va)2.5 G(riable\).).25 E F1(Emacs Mode)87
+124.8 Q F0(Emacs Standard bindings)151.2 136.8 Q 2.5("C-@" set-mark)
+151.2 160.8 R 2.5("C-A" be)151.2 172.8 R(ginning-of-line)-.15 E 2.5
+("C-B" backw)151.2 184.8 R(ard-char)-.1 E 2.5("C-D" delete-char)151.2
+196.8 R 2.5("C-E" end-of-line)151.2 208.8 R 2.5("C-F" forw)151.2 220.8 R
+(ard-char)-.1 E 2.5("C-G" abort)151.2 232.8 R 2.5("C-H" backw)151.2
+244.8 R(ard-delete-char)-.1 E 2.5("C-I" complete)151.2 256.8 R 2.5
+("C-J" accept-line)151.2 268.8 R 2.5("C-K" kill-line)151.2 280.8 R 2.5
+("C-L" clear)151.2 292.8 R(-screen)-.2 E 2.5("C-M" accept-line)151.2
+304.8 R 2.5("C-N" ne)151.2 316.8 R(xt-history)-.15 E 2.5("C-P" pre)151.2
+328.8 R(vious-history)-.25 E 2.5("C-Q" quoted-insert)151.2 340.8 R 2.5
+("C-R" re)151.2 352.8 R -.15(ve)-.25 G(rse-search-history).15 E 2.5
+("C-S" forw)151.2 364.8 R(ard-search-history)-.1 E 2.5
+("C-T" transpose-chars)151.2 376.8 R 2.5("C-U" unix-line-discard)151.2
+388.8 R 2.5("C-V" quoted-insert)151.2 400.8 R 2.5("C-W" unix-w)151.2
+412.8 R(ord-rubout)-.1 E 2.5("C-Y" yank)151.2 424.8 R 2.5
+("C-]" character)151.2 436.8 R(-search)-.2 E 2.5("C-_" undo)151.2 448.8
+R 3.333("")151.2 460.8 S(to "/")-.833 E(self-insert)5 E 2.5("0" to)151.2
+472.8 R 2.5("9" self-insert)2.5 F 2.5(":" to)151.2 484.8 R 2.5
+("~" self-insert)2.5 F 2.5("C-?" backw)151.2 496.8 R(ard-delete-char)-.1
+E(Emacs Meta bindings)151.2 513.6 Q 2.5("M-C-G" abort)151.2 537.6 R 2.5
+("M-C-H" backw)151.2 549.6 R(ard-kill-w)-.1 E(ord)-.1 E 2.5
+("M-C-I" tab-insert)151.2 561.6 R 2.5("M-C-J" vi-editing-mode)151.2
+573.6 R 2.5("M-C-M" vi-editing-mode)151.2 585.6 R 2.5("M-C-R" re)151.2
+597.6 R -.15(ve)-.25 G(rt-line).15 E 2.5("M-C-Y" yank-nth-ar)151.2 609.6
+R(g)-.18 E 2.5("M-C-[" complete)151.2 621.6 R 2.5("M-C-]" character)
+151.2 633.6 R(-search-backw)-.2 E(ard)-.1 E 2.5("M-space" set-mark)151.2
+645.6 R 2.5("M-#" insert-comment)151.2 657.6 R 2.5("M-&" tilde-e)151.2
+669.6 R(xpand)-.15 E 2.5("M-*" insert-completions)151.2 681.6 R 2.5
+("M--" digit-ar)151.2 693.6 R(gument)-.18 E 2.5("M-." yank-last-ar)151.2
+705.6 R(g)-.18 E 2.5("M-0" digit-ar)151.2 717.6 R(gument)-.18 E 2.5
+("M-1" digit-ar)151.2 729.6 R(gument)-.18 E(GNU Readline 4.2a)72 768 Q
+(2001 October 9)123.745 E(10)192.895 E EP
 %%Page: 11 11
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R 2.5
-("M-9" digit-ar)151.2 84 R(gument)-.18 E 2.5("M-<" be)151.2 96 R
-(ginning-of-history)-.15 E 2.5("M-=" possible-completions)151.2 108 R
-2.5("M->" end-of-history)151.2 120 R 2.5("M-?" possible-completions)
-151.2 132 R 2.5("M-B" backw)151.2 144 R(ard-w)-.1 E(ord)-.1 E 2.5
-("M-C" capitalize-w)151.2 156 R(ord)-.1 E 2.5("M-D" kill-w)151.2 168 R
-(ord)-.1 E 2.5("M-F" forw)151.2 180 R(ard-w)-.1 E(ord)-.1 E 2.5
-("M-L" do)151.2 192 R(wncase-w)-.25 E(ord)-.1 E 2.5
-("M-N" non-incremental-forw)151.2 204 R(ard-search-history)-.1 E 2.5
-("M-P" non-incremental-re)151.2 216 R -.15(ve)-.25 G(rse-search-history)
-.15 E 2.5("M-R" re)151.2 228 R -.15(ve)-.25 G(rt-line).15 E 2.5
-("M-T" transpose-w)151.2 240 R(ords)-.1 E 2.5("M-U" upcase-w)151.2 252 R
-(ord)-.1 E 2.5("M-Y" yank-pop)151.2 264 R 2.5
-("M-\\" delete-horizontal-space)151.2 276 R 2.5("M-~" tilde-e)151.2 288
-R(xpand)-.15 E 2.5("M-C-?" backw)151.2 300 R(ard-kill-w)-.1 E(ord)-.1 E
-2.5("M-_" yank-last-ar)151.2 312 R(g)-.18 E(Emacs Control-X bindings)
-151.2 328.8 Q 2.5("C-XC-G" abort)151.2 352.8 R 2.5
-("C-XC-R" re-read-init-\214le)151.2 364.8 R 2.5("C-XC-U" undo)151.2
-376.8 R 2.5("C-XC-X" e)151.2 388.8 R(xchange-point-and-mark)-.15 E 2.5
-("C-X\(" start-kbd-macro)151.2 400.8 R 2.5("C-X\)" end-kbd-macro)151.2
-412.8 R 2.5("C-XE" call-last-kbd-macro)151.2 424.8 R 2.5("C-XC-?" backw)
-151.2 436.8 R(ard-kill-line)-.1 E/F1 10/Times-Bold@0 SF
-(VI Mode bindings)87 465.6 Q F0(VI Insert Mode functions)151.2 477.6 Q
-2.5("C-D" vi-eof-maybe)151.2 501.6 R 2.5("C-H" backw)151.2 513.6 R
-(ard-delete-char)-.1 E 2.5("C-I" complete)151.2 525.6 R 2.5
-("C-J" accept-line)151.2 537.6 R 2.5("C-M" accept-line)151.2 549.6 R 2.5
-("C-R" re)151.2 561.6 R -.15(ve)-.25 G(rse-search-history).15 E 2.5
-("C-S" forw)151.2 573.6 R(ard-search-history)-.1 E 2.5
-("C-T" transpose-chars)151.2 585.6 R 2.5("C-U" unix-line-discard)151.2
-597.6 R 2.5("C-V" quoted-insert)151.2 609.6 R 2.5("C-W" unix-w)151.2
-621.6 R(ord-rubout)-.1 E 2.5("C-Y" yank)151.2 633.6 R 2.5("C-[" vi-mo)
-151.2 645.6 R -.15(ve)-.15 G(ment-mode).15 E 2.5("C-_" undo)151.2 657.6
-R 3.333("")151.2 669.6 S(to "~")-.833 E(self-insert)5 E 2.5("C-?" backw)
-151.2 681.6 R(ard-delete-char)-.1 E(VI Command Mode functions)151.2
-698.4 Q 2.5("C-D" vi-eof-maybe)151.2 722.4 R(GNU Readline 4.2)72 768 Q
-(2001 Mar 5)135.96 E(11)200.67 E EP
+("M-2" digit-ar)151.2 84 R(gument)-.18 E 2.5("M-3" digit-ar)151.2 96 R
+(gument)-.18 E 2.5("M-4" digit-ar)151.2 108 R(gument)-.18 E 2.5
+("M-5" digit-ar)151.2 120 R(gument)-.18 E 2.5("M-6" digit-ar)151.2 132 R
+(gument)-.18 E 2.5("M-7" digit-ar)151.2 144 R(gument)-.18 E 2.5
+("M-8" digit-ar)151.2 156 R(gument)-.18 E 2.5("M-9" digit-ar)151.2 168 R
+(gument)-.18 E 2.5("M-<" be)151.2 180 R(ginning-of-history)-.15 E 2.5
+("M-=" possible-completions)151.2 192 R 2.5("M->" end-of-history)151.2
+204 R 2.5("M-?" possible-completions)151.2 216 R 2.5("M-B" backw)151.2
+228 R(ard-w)-.1 E(ord)-.1 E 2.5("M-C" capitalize-w)151.2 240 R(ord)-.1 E
+2.5("M-D" kill-w)151.2 252 R(ord)-.1 E 2.5("M-F" forw)151.2 264 R(ard-w)
+-.1 E(ord)-.1 E 2.5("M-L" do)151.2 276 R(wncase-w)-.25 E(ord)-.1 E 2.5
+("M-N" non-incremental-forw)151.2 288 R(ard-search-history)-.1 E 2.5
+("M-P" non-incremental-re)151.2 300 R -.15(ve)-.25 G(rse-search-history)
+.15 E 2.5("M-R" re)151.2 312 R -.15(ve)-.25 G(rt-line).15 E 2.5
+("M-T" transpose-w)151.2 324 R(ords)-.1 E 2.5("M-U" upcase-w)151.2 336 R
+(ord)-.1 E 2.5("M-Y" yank-pop)151.2 348 R 2.5
+("M-\\" delete-horizontal-space)151.2 360 R 2.5("M-~" tilde-e)151.2 372
+R(xpand)-.15 E 2.5("M-C-?" backw)151.2 384 R(ard-kill-w)-.1 E(ord)-.1 E
+2.5("M-_" yank-last-ar)151.2 396 R(g)-.18 E(Emacs Control-X bindings)
+151.2 412.8 Q 2.5("C-XC-G" abort)151.2 436.8 R 2.5
+("C-XC-R" re-read-init-\214le)151.2 448.8 R 2.5("C-XC-U" undo)151.2
+460.8 R 2.5("C-XC-X" e)151.2 472.8 R(xchange-point-and-mark)-.15 E 2.5
+("C-X\(" start-kbd-macro)151.2 484.8 R 2.5("C-X\)" end-kbd-macro)151.2
+496.8 R 2.5("C-XE" call-last-kbd-macro)151.2 508.8 R 2.5("C-XC-?" backw)
+151.2 520.8 R(ard-kill-line)-.1 E/F1 10/Times-Bold@0 SF
+(VI Mode bindings)87 549.6 Q F0(VI Insert Mode functions)151.2 561.6 Q
+2.5("C-D" vi-eof-maybe)151.2 585.6 R 2.5("C-H" backw)151.2 597.6 R
+(ard-delete-char)-.1 E 2.5("C-I" complete)151.2 609.6 R 2.5
+("C-J" accept-line)151.2 621.6 R 2.5("C-M" accept-line)151.2 633.6 R 2.5
+("C-R" re)151.2 645.6 R -.15(ve)-.25 G(rse-search-history).15 E 2.5
+("C-S" forw)151.2 657.6 R(ard-search-history)-.1 E 2.5
+("C-T" transpose-chars)151.2 669.6 R 2.5("C-U" unix-line-discard)151.2
+681.6 R 2.5("C-V" quoted-insert)151.2 693.6 R 2.5("C-W" unix-w)151.2
+705.6 R(ord-rubout)-.1 E 2.5("C-Y" yank)151.2 717.6 R 2.5("C-[" vi-mo)
+151.2 729.6 R -.15(ve)-.15 G(ment-mode).15 E(GNU Readline 4.2a)72 768 Q
+(2001 October 9)123.745 E(11)192.895 E EP
 %%Page: 12 12
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R 2.5
-("C-E" emacs-editing-mode)151.2 84 R 2.5("C-G" abort)151.2 96 R 2.5
-("C-H" backw)151.2 108 R(ard-char)-.1 E 2.5("C-J" accept-line)151.2 120
-R 2.5("C-K" kill-line)151.2 132 R 2.5("C-L" clear)151.2 144 R(-screen)
--.2 E 2.5("C-M" accept-line)151.2 156 R 2.5("C-N" ne)151.2 168 R
-(xt-history)-.15 E 2.5("C-P" pre)151.2 180 R(vious-history)-.25 E 2.5
-("C-Q" quoted-insert)151.2 192 R 2.5("C-R" re)151.2 204 R -.15(ve)-.25 G
-(rse-search-history).15 E 2.5("C-S" forw)151.2 216 R(ard-search-history)
--.1 E 2.5("C-T" transpose-chars)151.2 228 R 2.5("C-U" unix-line-discard)
-151.2 240 R 2.5("C-V" quoted-insert)151.2 252 R 2.5("C-W" unix-w)151.2
-264 R(ord-rubout)-.1 E 2.5("C-Y" yank)151.2 276 R 2.5("C-_" vi-undo)
-151.2 288 R -4.166 3.333("" f)151.2 300 T(orw)-3.333 E(ard-char)-.1 E
-2.5("#" insert-comment)151.2 312 R 2.5("$" end-of-line)151.2 324 R 2.5
-("%" vi-match)151.2 336 R 2.5("&" vi-tilde-e)151.2 348 R(xpand)-.15 E
-2.5("*" vi-complete)151.2 360 R 2.5("+" ne)151.2 372 R(xt-history)-.15 E
-2.5("," vi-char)151.2 384 R(-search)-.2 E 2.5("-" pre)151.2 396 R
-(vious-history)-.25 E 2.5("." vi-redo)151.2 408 R 2.5("/" vi-search)
-151.2 420 R 2.5("0" be)151.2 432 R(ginning-of-line)-.15 E("1" to "9")
-151.2 444 Q(vi-ar)5 E(g-digit)-.18 E 2.5(";" vi-char)151.2 456 R
-(-search)-.2 E 2.5("=" vi-complete)151.2 468 R 2.5("?" vi-search)151.2
-480 R 2.5("A" vi-append-eol)151.2 492 R 2.5("B" vi-pre)151.2 504 R(v-w)
--.25 E(ord)-.1 E 2.5("C" vi-change-to)151.2 516 R 2.5("D" vi-delete-to)
-151.2 528 R 2.5("E" vi-end-w)151.2 540 R(ord)-.1 E 2.5("F" vi-char)151.2
-552 R(-search)-.2 E 2.5("G" vi-fetch-history)151.2 564 R 2.5
-("I" vi-insert-be)151.2 576 R(g)-.15 E 2.5("N" vi-search-ag)151.2 588 R
-(ain)-.05 E 2.5("P" vi-put)151.2 600 R 2.5("R" vi-replace)151.2 612 R
-2.5("S" vi-subst)151.2 624 R 2.5("T" vi-char)151.2 636 R(-search)-.2 E
-2.5("U" re)151.2 648 R -.15(ve)-.25 G(rt-line).15 E 2.5("W" vi-ne)151.2
-660 R(xt-w)-.15 E(ord)-.1 E 2.5("X" backw)151.2 672 R(ard-delete-char)
--.1 E 2.5("Y" vi-yank-to)151.2 684 R 2.5("\\" vi-complete)151.2 696 R
-2.5("^" vi-\214rst-print)151.2 708 R 2.5("_" vi-yank-ar)151.2 720 R(g)
--.18 E(GNU Readline 4.2)72 768 Q(2001 Mar 5)135.96 E(12)200.67 E EP
+("C-_" undo)151.2 84 R 3.333("")151.2 96 S(to "~")-.833 E(self-insert)5
+E 2.5("C-?" backw)151.2 108 R(ard-delete-char)-.1 E
+(VI Command Mode functions)151.2 124.8 Q 2.5("C-D" vi-eof-maybe)151.2
+148.8 R 2.5("C-E" emacs-editing-mode)151.2 160.8 R 2.5("C-G" abort)151.2
+172.8 R 2.5("C-H" backw)151.2 184.8 R(ard-char)-.1 E 2.5
+("C-J" accept-line)151.2 196.8 R 2.5("C-K" kill-line)151.2 208.8 R 2.5
+("C-L" clear)151.2 220.8 R(-screen)-.2 E 2.5("C-M" accept-line)151.2
+232.8 R 2.5("C-N" ne)151.2 244.8 R(xt-history)-.15 E 2.5("C-P" pre)151.2
+256.8 R(vious-history)-.25 E 2.5("C-Q" quoted-insert)151.2 268.8 R 2.5
+("C-R" re)151.2 280.8 R -.15(ve)-.25 G(rse-search-history).15 E 2.5
+("C-S" forw)151.2 292.8 R(ard-search-history)-.1 E 2.5
+("C-T" transpose-chars)151.2 304.8 R 2.5("C-U" unix-line-discard)151.2
+316.8 R 2.5("C-V" quoted-insert)151.2 328.8 R 2.5("C-W" unix-w)151.2
+340.8 R(ord-rubout)-.1 E 2.5("C-Y" yank)151.2 352.8 R 2.5("C-_" vi-undo)
+151.2 364.8 R -4.166 3.333("" f)151.2 376.8 T(orw)-3.333 E(ard-char)-.1
+E 2.5("#" insert-comment)151.2 388.8 R 2.5("$" end-of-line)151.2 400.8 R
+2.5("%" vi-match)151.2 412.8 R 2.5("&" vi-tilde-e)151.2 424.8 R(xpand)
+-.15 E 2.5("*" vi-complete)151.2 436.8 R 2.5("+" ne)151.2 448.8 R
+(xt-history)-.15 E 2.5("," vi-char)151.2 460.8 R(-search)-.2 E 2.5
+("-" pre)151.2 472.8 R(vious-history)-.25 E 2.5("." vi-redo)151.2 484.8
+R 2.5("/" vi-search)151.2 496.8 R 2.5("0" be)151.2 508.8 R
+(ginning-of-line)-.15 E("1" to "9")151.2 520.8 Q(vi-ar)5 E(g-digit)-.18
+E 2.5(";" vi-char)151.2 532.8 R(-search)-.2 E 2.5("=" vi-complete)151.2
+544.8 R 2.5("?" vi-search)151.2 556.8 R 2.5("A" vi-append-eol)151.2
+568.8 R 2.5("B" vi-pre)151.2 580.8 R(v-w)-.25 E(ord)-.1 E 2.5
+("C" vi-change-to)151.2 592.8 R 2.5("D" vi-delete-to)151.2 604.8 R 2.5
+("E" vi-end-w)151.2 616.8 R(ord)-.1 E 2.5("F" vi-char)151.2 628.8 R
+(-search)-.2 E 2.5("G" vi-fetch-history)151.2 640.8 R 2.5
+("I" vi-insert-be)151.2 652.8 R(g)-.15 E 2.5("N" vi-search-ag)151.2
+664.8 R(ain)-.05 E 2.5("P" vi-put)151.2 676.8 R 2.5("R" vi-replace)151.2
+688.8 R 2.5("S" vi-subst)151.2 700.8 R 2.5("T" vi-char)151.2 712.8 R
+(-search)-.2 E 2.5("U" re)151.2 724.8 R -.15(ve)-.25 G(rt-line).15 E
+(GNU Readline 4.2a)72 768 Q(2001 October 9)123.745 E(12)192.895 E EP
 %%Page: 13 13
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R 2.5
-("`" vi-goto-mark)151.2 84 R 2.5("a" vi-append-mode)151.2 96 R 2.5
-("b" vi-pre)151.2 108 R(v-w)-.25 E(ord)-.1 E 2.5("c" vi-change-to)151.2
-120 R 2.5("d" vi-delete-to)151.2 132 R 2.5("e" vi-end-w)151.2 144 R(ord)
--.1 E 2.5("f" vi-char)151.2 156 R(-search)-.2 E 2.5("h" backw)151.2 168
-R(ard-char)-.1 E 2.5("i" vi-insertion-mode)151.2 180 R 2.5("j" ne)151.2
-192 R(xt-history)-.15 E 2.5("k" pre)151.2 204 R(v-history)-.25 E 2.5
-("l" forw)151.2 216 R(ard-char)-.1 E 2.5("m" vi-set-mark)151.2 228 R 2.5
-("n" vi-search-ag)151.2 240 R(ain)-.05 E 2.5("p" vi-put)151.2 252 R 2.5
-("r" vi-change-char)151.2 264 R 2.5("s" vi-subst)151.2 276 R 2.5
-("t" vi-char)151.2 288 R(-search)-.2 E 2.5("u" vi-undo)151.2 300 R 2.5
-("w" vi-ne)151.2 312 R(xt-w)-.15 E(ord)-.1 E 2.5("x" vi-delete)151.2 324
-R 2.5("y" vi-yank-to)151.2 336 R 2.5("|" vi-column)151.2 348 R 2.5
-("~" vi-change-case)151.2 360 R/F1 10.95/Times-Bold@0 SF(SEE ALSO)72
-376.8 Q/F2 10/Times-Italic@0 SF(The Gnu Readline Libr)108 388.8 Q(ary)
+("W" vi-ne)151.2 84 R(xt-w)-.15 E(ord)-.1 E 2.5("X" backw)151.2 96 R
+(ard-delete-char)-.1 E 2.5("Y" vi-yank-to)151.2 108 R 2.5
+("\\" vi-complete)151.2 120 R 2.5("^" vi-\214rst-print)151.2 132 R 2.5
+("_" vi-yank-ar)151.2 144 R(g)-.18 E 2.5("`" vi-goto-mark)151.2 156 R
+2.5("a" vi-append-mode)151.2 168 R 2.5("b" vi-pre)151.2 180 R(v-w)-.25 E
+(ord)-.1 E 2.5("c" vi-change-to)151.2 192 R 2.5("d" vi-delete-to)151.2
+204 R 2.5("e" vi-end-w)151.2 216 R(ord)-.1 E 2.5("f" vi-char)151.2 228 R
+(-search)-.2 E 2.5("h" backw)151.2 240 R(ard-char)-.1 E 2.5
+("i" vi-insertion-mode)151.2 252 R 2.5("j" ne)151.2 264 R(xt-history)
+-.15 E 2.5("k" pre)151.2 276 R(v-history)-.25 E 2.5("l" forw)151.2 288 R
+(ard-char)-.1 E 2.5("m" vi-set-mark)151.2 300 R 2.5("n" vi-search-ag)
+151.2 312 R(ain)-.05 E 2.5("p" vi-put)151.2 324 R 2.5
+("r" vi-change-char)151.2 336 R 2.5("s" vi-subst)151.2 348 R 2.5
+("t" vi-char)151.2 360 R(-search)-.2 E 2.5("u" vi-undo)151.2 372 R 2.5
+("w" vi-ne)151.2 384 R(xt-w)-.15 E(ord)-.1 E 2.5("x" vi-delete)151.2 396
+R 2.5("y" vi-yank-to)151.2 408 R 2.5("|" vi-column)151.2 420 R 2.5
+("~" vi-change-case)151.2 432 R/F1 10.95/Times-Bold@0 SF(SEE ALSO)72
+448.8 Q/F2 10/Times-Italic@0 SF(The Gnu Readline Libr)108 460.8 Q(ary)
 -.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F2
-(The Gnu History Libr)108 400.8 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E
-(ox and Chet Rame)-.15 E(y)-.15 E F2(bash)108 412.8 Q F0(\(1\))A F1
-(FILES)72 429.6 Q F2(~/.inputr)109.666 441.6 Q(c)-.37 E F0(Indi)144
-453.6 Q(vidual)-.25 E/F3 10/Times-Bold@0 SF -.18(re)2.5 G(adline).18 E
-F0(initialization \214le)2.5 E F1 -.548(AU)72 470.4 S(THORS).548 E F0
-(Brian F)108 482.4 Q(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 E
-(bfox@gnu.or)108 494.4 Q(g)-.18 E(Chet Rame)108 511.2 Q 1.3 -.65(y, C)
+(The Gnu History Libr)108 472.8 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E
+(ox and Chet Rame)-.15 E(y)-.15 E F2(bash)108 484.8 Q F0(\(1\))A F1
+(FILES)72 501.6 Q F2(~/.inputr)109.666 513.6 Q(c)-.37 E F0(Indi)144
+525.6 Q(vidual)-.25 E/F3 10/Times-Bold@0 SF -.18(re)2.5 G(adline).18 E
+F0(initialization \214le)2.5 E F1 -.548(AU)72 542.4 S(THORS).548 E F0
+(Brian F)108 554.4 Q(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 E
+(bfox@gnu.or)108 566.4 Q(g)-.18 E(Chet Rame)108 583.2 Q 1.3 -.65(y, C)
 -.15 H(ase W).65 E(estern Reserv)-.8 E 2.5(eU)-.15 G(ni)-2.5 E -.15(ve)
--.25 G(rsity).15 E(chet@ins.CWR)108 523.2 Q(U.Edu)-.4 E F1 -.11(BU)72
-540 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .69(If you \214nd a b)
-108 552 R .69(ug in)-.2 F F3 -.18(re)3.19 G(adline,).18 E F0 .69
+-.25 G(rsity).15 E(chet@ins.CWR)108 595.2 Q(U.Edu)-.4 E F1 -.11(BU)72
+612 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .69(If you \214nd a b)
+108 624 R .69(ug in)-.2 F F3 -.18(re)3.19 G(adline,).18 E F0 .69
 (you should report it.)3.19 F .691(But \214rst, you should mak)5.69 F
 3.191(es)-.1 G .691(ure that it really is a b)-3.191 F(ug,)-.2 E
-(and that it appears in the latest v)108 564 Q(ersion of the)-.15 E F3
+(and that it appears in the latest v)108 636 Q(ersion of the)-.15 E F3
 -.18(re)2.5 G(adline).18 E F0(library that you ha)2.5 E -.15(ve)-.2 G(.)
-.15 E .705(Once you ha)108 580.8 R 1.005 -.15(ve d)-.2 H .705
+.15 E .705(Once you ha)108 652.8 R 1.005 -.15(ve d)-.2 H .705
 (etermined that a b).15 F .704(ug actually e)-.2 F .704(xists, mail a b)
 -.15 F .704(ug report to)-.2 F F2 -.2(bu)3.204 G(g\255r).2 E(eadline)
 -.37 E F0(@)A F2(gnu.or)A(g)-.37 E F0 5.704(.I)C 3.204(fy)-5.704 G(ou)
--3.204 E(ha)108 592.8 Q 1.809 -.15(ve a \214)-.2 H 1.509
+-3.204 E(ha)108 664.8 Q 1.809 -.15(ve a \214)-.2 H 1.509
 (x, you are welcome to mail that as well!).15 F 1.51
 (Suggestions and `philosophical' b)6.51 F 1.51(ug reports may be)-.2 F
-(mailed to)108 604.8 Q F2 -.2(bu)2.5 G(g-r).2 E(eadline)-.37 E F0(@)A F2
+(mailed to)108 676.8 Q F2 -.2(bu)2.5 G(g-r).2 E(eadline)-.37 E F0(@)A F2
 (gnu.or)A(g)-.37 E F0(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F3
-(gnu.bash.b)2.5 E(ug)-.2 E F0(.)A(Comments and b)108 621.6 Q
+(gnu.bash.b)2.5 E(ug)-.2 E F0(.)A(Comments and b)108 693.6 Q
 (ug reports concerning this manual page should be directed to)-.2 E F2
--.15(ch)2.5 G(et@ins.CWR).15 E -.25(U.)-.4 G(Edu).25 E F0(.).25 E F1
--.11(BU)72 638.4 S(GS).11 E F0(It')108 650.4 Q 2.5(st)-.55 G
-(oo big and too slo)-2.5 E -.65(w.)-.25 G(GNU Readline 4.2)72 768 Q
-(2001 Mar 5)135.96 E(13)200.67 E EP
+-.15(ch)2.5 G(et@ins.CWR).15 E -.25(U.)-.4 G(Edu).25 E F0(.).25 E
+(GNU Readline 4.2a)72 768 Q(2001 October 9)123.745 E(13)192.895 E EP
+%%Page: 14 14
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1
+10.95/Times-Bold@0 SF -.11(BU)72 84 S(GS).11 E F0(It')108 96 Q 2.5(st)
+-.55 G(oo big and too slo)-2.5 E -.65(w.)-.25 G(GNU Readline 4.2a)72 768
+Q(2001 October 9)123.745 E(14)192.895 E EP
 %%Trailer
 end
 %%EOF
index acc8d4d4297fae0ee6b7684e1a9ca79f4f60ed39..be9f662f389fce02d80b5eac60f7b5670ae6622c 100644 (file)
@@ -176,6 +176,16 @@ 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.
@@ -348,6 +358,14 @@ never sets it.
 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.
@@ -1076,6 +1094,15 @@ 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
 
index e5bf54d19bca235d840366cf7a93a4cbf28a4ed0..e4e56ff1d9c65f55547a8ce2435c009409fe494e 100644 (file)
@@ -10,7 +10,7 @@ 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-2000 Free Software Foundation, Inc.
+Copyright (C) 1988-2001 Free Software Foundation, Inc.
 
 Authored by Brian Fox and Chet Ramey.
 
@@ -235,7 +235,7 @@ 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 previous word, or, if between
+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}.
 
@@ -312,6 +312,10 @@ 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.
@@ -452,6 +456,11 @@ arrow keys.  The default is @samp{off}.
 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
@@ -503,6 +512,14 @@ 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 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
@@ -644,11 +661,11 @@ horizontal tab
 @item \v
 vertical tab
 @item \@var{nnn}
-the character whose @sc{ascii} code is the octal value @var{nnn}
-(one to three digits)
-@item \x@var{nnn}
-the character whose @sc{ascii} code is the hexadecimal value @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
@@ -1021,6 +1038,8 @@ 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,
@@ -1534,7 +1553,7 @@ matches were generated.
 @item complete
 @btindex complete
 @example
-@code{complete [-abcdefjkvu] [-o @var{comp-option}] [-A @var{action}] [-G @var{globpat}] [-W @var{wordlist}]
+@code{complete [-abcdefgjkvu] [-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{}]}
@@ -1617,6 +1636,9 @@ 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}).
 
index 8c46047458940934d6c2392fcac1ae651dbf1947..5346db74d50838a25caf8e9c6d0a8fd464dfbda2 100644 (file)
Binary files a/doc/rluserman.dvi and b/doc/rluserman.dvi differ
index 76b05d3918049385397e873cecd581a95281c9f0..93bfe63ac6401f9670a11aba44f674b7dbef3edd 100644 (file)
 <HTML>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!-- Created on October, 9  2001 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>
-<!-- This HTML file has been created by texi2html 1.52
-     from /usr/homes/chet/src/bash/readline-src/doc/rluserman.texinfo on 16 April 2001 -->
+<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">
 
-<TITLE>GNU Readline Library</TITLE>
 </HEAD>
-<BODY>
-<H1>GNU Readline Library User Interface</H1>
-<H2>Edition 4.2, for <CODE>Readline Library</CODE> Version 4.2.</H2>
-<H2>Apr 2001</H2>
-<ADDRESS>Brian Fox, Free Software Foundation</ADDRESS>
-<ADDRESS>Chet Ramey, Case Western Reserve University</ADDRESS>
-<P>
-<P><HR><P>
-<H1>Table of Contents</H1>
-<UL>
-<LI><A NAME="TOC1" HREF="rluserman.html#SEC1">Command Line Editing</A>
-<UL>
-<LI><A NAME="TOC2" HREF="rluserman.html#SEC2">Introduction to Line Editing</A>
-<LI><A NAME="TOC3" HREF="rluserman.html#SEC3">Readline Interaction</A>
-<UL>
-<LI><A NAME="TOC4" HREF="rluserman.html#SEC4">Readline Bare Essentials</A>
-<LI><A NAME="TOC5" HREF="rluserman.html#SEC5">Readline Movement Commands</A>
-<LI><A NAME="TOC6" HREF="rluserman.html#SEC6">Readline Killing Commands</A>
-<LI><A NAME="TOC7" HREF="rluserman.html#SEC7">Readline Arguments</A>
-<LI><A NAME="TOC8" HREF="rluserman.html#SEC8">Searching for Commands in the History</A>
-</UL>
-<LI><A NAME="TOC9" HREF="rluserman.html#SEC9">Readline Init File</A>
-<UL>
-<LI><A NAME="TOC10" HREF="rluserman.html#SEC10">Readline Init File Syntax</A>
-<LI><A NAME="TOC11" HREF="rluserman.html#SEC11">Conditional Init Constructs</A>
-<LI><A NAME="TOC12" HREF="rluserman.html#SEC12">Sample Init File</A>
-</UL>
-<LI><A NAME="TOC13" HREF="rluserman.html#SEC13">Bindable Readline Commands</A>
-<UL>
-<LI><A NAME="TOC14" HREF="rluserman.html#SEC14">Commands For Moving</A>
-<LI><A NAME="TOC15" HREF="rluserman.html#SEC15">Commands For Manipulating The History</A>
-<LI><A NAME="TOC16" HREF="rluserman.html#SEC16">Commands For Changing Text</A>
-<LI><A NAME="TOC17" HREF="rluserman.html#SEC17">Killing And Yanking</A>
-<LI><A NAME="TOC18" HREF="rluserman.html#SEC18">Specifying Numeric Arguments</A>
-<LI><A NAME="TOC19" HREF="rluserman.html#SEC19">Letting Readline Type For You</A>
-<LI><A NAME="TOC20" HREF="rluserman.html#SEC20">Keyboard Macros</A>
-<LI><A NAME="TOC21" HREF="rluserman.html#SEC21">Some Miscellaneous Commands</A>
-</UL>
-<LI><A NAME="TOC22" HREF="rluserman.html#SEC22">Readline vi Mode</A>
-</UL>
-</UL>
-<P><HR><P>
 
-<P>
+<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 that need to provide a command line interface.
+</P><P>
 
-</P>
-<P>
-Published by the Free Software Foundation <BR>
-59 Temple Place, Suite 330, <BR>
-Boston, MA 02111 USA
-
-</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>
+</TABLE></BLOCKQUOTE>
 <P>
-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.
 
-</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">[ &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>
+<A NAME="Command Line Editing"></A>
+<H1> 1. Command Line Editing </H1>
+<!--docid::SEC1::-->
 <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 Free Software Foundation.
-
-</P>
-<P>
-Copyright (C) 1988-2001 Free Software Foundation, Inc.
-
-</P>
-
-
-
-<H1><A NAME="SEC1" HREF="rluserman.html#TOC1">Command Line Editing</A></H1>
-
-<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>
 
-</P>
-
-<UL>
-<LI><A HREF="rluserman.html#SEC2">Introduction and Notation</A>: Notation used in this text.
-<LI><A HREF="rluserman.html#SEC3">Readline Interaction</A>: The minimum set of commands for editing a line.
-<LI><A HREF="rluserman.html#SEC9">Readline Init File</A>: Customizing Readline from a user's view.
-<LI><A HREF="rluserman.html#SEC13">Bindable Readline Commands</A>: A description of most of the Readline commands
-                               available for binding
-<LI><A HREF="rluserman.html#SEC22">Readline vi Mode</A>: A short description of how to make Readline
-                               behave like the vi editor.
-</UL>
-
-
-
-<H2><A NAME="SEC2" HREF="rluserman.html#TOC2">Introduction to Line Editing</A></H2>
-
+<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">[ &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>
+<H2> 1.1 Introduction to Line Editing </H2>
+<!--docid::SEC2::-->
 <P>
+
 The following paragraphs describe the notation used to represent
 keystrokes.
+</P><P>
 
-</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>
 
-</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.
@@ -131,39 +112,46 @@ 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>
 
-</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>
 
-</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>
 
-</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">Readline Init File</A>).
+(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>
-
-
-<H2><A NAME="SEC3" HREF="rluserman.html#TOC3">Readline Interaction</A></H2>
+</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>
-<A NAME="IDX1"></A>
 
-</P>
-<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
@@ -174,209 +162,234 @@ 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>
-
-<UL>
-<LI><A HREF="rluserman.html#SEC4">Readline Bare Essentials</A>: The least you need to know about Readline.
-<LI><A HREF="rluserman.html#SEC5">Readline Movement Commands</A>: Moving about the input line.
-<LI><A HREF="rluserman.html#SEC6">Readline Killing Commands</A>: How to delete text, and how to get it back!
-<LI><A HREF="rluserman.html#SEC7">Readline Arguments</A>: Giving numeric arguments to commands.
-<LI><A HREF="rluserman.html#SEC8">Searching</A>: Searching through previous lines.
-</UL>
-
-
-
-<H3><A NAME="SEC4" HREF="rluserman.html#TOC4">Readline Bare Essentials</A></H3>
+</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="IDX2"></A>
-<A NAME="IDX3"></A>
-<A NAME="IDX4"></A>
 
-</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>
 
-</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>
 
-</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>
 
-</P>
 <DL COMPACT>
-
 <DT><KBD>C-b</KBD>
-<DD>
-Move back one character.
+<DD>Move back one character.
 <DT><KBD>C-f</KBD>
-<DD>
-Move forward one character.
+<DD>Move forward one character.
 <DT><KBD>DEL</KBD> or <KBD>Backspace</KBD>
-<DD>
-Delete the character to the left of the cursor.
+<DD>Delete the character to the left of the cursor.
 <DT><KBD>C-d</KBD>
-<DD>
-Delete the character underneath the cursor.
+<DD>Delete the character underneath the cursor.
 <DT>Printing characters
-<DD>
-Insert the character into the line at the cursor.
+<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
+<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>
-
-
-<H3><A NAME="SEC5" HREF="rluserman.html#TOC5">Readline Movement Commands</A></H3>
-
+</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>
 
-</P>
 <DL COMPACT>
-
 <DT><KBD>C-a</KBD>
-<DD>
-Move to the start of the line.
+<DD>Move to the start of the line.
 <DT><KBD>C-e</KBD>
-<DD>
-Move to the end of the line.
+<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.
+<DD>Move forward a word, where a word is composed of letters and digits.
 <DT><KBD>M-b</KBD>
-<DD>
-Move backward a word.
+<DD>Move backward a word.
 <DT><KBD>C-l</KBD>
-<DD>
-Clear the screen, reprinting the current line at the top.
+<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>
-
-
-<H3><A NAME="SEC6" HREF="rluserman.html#TOC6">Readline Killing Commands</A></H3>
-
+</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="IDX5"></A>
-<A NAME="IDX6"></A>
 
-</P>
-<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>
 
-</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>
 
-</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="IDX7"></A>
+<A NAME="IDX3"></A>
+</P><P>
 
-</P>
-<P>
 Here is the list of commands for killing text.
+</P><P>
 
-</P>
 <DL COMPACT>
-
 <DT><KBD>C-k</KBD>
-<DD>
-Kill the text from the current cursor position to the end of the line.
+<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
+<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 previous word, or, if between
+<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
+<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>
 
-</P>
 <DL COMPACT>
-
 <DT><KBD>C-y</KBD>
-<DD>
-Yank the most recently killed text back into the buffer at the cursor.
+<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
+<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>
 
-
-
-<H3><A NAME="SEC7" HREF="rluserman.html#TOC7">Readline Arguments</A></H3>
-
+<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>
 
-</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
@@ -384,19 +397,31 @@ 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>
-
-
-<H3><A NAME="SEC8" HREF="rluserman.html#TOC8">Searching for Commands in the History</A></H3>
-
+</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>
 
-</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
@@ -412,9 +437,8 @@ If that variable has not been assigned a value, the <KBD>ESC</KBD> and
 <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>
 
-</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
@@ -425,121 +449,149 @@ 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>
 
-</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>
-
-
-<H2><A NAME="SEC9" HREF="rluserman.html#TOC9">Readline Init File</A></H2>
+</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>
-<A NAME="IDX8"></A>
 
-</P>
-<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 @env{INPUTRC}.  If
+file is taken from the value of the environment variable <CODE>INPUTRC</CODE>.  If
 that variable is unset, the default is <TT>`~/.inputrc'</TT>.
+</P><P>
 
-</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>
 
-</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>
 
-</P>
-
-<UL>
-<LI><A HREF="rluserman.html#SEC10">Readline Init File Syntax</A>: Syntax for the commands in the inputrc file.
-
-<LI><A HREF="rluserman.html#SEC11">Conditional Init Constructs</A>: Conditional key bindings in the inputrc file.
-
-<LI><A HREF="rluserman.html#SEC12">Sample Init File</A>: An example inputrc file.
-</UL>
+<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>
 
-<H3><A NAME="SEC10" HREF="rluserman.html#TOC10">Readline Init File Syntax</A></H3>
-
+<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">Conditional Init Constructs</A>).  Other lines
+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>
 
-</P>
 <DL COMPACT>
-
 <DT>Variable Settings
-<DD>
-You can modify the run-time behavior of Readline by
+<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>
 
-
-<PRE>
-set <VAR>variable</VAR> <VAR>value</VAR>
-</PRE>
+<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>
 
-
-<PRE>
-set editing-mode vi
-</PRE>
+<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. 
+</P><P>
 
 A great deal of run-time behavior is changeable with the following
 variables.
+</P><P>
 
-<A NAME="IDX9"></A>
+<A NAME="IDX4"></A>
 <DL COMPACT>
 
 <DT><CODE>bell-style</CODE>
-<DD>
-<A NAME="IDX10"></A>
+<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>comment-begin</CODE>
-<DD>
-<A NAME="IDX11"></A>
+<DD><A NAME="IDX6"></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-ignore-case</CODE>
-<DD>
-If set to <SAMP>`on'</SAMP>, Readline performs filename matching and completion
+<DD>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-query-items</CODE>
-<DD>
-<A NAME="IDX12"></A>
+<DD><A NAME="IDX7"></A>
 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,
@@ -547,73 +599,79 @@ 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</CODE>.
+<P>
 
 <DT><CODE>convert-meta</CODE>
-<DD>
-<A NAME="IDX13"></A>
+<DD><A NAME="IDX8"></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="IDX14"></A>
+<DD><A NAME="IDX9"></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="IDX15"></A>
+<DD><A NAME="IDX10"></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>enable-keypad</CODE>
-<DD>
-<A NAME="IDX16"></A>
+<DD><A NAME="IDX11"></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>expand-tilde</CODE>
-<DD>
-<A NAME="IDX17"></A>
+<DD><A NAME="IDX12"></A>
 If set to <SAMP>`on'</SAMP>, tilde expansion is performed when Readline
 attempts word completion.  The default is <SAMP>`off'</SAMP>.
+<P>
+
+<A NAME="IDX13"></A>
+If set to <SAMP>`on'</SAMP>, the history code attempts to place point at the
+same location on each history line retrived with <CODE>previous-history</CODE>
+or <CODE>next-history</CODE>.
+</P><P>
 
 <DT><CODE>horizontal-scroll-mode</CODE>
-<DD>
-<A NAME="IDX18"></A>
+<DD><A NAME="IDX14"></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="IDX19"></A>
-<A NAME="IDX20"></A>
+<DD><A NAME="IDX15"></A>
+<A NAME="IDX16"></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="IDX21"></A>
+<DD><A NAME="IDX17"></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">Searching for Commands in the History</A>).
+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="IDX22"></A>
+<DD><A NAME="IDX18"></A>
 Sets Readline's idea of the current keymap for key binding commands.
 Acceptable <CODE>keymap</CODE> names are
 <CODE>emacs</CODE>,
@@ -628,57 +686,68 @@ Acceptable <CODE>keymap</CODE> names are
 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>mark-directories</CODE>
-<DD>
-If set to <SAMP>`on'</SAMP>, completed directory names have a slash
+<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="IDX23"></A>
+<DD><A NAME="IDX19"></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>match-hidden-files</CODE>
+<DD><A NAME="IDX20"></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, unless the leading <SAMP>`.'</SAMP> is
+supplied by the user in the filename to be completed.
+This variable is <SAMP>`on'</SAMP> by default.
+<P>
 
 <DT><CODE>output-meta</CODE>
-<DD>
-<A NAME="IDX24"></A>
+<DD><A NAME="IDX21"></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>print-completions-horizontally</CODE>
-<DD>
-If set to <SAMP>`on'</SAMP>, Readline will display completions with matches
+<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>show-all-if-ambiguous</CODE>
-<DD>
-<A NAME="IDX25"></A>
+<DD><A NAME="IDX22"></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>visible-stats</CODE>
-<DD>
-<A NAME="IDX26"></A>
+<DD><A NAME="IDX23"></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
+<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
@@ -686,21 +755,19 @@ 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.
+</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:
-
-<PRE>
-Control-u: universal-argument
+<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>
+</pre></td></tr></table><P>
 
 In the above example, <KBD>C-u</KBD> is bound to the function
 <CODE>universal-argument</CODE>,
@@ -708,6 +775,7 @@ In the above example, <KBD>C-u</KBD> is bound to the function
 <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:
@@ -723,93 +791,80 @@ processing this key binding syntax:
 <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
+<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>
 
-
-<PRE>
-"\C-u": universal-argument
+<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>
+</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
+<DD>control prefix
 <DT><CODE><KBD>\M-</KBD></CODE>
-<DD>
-meta prefix
+<DD>meta prefix
 <DT><CODE><KBD>\e</KBD></CODE>
-<DD>
-an escape character
+<DD>an escape character
 <DT><CODE><KBD>\\</KBD></CODE>
-<DD>
-backslash
+<DD>backslash
 <DT><CODE><KBD>\"</KBD></CODE>
-<DD>
-<KBD>"</KBD>, a double quotation mark
+<DD><KBD>"</KBD>, a double quotation mark
 <DT><CODE><KBD>\'</KBD></CODE>
-<DD>
-<KBD>'</KBD>, a single quote or apostrophe
+<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)
+<DD>alert (bell)
 <DT><CODE>\b</CODE>
-<DD>
-backspace
+<DD>backspace
 <DT><CODE>\d</CODE>
-<DD>
-delete
+<DD>delete
 <DT><CODE>\f</CODE>
-<DD>
-form feed
+<DD>form feed
 <DT><CODE>\n</CODE>
-<DD>
-newline
+<DD>newline
 <DT><CODE>\r</CODE>
-<DD>
-carriage return
+<DD>carriage return
 <DT><CODE>\t</CODE>
-<DD>
-horizontal tab
+<DD>horizontal tab
 <DT><CODE>\v</CODE>
-<DD>
-vertical tab
+<DD>vertical tab
 <DT><CODE>\<VAR>nnn</VAR></CODE>
-<DD>
-the character whose ASCII code is the octal value <VAR>nnn</VAR>
-(one to three digits)
-<DT><CODE>\x<VAR>nnn</VAR></CODE>
-<DD>
-the character whose ASCII code is the hexadecimal value <VAR>nnn</VAR>
+<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.
@@ -819,107 +874,120 @@ 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:
-
-<PRE>
-"\C-x\\": "\\"
-</PRE>
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>"\C-x\\": "\\"
+</pre></td></tr></table></P><P>
 
 </DL>
+<P>
 
-
-
-<H3><A NAME="SEC11" HREF="rluserman.html#TOC11">Conditional Init Constructs</A></H3>
-
+<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>
 
-</P>
 <DL COMPACT>
-
 <DT><CODE>$if</CODE>
-<DD>
-The <CODE>$if</CODE> construct allows bindings to be made based on the
+<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
+<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
+<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
+<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:
-
-<PRE>
-$if Bash
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>$if Bash
 # Quote the current or previous word
 "\C-xq": "\eb\"\ef\""
 $endif
-</PRE>
-
-</DL>
+</pre></td></tr></table></DL>
+<P>
 
 <DT><CODE>$endif</CODE>
-<DD>
-This command, as seen in the previous example, terminates an
+<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
+<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
+<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>
 
-<PRE>
-$include /etc/inputrc
-</PRE>
-
-</DL>
-
-
-
-<H3><A NAME="SEC12" HREF="rluserman.html#TOC12">Sample Init File</A></H3>
-
+<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>
 
-</P>
-
-<PRE>
-# This file controls the behaviour of line input editing for
+<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.
 #
@@ -1016,368 +1084,497 @@ $if Ftp
 "\C-xt": "put \M-?"
 "\M-.": yank-last-arg
 $endif
-</PRE>
-
-
-
-<H2><A NAME="SEC13" HREF="rluserman.html#TOC13">Bindable Readline Commands</A></H2>
-
-
-<UL>
-<LI><A HREF="rluserman.html#SEC14">Commands For Moving</A>: Moving about the line.
-<LI><A HREF="rluserman.html#SEC15">Commands For History</A>: Getting at previous lines.
-<LI><A HREF="rluserman.html#SEC16">Commands For Text</A>: Commands for changing text.
-<LI><A HREF="rluserman.html#SEC17">Commands For Killing</A>: Commands for killing and yanking.
-<LI><A HREF="rluserman.html#SEC18">Numeric Arguments</A>: Specifying numeric arguments, repeat counts.
-<LI><A HREF="rluserman.html#SEC19">Commands For Completion</A>: Getting Readline to do the typing for you.
-<LI><A HREF="rluserman.html#SEC20">Keyboard Macros</A>: Saving and re-executing typed characters
-<LI><A HREF="rluserman.html#SEC21">Miscellaneous Commands</A>: Other miscellaneous commands.
-</UL>
+</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>
 
-</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>
-
-
-<H3><A NAME="SEC14" HREF="rluserman.html#TOC14">Commands For Moving</A></H3>
+</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="IDX24"></A>
 <DT><CODE>beginning-of-line (C-a)</CODE>
-<DD>
-<A NAME="IDX27"></A>
+<DD><A NAME="IDX25"></A>
 Move to the start of the current line.
+<P>
 
+<A NAME="IDX26"></A>
 <DT><CODE>end-of-line (C-e)</CODE>
-<DD>
-<A NAME="IDX28"></A>
+<DD><A NAME="IDX27"></A>
 Move to the end of the line.
+<P>
 
+<A NAME="IDX28"></A>
 <DT><CODE>forward-char (C-f)</CODE>
-<DD>
-<A NAME="IDX29"></A>
+<DD><A NAME="IDX29"></A>
 Move forward a character.
+<P>
 
-<DT><CODE>backward-char (C-b)</CODE>
-<DD>
 <A NAME="IDX30"></A>
+<DT><CODE>backward-char (C-b)</CODE>
+<DD><A NAME="IDX31"></A>
 Move back a character.
+<P>
 
+<A NAME="IDX32"></A>
 <DT><CODE>forward-word (M-f)</CODE>
-<DD>
-<A NAME="IDX31"></A>
+<DD><A NAME="IDX33"></A>
 Move forward to the end of the next word.  Words are composed of
 letters and digits.
+<P>
 
+<A NAME="IDX34"></A>
 <DT><CODE>backward-word (M-b)</CODE>
-<DD>
-<A NAME="IDX32"></A>
+<DD><A NAME="IDX35"></A>
 Move back to the start of the current or previous word.  Words are
 composed of letters and digits.
+<P>
 
+<A NAME="IDX36"></A>
 <DT><CODE>clear-screen (C-l)</CODE>
-<DD>
-<A NAME="IDX33"></A>
+<DD><A NAME="IDX37"></A>
 Clear the screen and redraw the current line,
 leaving the current line at the top of the screen.
+<P>
 
+<A NAME="IDX38"></A>
 <DT><CODE>redraw-current-line ()</CODE>
-<DD>
-<A NAME="IDX34"></A>
+<DD><A NAME="IDX39"></A>
 Refresh the current line.  By default, this is unbound.
+<P>
 
 </DL>
+<P>
 
-
-
-<H3><A NAME="SEC15" HREF="rluserman.html#TOC15">Commands For Manipulating The History</A></H3>
+<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="IDX40"></A>
 <DT><CODE>accept-line (Newline or Return)</CODE>
-<DD>
-<A NAME="IDX35"></A>
+<DD><A NAME="IDX41"></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="IDX42"></A>
 <DT><CODE>previous-history (C-p)</CODE>
-<DD>
-<A NAME="IDX36"></A>
+<DD><A NAME="IDX43"></A>
 Move `back' through the history list, fetching the previous command.
+<P>
 
+<A NAME="IDX44"></A>
 <DT><CODE>next-history (C-n)</CODE>
-<DD>
-<A NAME="IDX37"></A>
+<DD><A NAME="IDX45"></A>
 Move `forward' through the history list, fetching the next command.
+<P>
 
+<A NAME="IDX46"></A>
 <DT><CODE>beginning-of-history (M-&#60;)</CODE>
-<DD>
-<A NAME="IDX38"></A>
+<DD><A NAME="IDX47"></A>
 Move to the first line in the history.
+<P>
 
+<A NAME="IDX48"></A>
 <DT><CODE>end-of-history (M-&#62;)</CODE>
-<DD>
-<A NAME="IDX39"></A>
+<DD><A NAME="IDX49"></A>
 Move to the end of the input history, i.e., the line currently
 being entered.
+<P>
 
+<A NAME="IDX50"></A>
 <DT><CODE>reverse-search-history (C-r)</CODE>
-<DD>
-<A NAME="IDX40"></A>
+<DD><A NAME="IDX51"></A>
 Search backward starting at the current line and moving `up' through
 the history as necessary.  This is an incremental search.
+<P>
 
+<A NAME="IDX52"></A>
 <DT><CODE>forward-search-history (C-s)</CODE>
-<DD>
-<A NAME="IDX41"></A>
+<DD><A NAME="IDX53"></A>
 Search forward starting at the current line and moving `down' through
 the the history as necessary.  This is an incremental search.
+<P>
 
+<A NAME="IDX54"></A>
 <DT><CODE>non-incremental-reverse-search-history (M-p)</CODE>
-<DD>
-<A NAME="IDX42"></A>
+<DD><A NAME="IDX55"></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.
+<P>
 
+<A NAME="IDX56"></A>
 <DT><CODE>non-incremental-forward-search-history (M-n)</CODE>
-<DD>
-<A NAME="IDX43"></A>
+<DD><A NAME="IDX57"></A>
 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.
+<P>
 
+<A NAME="IDX58"></A>
 <DT><CODE>history-search-forward ()</CODE>
-<DD>
-<A NAME="IDX44"></A>
+<DD><A NAME="IDX59"></A>
 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.
+<P>
 
+<A NAME="IDX60"></A>
 <DT><CODE>history-search-backward ()</CODE>
-<DD>
-<A NAME="IDX45"></A>
+<DD><A NAME="IDX61"></A>
 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.
+<P>
 
+<A NAME="IDX62"></A>
 <DT><CODE>yank-nth-arg (M-C-y)</CODE>
-<DD>
-<A NAME="IDX46"></A>
+<DD><A NAME="IDX63"></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.
+<P>
 
+<A NAME="IDX64"></A>
 <DT><CODE>yank-last-arg (M-. or M-_)</CODE>
-<DD>
-<A NAME="IDX47"></A>
+<DD><A NAME="IDX65"></A>
 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</CODE>.
 Successive calls to <CODE>yank-last-arg</CODE> move back through the history
 list, inserting the last argument of each line in turn.
+<P>
 
 </DL>
+<P>
 
-
-
-<H3><A NAME="SEC16" HREF="rluserman.html#TOC16">Commands For Changing Text</A></H3>
+<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="IDX66"></A>
 <DT><CODE>delete-char (C-d)</CODE>
-<DD>
-<A NAME="IDX48"></A>
+<DD><A NAME="IDX67"></A>
 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</CODE>, then
 return EOF.
+<P>
 
+<A NAME="IDX68"></A>
 <DT><CODE>backward-delete-char (Rubout)</CODE>
-<DD>
-<A NAME="IDX49"></A>
+<DD><A NAME="IDX69"></A>
 Delete the character behind the cursor.  A numeric argument means
 to kill the characters instead of deleting them.
+<P>
 
+<A NAME="IDX70"></A>
 <DT><CODE>forward-backward-delete-char ()</CODE>
-<DD>
-<A NAME="IDX50"></A>
+<DD><A NAME="IDX71"></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="IDX72"></A>
 <DT><CODE>quoted-insert (C-q or C-v)</CODE>
-<DD>
-<A NAME="IDX51"></A>
+<DD><A NAME="IDX73"></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="IDX74"></A>
 <DT><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE>
-<DD>
-<A NAME="IDX52"></A>
+<DD><A NAME="IDX75"></A>
 Insert a tab character.
+<P>
 
-<DT><CODE>self-insert (a, b, A, 1, !, ...)</CODE>
-<DD>
-<A NAME="IDX53"></A>
+<A NAME="IDX76"></A>
+<DT><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE>
+<DD><A NAME="IDX77"></A>
 Insert yourself.
+<P>
 
+<A NAME="IDX78"></A>
 <DT><CODE>transpose-chars (C-t)</CODE>
-<DD>
-<A NAME="IDX54"></A>
+<DD><A NAME="IDX79"></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="IDX80"></A>
 <DT><CODE>transpose-words (M-t)</CODE>
-<DD>
-<A NAME="IDX55"></A>
+<DD><A NAME="IDX81"></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="IDX82"></A>
 <DT><CODE>upcase-word (M-u)</CODE>
-<DD>
-<A NAME="IDX56"></A>
+<DD><A NAME="IDX83"></A>
 Uppercase the current (or following) word.  With a negative argument,
 uppercase the previous word, but do not move the cursor.
+<P>
 
+<A NAME="IDX84"></A>
 <DT><CODE>downcase-word (M-l)</CODE>
-<DD>
-<A NAME="IDX57"></A>
+<DD><A NAME="IDX85"></A>
 Lowercase the current (or following) word.  With a negative argument,
 lowercase the previous word, but do not move the cursor.
+<P>
 
+<A NAME="IDX86"></A>
 <DT><CODE>capitalize-word (M-c)</CODE>
-<DD>
-<A NAME="IDX58"></A>
+<DD><A NAME="IDX87"></A>
 Capitalize the current (or following) word.  With a negative argument,
 capitalize the previous word, but do not move the cursor.
+<P>
 
 </DL>
+<P>
 
-
-
-<H3><A NAME="SEC17" HREF="rluserman.html#TOC17">Killing And Yanking</A></H3>
+<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="IDX88"></A>
 <DT><CODE>kill-line (C-k)</CODE>
-<DD>
-<A NAME="IDX59"></A>
+<DD><A NAME="IDX89"></A>
 Kill the text from point to the end of the line.
+<P>
 
+<A NAME="IDX90"></A>
 <DT><CODE>backward-kill-line (C-x Rubout)</CODE>
-<DD>
-<A NAME="IDX60"></A>
+<DD><A NAME="IDX91"></A>
 Kill backward to the beginning of the line.
+<P>
 
+<A NAME="IDX92"></A>
 <DT><CODE>unix-line-discard (C-u)</CODE>
-<DD>
-<A NAME="IDX61"></A>
+<DD><A NAME="IDX93"></A>
 Kill backward from the cursor to the beginning of the current line.
+<P>
 
+<A NAME="IDX94"></A>
 <DT><CODE>kill-whole-line ()</CODE>
-<DD>
-<A NAME="IDX62"></A>
+<DD><A NAME="IDX95"></A>
 Kill all characters on the current line, no matter where point is.
 By default, this is unbound.
+<P>
 
+<A NAME="IDX96"></A>
 <DT><CODE>kill-word (M-d)</CODE>
-<DD>
-<A NAME="IDX63"></A>
+<DD><A NAME="IDX97"></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="IDX98"></A>
 <DT><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE>
-<DD>
-<A NAME="IDX64"></A>
+<DD><A NAME="IDX99"></A>
 Kill the word behind point.
 Word boundaries are the same as <CODE>backward-word</CODE>.
+<P>
 
+<A NAME="IDX100"></A>
 <DT><CODE>unix-word-rubout (C-w)</CODE>
-<DD>
-<A NAME="IDX65"></A>
+<DD><A NAME="IDX101"></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="IDX102"></A>
 <DT><CODE>delete-horizontal-space ()</CODE>
-<DD>
-<A NAME="IDX66"></A>
+<DD><A NAME="IDX103"></A>
 Delete all spaces and tabs around point.  By default, this is unbound.
+<P>
 
+<A NAME="IDX104"></A>
 <DT><CODE>kill-region ()</CODE>
-<DD>
-<A NAME="IDX67"></A>
+<DD><A NAME="IDX105"></A>
 Kill the text in the current region.
 By default, this command is unbound.
+<P>
 
+<A NAME="IDX106"></A>
 <DT><CODE>copy-region-as-kill ()</CODE>
-<DD>
-<A NAME="IDX68"></A>
+<DD><A NAME="IDX107"></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="IDX108"></A>
 <DT><CODE>copy-backward-word ()</CODE>
-<DD>
-<A NAME="IDX69"></A>
+<DD><A NAME="IDX109"></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="IDX110"></A>
 <DT><CODE>copy-forward-word ()</CODE>
-<DD>
-<A NAME="IDX70"></A>
+<DD><A NAME="IDX111"></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="IDX112"></A>
 <DT><CODE>yank (C-y)</CODE>
-<DD>
-<A NAME="IDX71"></A>
+<DD><A NAME="IDX113"></A>
 Yank the top of the kill ring into the buffer at point.
+<P>
 
+<A NAME="IDX114"></A>
 <DT><CODE>yank-pop (M-y)</CODE>
-<DD>
-<A NAME="IDX72"></A>
+<DD><A NAME="IDX115"></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>
 
-
-
-<H3><A NAME="SEC18" HREF="rluserman.html#TOC18">Specifying Numeric Arguments</A></H3>
+<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>
 
-<DT><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, ... <KBD>M--</KBD>)</CODE>
-<DD>
-<A NAME="IDX73"></A>
+<A NAME="IDX116"></A>
+<DT><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE>
+<DD><A NAME="IDX117"></A>
 Add this digit to the argument already accumulating, or start a new
 argument.  <KBD>M--</KBD> starts a negative argument.
+<P>
 
+<A NAME="IDX118"></A>
 <DT><CODE>universal-argument ()</CODE>
-<DD>
-<A NAME="IDX74"></A>
+<DD><A NAME="IDX119"></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.
@@ -1391,34 +1588,51 @@ 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>
 
-
-
-<H3><A NAME="SEC19" HREF="rluserman.html#TOC19">Letting Readline Type For You</A></H3>
+<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="IDX120"></A>
 <DT><CODE>complete (<KBD>TAB</KBD>)</CODE>
-<DD>
-<A NAME="IDX75"></A>
+<DD><A NAME="IDX121"></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="IDX122"></A>
 <DT><CODE>possible-completions (M-?)</CODE>
-<DD>
-<A NAME="IDX76"></A>
+<DD><A NAME="IDX123"></A>
 List the possible completions of the text before point.
+<P>
 
+<A NAME="IDX124"></A>
 <DT><CODE>insert-completions (M-*)</CODE>
-<DD>
-<A NAME="IDX77"></A>
+<DD><A NAME="IDX125"></A>
 Insert all completions of the text before point that would have
 been generated by <CODE>possible-completions</CODE>.
+<P>
 
+<A NAME="IDX126"></A>
 <DT><CODE>menu-complete ()</CODE>
-<DD>
-<A NAME="IDX78"></A>
+<DD><A NAME="IDX127"></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
@@ -1431,178 +1645,485 @@ 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="IDX128"></A>
 <DT><CODE>delete-char-or-list ()</CODE>
-<DD>
-<A NAME="IDX79"></A>
+<DD><A NAME="IDX129"></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>
 
-
-
-<H3><A NAME="SEC20" HREF="rluserman.html#TOC20">Keyboard Macros</A></H3>
+<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="IDX130"></A>
 <DT><CODE>start-kbd-macro (C-x ()</CODE>
-<DD>
-<A NAME="IDX80"></A>
+<DD><A NAME="IDX131"></A>
 Begin saving the characters typed into the current keyboard macro.
+<P>
 
+<A NAME="IDX132"></A>
 <DT><CODE>end-kbd-macro (C-x ))</CODE>
-<DD>
-<A NAME="IDX81"></A>
+<DD><A NAME="IDX133"></A>
 Stop saving the characters typed into the current keyboard macro
 and save the definition.
+<P>
 
+<A NAME="IDX134"></A>
 <DT><CODE>call-last-kbd-macro (C-x e)</CODE>
-<DD>
-<A NAME="IDX82"></A>
+<DD><A NAME="IDX135"></A>
 Re-execute the last keyboard macro defined, by making the characters
 in the macro appear as if typed at the keyboard.
+<P>
 
 </DL>
+<P>
 
-
-
-<H3><A NAME="SEC21" HREF="rluserman.html#TOC21">Some Miscellaneous Commands</A></H3>
+<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="IDX136"></A>
 <DT><CODE>re-read-init-file (C-x C-r)</CODE>
-<DD>
-<A NAME="IDX83"></A>
+<DD><A NAME="IDX137"></A>
 Read in the contents of the <VAR>inputrc</VAR> file, and incorporate
 any bindings or variable assignments found there.
+<P>
 
+<A NAME="IDX138"></A>
 <DT><CODE>abort (C-g)</CODE>
-<DD>
-<A NAME="IDX84"></A>
+<DD><A NAME="IDX139"></A>
 Abort the current editing command and
 ring the terminal's bell (subject to the setting of
 <CODE>bell-style</CODE>).
+<P>
 
-<DT><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, ...)</CODE>
-<DD>
-<A NAME="IDX85"></A>
+<A NAME="IDX140"></A>
+<DT><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, <small>...</small>)</CODE>
+<DD><A NAME="IDX141"></A>
 If the metafied character <VAR>x</VAR> is lowercase, run the command
 that is bound to the corresponding uppercase character.
+<P>
 
+<A NAME="IDX142"></A>
 <DT><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE>
-<DD>
-<A NAME="IDX86"></A>
+<DD><A NAME="IDX143"></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="IDX144"></A>
 <DT><CODE>undo (C-_ or C-x C-u)</CODE>
-<DD>
-<A NAME="IDX87"></A>
+<DD><A NAME="IDX145"></A>
 Incremental undo, separately remembered for each line.
+<P>
 
+<A NAME="IDX146"></A>
 <DT><CODE>revert-line (M-r)</CODE>
-<DD>
-<A NAME="IDX88"></A>
+<DD><A NAME="IDX147"></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="IDX148"></A>
 <DT><CODE>tilde-expand (M-~)</CODE>
-<DD>
-<A NAME="IDX89"></A>
+<DD><A NAME="IDX149"></A>
 Perform tilde expansion on the current word.
+<P>
 
+<A NAME="IDX150"></A>
 <DT><CODE>set-mark (C-@)</CODE>
-<DD>
-<A NAME="IDX90"></A>
+<DD><A NAME="IDX151"></A>
 Set the mark to the point.  If a
 numeric argument is supplied, the mark is set to that position.
+<P>
 
+<A NAME="IDX152"></A>
 <DT><CODE>exchange-point-and-mark (C-x C-x)</CODE>
-<DD>
-<A NAME="IDX91"></A>
+<DD><A NAME="IDX153"></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="IDX154"></A>
 <DT><CODE>character-search (C-])</CODE>
-<DD>
-<A NAME="IDX92"></A>
+<DD><A NAME="IDX155"></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="IDX156"></A>
 <DT><CODE>character-search-backward (M-C-])</CODE>
-<DD>
-<A NAME="IDX93"></A>
+<DD><A NAME="IDX157"></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="IDX158"></A>
 <DT><CODE>insert-comment (M-#)</CODE>
-<DD>
-<A NAME="IDX94"></A>
+<DD><A NAME="IDX159"></A>
 The value of the <CODE>comment-begin</CODE>
 variable is inserted at the beginning of the current line,
 and the line is accepted as if a newline had been typed.
+<P>
 
+<A NAME="IDX160"></A>
 <DT><CODE>dump-functions ()</CODE>
-<DD>
-<A NAME="IDX95"></A>
+<DD><A NAME="IDX161"></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="IDX162"></A>
 <DT><CODE>dump-variables ()</CODE>
-<DD>
-<A NAME="IDX96"></A>
+<DD><A NAME="IDX163"></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="IDX164"></A>
 <DT><CODE>dump-macros ()</CODE>
-<DD>
-<A NAME="IDX97"></A>
+<DD><A NAME="IDX165"></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>
 
 </DL>
+<P>
 
-
-
-<H2><A NAME="SEC22" HREF="rluserman.html#TOC22">Readline vi Mode</A></H2>
-
+<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">[ &gt; ]</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">[ &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>
+<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 1003.2 standard.
+</P><P>
 
-</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>
 
-</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>
+
+<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>
+</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>
+
+</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>October, 9  2001</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>
 
-</P>
+<HR SIZE=1>
+<BR>  
+<FONT SIZE="-1">
+This document was generated
+by <I>Chet Ramey</I> on <I>October, 9  2001</I>
+using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
+"><I>texi2html</I></A>
 
-<P><HR><P>
-This document was generated on 16 April 2001 using the
-<A HREF="http://wwwinfo.cern.ch/dis/texi2html/">texi2html</A>
-translator version 1.52.</P>
 </BODY>
 </HTML>
index 1d94c93ca708a01c33631f34e53d2fa173a06afc..63ccdf08ba6fe6c685091439953b00f4062ef6bc 100644 (file)
@@ -232,7 +232,7 @@ available to be yanked back later, when you are typing another line.
      as those used by `M-f'.
 
 `M-<DEL>'
-     Kill from the cursor the start of the previous word, or, if between
+     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'.
 
@@ -305,6 +305,10 @@ 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.
@@ -419,6 +423,10 @@ Variable Settings
           If set to `on', tilde expansion is performed when Readline
           attempts word completion.  The default is `off'.
 
+          If set to `on', the history code attempts to place point at
+          the same location on each history line retrived with
+          `previous-history' or `next-history'.
+
     `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
@@ -458,6 +466,13 @@ Variable Settings
           asterisk (`*') at the start of history lines which have been
           modified.  This variable is `off' by default.
 
+    `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, unless the leading `.' is
+          supplied by the user in the filename to be completed.  This
+          variable is `on' by default.
+
     `output-meta'
           If set to `on', Readline will display characters with the
           eighth bit set directly rather than as a meta-prefixed escape
@@ -578,13 +593,13 @@ Key Bindings
           vertical tab
 
     `\NNN'
-          the character whose ASCII code is the octal value NNN (one to
-          three digits)
-
-    `\xNNN'
-          the character whose ASCII code is the hexadecimal value 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
@@ -928,7 +943,8 @@ Commands For Changing Text
 
 `transpose-words (M-t)'
      Drag the word before point past the word after point, moving point
-     past that word as well.
+     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
@@ -1185,21 +1201,21 @@ Node: Readline Interaction\7f3837
 Node: Readline Bare Essentials\7f5025
 Node: Readline Movement Commands\7f6807
 Node: Readline Killing Commands\7f7765
-Node: Readline Arguments\7f9676
-Node: Searching\7f10713
-Node: Readline Init File\7f12670
-Node: Readline Init File Syntax\7f13732
-Node: Conditional Init Constructs\7f23655
-Node: Sample Init File\7f26181
-Node: Bindable Readline Commands\7f29352
-Node: Commands For Moving\7f30403
-Node: Commands For History\7f31253
-Node: Commands For Text\7f34112
-Node: Commands For Killing\7f36100
-Node: Numeric Arguments\7f38052
-Node: Commands For Completion\7f39181
-Node: Keyboard Macros\7f40714
-Node: Miscellaneous Commands\7f41274
-Node: Readline vi Mode\7f44068
+Node: Readline Arguments\7f9675
+Node: Searching\7f10712
+Node: Readline Init File\7f12856
+Node: Readline Init File Syntax\7f13918
+Node: Conditional Init Constructs\7f24369
+Node: Sample Init File\7f26895
+Node: Bindable Readline Commands\7f30066
+Node: Commands For Moving\7f31117
+Node: Commands For History\7f31967
+Node: Commands For Text\7f34826
+Node: Commands For Killing\7f36918
+Node: Numeric Arguments\7f38870
+Node: Commands For Completion\7f39999
+Node: Keyboard Macros\7f41532
+Node: Miscellaneous Commands\7f42092
+Node: Readline vi Mode\7f44886
 \1f
 End Tag Table
index 705766a9faf185497d70bef717a32d3674ed8742..c6b807ef5e39ee3fb6ec789bdb2a0f0345d5c72a 100644 (file)
@@ -8,7 +8,7 @@
 %DVIPSWebPage: (www.radicaleye.com)
 %DVIPSCommandLine: dvips -D 300 -t letter -o rluserman.ps rluserman.dvi
 %DVIPSParameters: dpi=300, compressed
-%DVIPSSource:  TeX output 2001.04.16:1105
+%DVIPSSource:  TeX output 2001.10.09:1508
 %%BeginProcSet: texc.pro
 %!
 /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -163,8 +163,8 @@ D<39FFF80FF8A2390FC001C015803907E00300A26D5A00031306EBF80E0001130C13FC00
 005B13FEEB7E30A26D5AA214E06D5AA26D5AA26DC7FCA21306A25B1230EA781CEAFC185B
 1370EA68E0EA7FC0001FC8FC1D237F9720>I E
 %EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fc cmsl10 10.95 39
-/Fc 39 122 df<EAFFF0A20C027E8A0F>45 D<1408140C141C143CA2147C147E149EA2EB
+%DVIPSBitmapFont: Fc cmsl10 10.95 40
+/Fc 40 122 df<EAFFF0A20C027E8A0F>45 D<1408140C141C143CA2147C147E149EA2EB
 011EA21302801304A21308A20110138014071320A2EB7FFF90384007C0EB8003A2EA0100
 A21202EC01E01206001F130339FF801FFE1F207F9F22>65 D<0007B5FC3900F803C09038
 7801E0EC00F04913F8A515F03801E001EC03E015C0EC0F809038FFFE009038E00F803903
@@ -177,62 +177,64 @@ C003C0EC01E015F0A21400A2485A1401A215E01403EC07C0390F000F80EC3E00B512F01D
 04A414043901E00800A31438EBFFF8EBE0383803C010A4EC00081510485AA21520A21560
 15C0380F00011407B612801E1F7E9E1F>I<0007B512F83900F800780178133815185B15
 08A53901E00800A314181438EBFFF83803C0301410A491C7FC485AA648C8FC7FEAFFFC1D
-1F7E9E1E>I<3807FF803800F8001378A25BA6485AA6485AA6485AA648C7FC7FEAFFF011
-1F7E9E10>73 D<3A07FF803FE03A00F8001F000178130C5D4913205D5D4AC7FC14021408
-48485A5C146014F013E1EBE4F83803C878EBD07CEBE03CEBC03E141E141F48487E811407
-81140381380F00016D487E39FFF00FFE231F7E9E23>75 D<3807FFE0D800FCC7FC1378A2
-5BA6485AA6485AA41580EC0100EA0780A25C14021406140E380F001E147CB512FC191F7E
-9E1C>I<D807F8EB7FC0D8007CEB1F00150C015E1304019E5B138FA2EB8780A2EB83C0D8
-01035BEB01E0A2EB00F0A2147800025C143CA2141EA2140F485CEC07C0A21403A2140100
-0C5C001E1300B47E221F7E9E22>78 D<EB01FCEB0E0790383801C090387000E0484813F0
-48481378485A153C48C7FC5A001E143E123E123C127CA448147CA3157815F81278EC01F0
-007C14E01403003C14C0001CEB0780001EEB0F006C131E380780383801C0E038007F801F
-217C9F23>I<0007B5FC3900F803C090387800F015785B157CA41578484813F815F0EC01
-E0EC03C0EC0F00EBFFFCD803C0C7FCA6485AA648C8FC7FEAFFF81E1F7E9E1F>I<3807FF
-FE3900F8078090387801E0EC00F05B15F8A415F03801E00115E0EC03C0EC0780EC1E00EB
-FFF03803C03880141E140EA2140F48485AA51501D80F0013029038800F8239FFF8078CC7
-EA01F020207E9E22>82 D<EB1F82EB7066EBC01E3801800EEA030048130C00061304120E
-A3000F1300A27FEA07F013FF6C13C06C13E038003FF0EB03F813001478143CA200401338
-A3143000601370146000F013C038E8018038C60300EA81FC17217E9F19>I<003FB512F0
-383C078000301430126039400F0010A212C01280A3D8001E1300A65BA65BA65B7F383FFF
-E01C1F7A9E21>I<39FFF00FF8391F0003E06CEB01801400001EEB0100A6481302A6485B
-A600705BA25CA200785B1238001813C06C48C7FCEA0706EA01F81D20799E22>I<3BFFF0
-7FF81FF03B1F000FC007C0001E903907800380001FED01006C1502140F5EEC17C002135B
-142301805C000713435E14C3913883E0401481D981015B13C1D803C213E193C7FC13C415
-F2EBC80015F4EA01F015F85B5D5B15605B000014402C207A9E2F>87
-D<EA07F8EA0C0CEA1E061307121C1200A313FFEA07C7EA1E07EA3C0E127800F01310A313
-1EEB2E2038784F40381F878014147D9317>97 D<1207123F120F7EA2120EA65A137CEA1D
-83381E0180001C13C0EB00E05A14F0A5387001E0A214C013031480EB0700EAE80EEACC38
-EA83E014207B9F19>I<13FEEA0383380E0780121C0038130090C7FC12785AA45AA37E5B
-EA70026C5AEA1C18EA07E011147D9314>I<13F8EA070EEA0E07381C0380123812781270
-12F0B5FC00F0C7FCA25AA46C5AEA7002EA3004EA1C18EA07E011147D9314>101
-D<EB07C0EB1C60EB30F01360EBE0E0EBC0001201A5485AEA3FFCEA0380A448C7FCA6120E
-A65A121EEAFFC014207F9F0E>I<140EEB3E11EBE1A33801C1C2380381E0EA0780130112
-0FA3380703C01480EB8700EA04FC48C7FCA21218121CEA0FFF14C014E0381800F0481330
-5A5AA3006013606C13C0381C0700EA07FC181F809417>I<EA01C0EA03E0A213C0EA0180
-C7FCA6EA0380121F12071203A2EA0700A6120EA65A121EEAFF800B1F7F9E0C>105
-D<13E0120712011200A2485AA6485AEB81FCEB80F014C0EB81801400EA07045B13181338
-137C131C120E7FA2130F7F1480EA1C03381E07C038FF8FF016207E9F18>107
-D<13E0120712011200A2EA01C0A6EA0380A6EA0700A6120EA65A121EEAFF800B207F9F0C
->I<390387C07C391F9861863907A072073903C03403EB80380007EB7807EB0070A5000E
-EBE00EA64848485A001EEBE01E3AFFCFFCFFC022147E9326>I<38038F80381F90E0EA07
-A03803C0601380000713E01300A5380E01C0A6381C0380001E13C038FF8FF014147E9319
->I<13FCEA0387380E0180381C00C04813E0A24813F012F0A438E001E0A214C0130300F0
-138038700700EA380E6C5AEA07E014147D9317>I<EBE3E03807EC383801F01C6C487E14
-0F48487E1580A53903800F00A2140E141E141C5C38074070EB61C0011FC7FC90C8FCA312
-0EA4121EEAFFC0191D809319>I<EBFC2038038260EA0702381E01E0123C003813C01278
-12F0A438E00380A212F0A21307127038380F00EA1C37EA07C7EA0007A3130EA4131EEBFF
-C0131D7D9318>I<EA038E381FB380EA07C71203EB8300EA078090C7FCA5120EA65A121E
-EAFFC011147E9312>I<EA01F9EA0607EA080312181301EA3802EA3C00121F13F0EA07FC
-EA01FEEA001FEA40071303A212601306EAF004EAC818EA87E010147F9312>I<1380EA01
-00A35A5A5A121EEAFFF8EA0E00A45AA65A1310A41320A2EA1840EA0F800D1C7C9B12>I<
-381C0380EAFC1FEA3C07EA1C03A238380700A6EA700EA4131EA25BEA305E381F9F801114
-7B9319>I<38FF83F8381E00E0001C13C01480121E380E01005B13025B12075BA25BEA03
-9013A013E05B5B120190C7FC15147C9318>I<381FF0FF3803C0780001137014403800E0
-C0EBE180EB73001376133CA2131C132E134E1387EA0107380203801204380C01C0383C03
-E038FE07FC18147F9318>120 D<390FF83F803901E00E00EBC00C140813E000005B1430
-14205C13705CA20171C7FC1339133A133E133C133813181310A25BA25BEA70C0EAF08000
-F1C8FC12E61278191D809318>I E
+1F7E9E1E>I<3A07FF83FFC03A00F8007C000178133CA2495BA648485BA490B5FCEBE000
+4848485AA64848485AA64848485A01807F39FFF07FF8221F7E9E22>72
+D<3807FF803800F8001378A25BA6485AA6485AA6485AA648C7FC7FEAFFF0111F7E9E10>
+I<3A07FF803FE03A00F8001F000178130C5D4913205D5D4AC7FC1402140848485A5C1460
+14F013E1EBE4F83803C878EBD07CEBE03CEBC03E141E141F48487E81140781140381380F
+00016D487E39FFF00FFE231F7E9E23>75 D<3807FFE0D800FCC7FC1378A25BA6485AA648
+5AA41580EC0100EA0780A25C14021406140E380F001E147CB512FC191F7E9E1C>I<D807
+F8EB7FC0D8007CEB1F00150C015E1304019E5B138FA2EB8780A2EB83C0D801035BEB01E0
+A2EB00F0A2147800025C143CA2141EA2140F485CEC07C0A21403A21401000C5C001E1300
+B47E221F7E9E22>78 D<EB01FCEB0E0790383801C090387000E0484813F048481378485A
+153C48C7FC5A001E143E123E123C127CA448147CA3157815F81278EC01F0007C14E01403
+003C14C0001CEB0780001EEB0F006C131E380780383801C0E038007F801F217C9F23>I<
+0007B5FC3900F803C090387800F015785B157CA41578484813F815F0EC01E0EC03C0EC0F
+00EBFFFCD803C0C7FCA6485AA648C8FC7FEAFFF81E1F7E9E1F>I<3807FFFE3900F80780
+90387801E0EC00F05B15F8A415F03801E00115E0EC03C0EC0780EC1E00EBFFF03803C038
+80141E140EA2140F48485AA51501D80F0013029038800F8239FFF8078CC7EA01F020207E
+9E22>82 D<EB1F82EB7066EBC01E3801800EEA030048130C00061304120EA3000F1300A2
+7FEA07F013FF6C13C06C13E038003FF0EB03F813001478143CA200401338A31430006013
+70146000F013C038E8018038C60300EA81FC17217E9F19>I<003FB512F0383C07800030
+1430126039400F0010A212C01280A3D8001E1300A65BA65BA65B7F383FFFE01C1F7A9E21
+>I<39FFF00FF8391F0003E06CEB01801400001EEB0100A6481302A6485BA600705BA25C
+A200785B1238001813C06C48C7FCEA0706EA01F81D20799E22>I<3BFFF07FF81FF03B1F
+000FC007C0001E903907800380001FED01006C1502140F5EEC17C002135B142301805C00
+0713435E14C3913883E0401481D981015B13C1D803C213E193C7FC13C415F2EBC80015F4
+EA01F015F85B5D5B15605B000014402C207A9E2F>87 D<EA07F8EA0C0CEA1E061307121C
+1200A313FFEA07C7EA1E07EA3C0E127800F01310A3131EEB2E2038784F40381F87801414
+7D9317>97 D<1207123F120F7EA2120EA65A137CEA1D83381E0180001C13C0EB00E05A14
+F0A5387001E0A214C013031480EB0700EAE80EEACC38EA83E014207B9F19>I<13FEEA03
+83380E0780121C0038130090C7FC12785AA45AA37E5BEA70026C5AEA1C18EA07E011147D
+9314>I<13F8EA070EEA0E07381C038012381278127012F0B5FC00F0C7FCA25AA46C5AEA
+7002EA3004EA1C18EA07E011147D9314>101 D<EB07C0EB1C60EB30F01360EBE0E0EBC0
+001201A5485AEA3FFCEA0380A448C7FCA6120EA65A121EEAFFC014207F9F0E>I<140EEB
+3E11EBE1A33801C1C2380381E0EA07801301120FA3380703C01480EB8700EA04FC48C7FC
+A21218121CEA0FFF14C014E0381800F04813305A5AA3006013606C13C0381C0700EA07FC
+181F809417>I<EA01C0EA03E0A213C0EA0180C7FCA6EA0380121F12071203A2EA0700A6
+120EA65A121EEAFF800B1F7F9E0C>105 D<13E0120712011200A2485AA6485AEB81FCEB
+80F014C0EB81801400EA07045B13181338137C131C120E7FA2130F7F1480EA1C03381E07
+C038FF8FF016207E9F18>107 D<13E0120712011200A2EA01C0A6EA0380A6EA0700A612
+0EA65A121EEAFF800B207F9F0C>I<390387C07C391F9861863907A072073903C03403EB
+80380007EB7807EB0070A5000EEBE00EA64848485A001EEBE01E3AFFCFFCFFC022147E93
+26>I<38038F80381F90E0EA07A03803C0601380000713E01300A5380E01C0A6381C0380
+001E13C038FF8FF014147E9319>I<13FCEA0387380E0180381C00C04813E0A24813F012
+F0A438E001E0A214C0130300F0138038700700EA380E6C5AEA07E014147D9317>I<EBE3
+E03807EC383801F01C6C487E140F48487E1580A53903800F00A2140E141E141C5C380740
+70EB61C0011FC7FC90C8FCA3120EA4121EEAFFC0191D809319>I<EBFC2038038260EA07
+02381E01E0123C003813C0127812F0A438E00380A212F0A21307127038380F00EA1C37EA
+07C7EA0007A3130EA4131EEBFFC0131D7D9318>I<EA038E381FB380EA07C71203EB8300
+EA078090C7FCA5120EA65A121EEAFFC011147E9312>I<EA01F9EA0607EA080312181301
+EA3802EA3C00121F13F0EA07FCEA01FEEA001FEA40071303A212601306EAF004EAC818EA
+87E010147F9312>I<1380EA0100A35A5A5A121EEAFFF8EA0E00A45AA65A1310A41320A2
+EA1840EA0F800D1C7C9B12>I<381C0380EAFC1FEA3C07EA1C03A238380700A6EA700EA4
+131EA25BEA305E381F9F8011147B9319>I<38FF83F8381E00E0001C13C01480121E380E
+01005B13025B12075BA25BEA039013A013E05B5B120190C7FC15147C9318>I<381FF0FF
+3803C0780001137014403800E0C0EBE180EB73001376133CA2131C132E134E1387EA0107
+380203801204380C01C0383C03E038FE07FC18147F9318>120 D<390FF83F803901E00E
+00EBC00C140813E000005B143014205C13705CA20171C7FC1339133A133E133C13381318
+1310A25BA25BEA70C0EAF08000F1C8FC12E61278191D809318>I
+E
 %EndDVIPSBitmapFont
 %DVIPSBitmapFont: Fd cmti10 10.95 8
 /Fd 8 117 df<EC3FE0ECE010903801803801031378A290380700301500A3130EA390B5
@@ -767,9 +769,9 @@ letter
 %%EndSetup
 %%Page: 1 1
 1 0 bop 75 659 a Fn(GNU)33 b(Readline)h(Library)e(User)h(In)m(terface)p
-75 709 1800 17 v 936 757 a Fm(Edition)17 b(4.2,)c(for)i
-Fl(Readline)f(Library)g Fm(V)l(ersion)i(4.2.)1692 811
-y(Apr)f(2001)75 2467 y Fk(Brian)23 b(F)-6 b(o)n(x,)23
+75 709 1800 17 v 891 757 a Fm(Edition)16 b(4.2a,)e(for)g
+Fl(Readline)g(Library)h Fm(V)l(ersion)h(4.2a.)1608 811
+y(Octob)q(er)g(2001)75 2467 y Fk(Brian)23 b(F)-6 b(o)n(x,)23
 b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)-6 b(oundation)75
 2534 y(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)p 75 2570 1800 9 v eop
@@ -1003,12 +1005,12 @@ e(to)h(the)315 590 y(end)j(of)f(the)g(next)g(w)o(ord.)k(W)l(ord)c(b)q
 (oundaries)i(are)e(the)g(same)g(as)g(those)f(used)i(b)o(y)f
 Fg(M-f)p Fm(.)75 668 y Fg(M-)123 666 y Ff(h)p 135 640
 73 2 v 135 668 a Fe(DEL)p 135 675 V 206 666 a Ff(i)315
-668 y Fm(Kill)21 b(from)e(the)g(cursor)f(the)h(start)f(of)h(the)g
-(previous)h(w)o(ord,)f(or,)g(if)g(b)q(et)o(w)o(een)h(w)o(ords,)f(to)315
-723 y(the)14 b(start)f(of)g(the)h(previous)g(w)o(ord.)19
-b(W)l(ord)14 b(b)q(oundaries)h(are)e(the)h(same)g(as)f(those)h(used)g
-(b)o(y)315 777 y Fg(M-b)p Fm(.)75 855 y Fg(C-w)168 b
-Fm(Kill)18 b(from)d(the)g(cursor)h(to)f(the)g(previous)i(whitespace.)22
+668 y Fm(Kill)i(from)e(the)g(cursor)g(the)h(start)e(of)h(the)g(curren)o
+(t)g(w)o(ord,)f(or,)h(if)g(b)q(et)o(w)o(een)h(w)o(ords,)e(to)h(the)315
+723 y(start)j(of)h(the)g(previous)h(w)o(ord.)31 b(W)l(ord)19
+b(b)q(oundaries)h(are)f(the)h(same)e(as)h(those)g(used)h(b)o(y)315
+777 y Fg(M-b)p Fm(.)75 855 y Fg(C-w)168 b Fm(Kill)18
+b(from)d(the)g(cursor)h(to)f(the)g(previous)i(whitespace.)22
 b(This)16 b(is)g(di\013eren)o(t)g(than)f Fg(M-)1777 853
 y Ff(h)p 1789 827 V 1789 855 a Fe(DEL)p 1789 863 V 1860
 853 a Ff(i)315 910 y Fm(b)q(ecause)h(the)f(w)o(ord)g(b)q(oundaries)h
@@ -1076,358 +1078,374 @@ b Fg(C-g)21 b Fm(will)i(ab)q(ort)e(an)g(incremen)o(tal)h(searc)o(h)f
 (and)g(restore)g(the)75 204 y(original)16 b(line.)21
 b(When)15 b(the)f(searc)o(h)g(is)h(terminated,)g(the)f(history)h(en)o
 (try)f(con)o(taining)h(the)g(searc)o(h)f(string)75 259
-y(b)q(ecomes)i(the)f(curren)o(t)g(line.)137 324 y(T)l(o)g(\014nd)i
+y(b)q(ecomes)i(the)f(curren)o(t)g(line.)137 325 y(T)l(o)g(\014nd)i
 (other)e(matc)o(hing)g(en)o(tries)h(in)h(the)e(history)h(list,)g(t)o
 (yp)q(e)f Fg(C-r)g Fm(or)g Fg(C-s)g Fm(as)h(appropriate.)k(This)75
-379 y(will)15 b(searc)o(h)e(bac)o(kw)o(ard)f(or)g(forw)o(ard)g(in)i
+380 y(will)15 b(searc)o(h)e(bac)o(kw)o(ard)f(or)g(forw)o(ard)g(in)i
 (the)f(history)g(for)g(the)g(next)g(en)o(try)g(matc)o(hing)g(the)g
 (searc)o(h)g(string)75 434 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)
 h(command)e(will)j(terminate)e(the)75 489 y(searc)o(h)10
 b(and)h(execute)g(that)f(command.)18 b(F)l(or)10 b(instance,)i(a)1063
 487 y Ff(h)p 1076 461 76 2 v 1076 489 a Fe(RET)p 1076
-496 V 1149 487 a Ff(i)1174 489 y Fm(will)g(terminate)f(the)g(searc)o(h)
-f(and)h(accept)75 543 y(the)k(line,)h(thereb)o(y)f(executing)g(the)g
+497 V 1149 487 a Ff(i)1174 489 y Fm(will)g(terminate)f(the)g(searc)o(h)
+f(and)h(accept)75 544 y(the)k(line,)h(thereb)o(y)f(executing)g(the)g
 (command)g(from)f(the)g(history)h(list.)20 b(A)15 b(mo)o(v)o(emen)o(t)f
-(command)g(will)75 598 y(terminate)h(the)g(searc)o(h,)g(mak)o(e)g(the)g
+(command)g(will)75 599 y(terminate)h(the)g(searc)o(h,)g(mak)o(e)g(the)g
 (last)g(line)i(found)f(the)f(curren)o(t)g(line,)h(and)g(b)q(egin)g
-(editing.)137 664 y(Non-incremen)o(tal)25 b(searc)o(hes)e(read)h(the)f
-(en)o(tire)h(searc)o(h)f(string)g(b)q(efore)h(starting)f(to)f(searc)o
-(h)i(for)75 718 y(matc)o(hing)d(history)h(lines.)39 b(The)22
+(editing.)137 665 y(Readline)j(remem)o(b)q(ers)e(the)h(last)f(incremen)
+o(tal)i(searc)o(h)e(string.)27 b(If)17 b(t)o(w)o(o)f
+Fg(C-r)p Fm(s)h(are)g(t)o(yp)q(ed)h(without)75 719 y(an)o(y)g(in)o
+(terv)o(ening)h(c)o(haracters)f(de\014ning)h(a)f(new)h(searc)o(h)f
+(string,)g(an)o(y)g(remem)o(b)q(ered)h(searc)o(h)f(string)g(is)75
+774 y(used.)137 840 y(Non-incremen)o(tal)25 b(searc)o(hes)e(read)h(the)
+f(en)o(tire)h(searc)o(h)f(string)g(b)q(efore)h(starting)f(to)f(searc)o
+(h)i(for)75 895 y(matc)o(hing)d(history)h(lines.)39 b(The)22
 b(searc)o(h)f(string)g(ma)o(y)g(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 773 y(con)o(ten)o(ts)15
-b(of)f(the)i(curren)o(t)f(line.)75 896 y Fk(1.3)33 b(Readline)23
-b(Init)h(File)137 990 y Fm(Although)f(the)g(Readline)h(library)f(comes)
-g(with)g(a)f(set)g(of)g(Emacs-lik)o(e)i(k)o(eybindings)g(installed)75
-1045 y(b)o(y)d(default,)h(it)f(is)h(p)q(ossible)g(to)e(use)i(a)e
-(di\013eren)o(t)h(set)g(of)f(k)o(eybindings.)39 b(An)o(y)20
-b(user)h(can)g(customize)75 1100 y(programs)15 b(that)h(use)g(Readline)
-i(b)o(y)e(putting)g(commands)g(in)i(an)e Fc(inputrc)k
-Fm(\014le,)d(con)o(v)o(en)o(tionally)g(in)g(his)75 1155
-y(home)g(directory)l(.)24 b(The)17 b(name)g(of)f(this)h(\014le)g(is)g
-(tak)o(en)g(from)e(the)i(v)m(alue)h(of)e(the)h(en)o(vironmen)o(t)g(v)m
-(ariable)75 1209 y Fl(INPUTRC)p Fm(.)i(If)c(that)g(v)m(ariable)h(is)g
-(unset,)f(the)g(default)h(is)g(`)p Fl(~/.inputrc)p Fm('.)137
-1275 y(When)f(a)g(program)f(whic)o(h)h(uses)g(the)g(Readline)h(library)
-g(starts)d(up,)i(the)g(init)h(\014le)g(is)f(read,)g(and)g(the)75
-1329 y(k)o(ey)g(bindings)i(are)e(set.)137 1395 y(In)f(addition,)h(the)e
-Fl(C-x)i(C-r)e Fm(command)g(re-reads)h(this)g(init)g(\014le,)h(th)o(us)
-e(incorp)q(orating)h(an)o(y)f(c)o(hanges)75 1450 y(that)h(y)o(ou)h
-(migh)o(t)g(ha)o(v)o(e)g(made)g(to)g(it.)75 1556 y Fb(1.3.1)30
-b(Readline)20 b(Init)g(File)h(Syn)n(tax)137 1650 y Fm(There)c(are)g
-(only)g(a)g(few)f(basic)i(constructs)e(allo)o(w)o(ed)i(in)f(the)g
-(Readline)h(init)g(\014le.)26 b(Blank)18 b(lines)g(are)75
-1705 y(ignored.)36 b(Lines)22 b(b)q(eginning)h(with)d(a)h(`)p
-Fl(#)p Fm(')e(are)h(commen)o(ts.)35 b(Lines)22 b(b)q(eginning)h(with)e
-(a)f(`)p Fl($)p Fm(')f(indicate)75 1760 y(conditional)c(constructs)f
-(\(see)g(Section)g(1.3.2)f([Conditional)h(Init)h(Constructs],)e(page)h
-(8\).)k(Other)c(lines)75 1814 y(denote)h(v)m(ariable)i(settings)e(and)h
-(k)o(ey)f(bindings.)75 1890 y(V)l(ariable)h(Settings)315
-1945 y(Y)l(ou)k(can)h(mo)q(dify)g(the)f(run-time)h(b)q(eha)o(vior)g(of)
-e(Readline)j(b)o(y)e(altering)h(the)f(v)m(alues)h(of)315
-2000 y(v)m(ariables)d(in)g(Readline)g(using)f(the)g Fl(set)g
-Fm(command)f(within)i(the)f(init)h(\014le.)26 b(The)17
-b(syn)o(tax)315 2055 y(is)f(simple:)435 2117 y Fl(set)23
-b Fc(v)m(ariable)28 b(v)m(alue)315 2182 y Fm(Here,)14
-b(for)f(example,)h(is)g(ho)o(w)f(to)g(c)o(hange)h(from)f(the)h(default)
-g(Emacs-lik)o(e)h(k)o(ey)e(binding)j(to)315 2237 y(use)g
-Fl(vi)e Fm(line)j(editing)g(commands:)435 2299 y Fl(set)23
-b(editing-mode)g(vi)315 2365 y Fm(V)l(ariable)c(names)e(and)h(v)m
-(alues,)h(where)e(appropriate,)h(are)f(recognized)i(without)e(regard)
-315 2419 y(to)e(case.)315 2485 y(A)g(great)g(deal)g(of)g(run-time)h(b)q
-(eha)o(vior)g(is)g(c)o(hangeable)g(with)f(the)h(follo)o(wing)f(v)m
-(ariables.)315 2560 y Fl(bell-style)555 2615 y Fm(Con)o(trols)21
-b(what)h(happ)q(ens)h(when)f(Readline)h(w)o(an)o(ts)e(to)g(ring)i(the)f
-(termi-)555 2670 y(nal)d(b)q(ell.)32 b(If)19 b(set)f(to)g(`)p
-Fl(none)p Fm(',)g(Readline)i(nev)o(er)f(rings)g(the)f(b)q(ell.)32
-b(If)19 b(set)g(to)p eop
+(user)h(or)e(b)q(e)i(part)f(of)g(the)75 950 y(con)o(ten)o(ts)15
+b(of)f(the)i(curren)o(t)f(line.)75 1074 y Fk(1.3)33 b(Readline)23
+b(Init)h(File)137 1169 y Fm(Although)f(the)g(Readline)h(library)f
+(comes)g(with)g(a)f(set)g(of)g(Emacs-lik)o(e)i(k)o(eybindings)g
+(installed)75 1224 y(b)o(y)d(default,)h(it)f(is)h(p)q(ossible)g(to)e
+(use)i(a)e(di\013eren)o(t)h(set)g(of)f(k)o(eybindings.)39
+b(An)o(y)20 b(user)h(can)g(customize)75 1278 y(programs)15
+b(that)h(use)g(Readline)i(b)o(y)e(putting)g(commands)g(in)i(an)e
+Fc(inputrc)k Fm(\014le,)d(con)o(v)o(en)o(tionally)g(in)g(his)75
+1333 y(home)g(directory)l(.)24 b(The)17 b(name)g(of)f(this)h(\014le)g
+(is)g(tak)o(en)g(from)e(the)i(v)m(alue)h(of)e(the)h(en)o(vironmen)o(t)g
+(v)m(ariable)75 1388 y Fl(INPUTRC)p Fm(.)i(If)c(that)g(v)m(ariable)h
+(is)g(unset,)f(the)g(default)h(is)g(`)p Fl(~/.inputrc)p
+Fm('.)137 1454 y(When)f(a)g(program)f(whic)o(h)h(uses)g(the)g(Readline)
+h(library)g(starts)d(up,)i(the)g(init)h(\014le)g(is)f(read,)g(and)g
+(the)75 1509 y(k)o(ey)g(bindings)i(are)e(set.)137 1574
+y(In)f(addition,)h(the)e Fl(C-x)i(C-r)e Fm(command)g(re-reads)h(this)g
+(init)g(\014le,)h(th)o(us)e(incorp)q(orating)h(an)o(y)f(c)o(hanges)75
+1629 y(that)h(y)o(ou)h(migh)o(t)g(ha)o(v)o(e)g(made)g(to)g(it.)75
+1737 y Fb(1.3.1)30 b(Readline)20 b(Init)g(File)h(Syn)n(tax)137
+1832 y Fm(There)c(are)g(only)g(a)g(few)f(basic)i(constructs)e(allo)o(w)
+o(ed)i(in)f(the)g(Readline)h(init)g(\014le.)26 b(Blank)18
+b(lines)g(are)75 1886 y(ignored.)36 b(Lines)22 b(b)q(eginning)h(with)d
+(a)h(`)p Fl(#)p Fm(')e(are)h(commen)o(ts.)35 b(Lines)22
+b(b)q(eginning)h(with)e(a)f(`)p Fl($)p Fm(')f(indicate)75
+1941 y(conditional)c(constructs)f(\(see)g(Section)g(1.3.2)f
+([Conditional)h(Init)h(Constructs],)e(page)h(8\).)k(Other)c(lines)75
+1996 y(denote)h(v)m(ariable)i(settings)e(and)h(k)o(ey)f(bindings.)75
+2073 y(V)l(ariable)h(Settings)315 2128 y(Y)l(ou)k(can)h(mo)q(dify)g
+(the)f(run-time)h(b)q(eha)o(vior)g(of)e(Readline)j(b)o(y)e(altering)h
+(the)f(v)m(alues)h(of)315 2182 y(v)m(ariables)d(in)g(Readline)g(using)f
+(the)g Fl(set)g Fm(command)f(within)i(the)f(init)h(\014le.)26
+b(The)17 b(syn)o(tax)315 2237 y(is)f(simple:)435 2300
+y Fl(set)23 b Fc(v)m(ariable)28 b(v)m(alue)315 2366 y
+Fm(Here,)14 b(for)f(example,)h(is)g(ho)o(w)f(to)g(c)o(hange)h(from)f
+(the)h(default)g(Emacs-lik)o(e)h(k)o(ey)e(binding)j(to)315
+2421 y(use)g Fl(vi)e Fm(line)j(editing)g(commands:)435
+2484 y Fl(set)23 b(editing-mode)g(vi)315 2549 y Fm(V)l(ariable)c(names)
+e(and)h(v)m(alues,)h(where)e(appropriate,)h(are)f(recognized)i(without)
+e(regard)315 2604 y(to)e(case.)315 2670 y(A)g(great)g(deal)g(of)g
+(run-time)h(b)q(eha)o(vior)g(is)g(c)o(hangeable)g(with)f(the)h(follo)o
+(wing)f(v)m(ariables.)p eop
 %%Page: 5 7
 5 6 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(5)555 149 y(`)p Fl(visible)p Fm(',)15 b(Readline)i(uses)g(a)f
-(visible)j(b)q(ell)g(if)e(one)f(is)h(a)o(v)m(ailable.)26
-b(If)16 b(set)h(to)555 204 y(`)p Fl(audible)p Fm(')g(\(the)h
+b(5)315 149 y Fl(bell-style)555 204 y Fm(Con)o(trols)21
+b(what)h(happ)q(ens)h(when)f(Readline)h(w)o(an)o(ts)e(to)g(ring)i(the)f
+(termi-)555 259 y(nal)d(b)q(ell.)32 b(If)19 b(set)f(to)g(`)p
+Fl(none)p Fm(',)g(Readline)i(nev)o(er)f(rings)g(the)f(b)q(ell.)32
+b(If)19 b(set)g(to)555 314 y(`)p Fl(visible)p Fm(',)c(Readline)i(uses)g
+(a)f(visible)j(b)q(ell)g(if)e(one)f(is)h(a)o(v)m(ailable.)26
+b(If)16 b(set)h(to)555 369 y(`)p Fl(audible)p Fm(')g(\(the)h
 (default\),)i(Readline)g(attempts)e(to)g(ring)h(the)g(terminal's)555
-259 y(b)q(ell.)315 338 y Fl(comment-begin)555 393 y Fm(The)c(string)f
+423 y(b)q(ell.)315 504 y Fl(comment-begin)555 559 y Fm(The)c(string)f
 (to)g(insert)i(at)d(the)i(b)q(eginning)i(of)d(the)h(line)h(when)f(the)g
-Fl(insert-)555 448 y(comment)f Fm(command)h(is)h(executed.)21
+Fl(insert-)555 614 y(comment)f Fm(command)h(is)h(executed.)21
 b(The)15 b(default)h(v)m(alue)g(is)g Fl("#")p Fm(.)315
-527 y Fl(completion-ignore-case)555 582 y Fm(If)e(set)f(to)g(`)p
+694 y Fl(completion-ignore-case)555 749 y Fm(If)e(set)f(to)g(`)p
 Fl(on)p Fm(',)g(Readline)i(p)q(erforms)e(\014lename)i(matc)o(hing)f
-(and)g(completion)555 637 y(in)i(a)f(case-insensitiv)o(e)i(fashion.)k
+(and)g(completion)555 804 y(in)i(a)f(case-insensitiv)o(e)i(fashion.)k
 (The)15 b(default)h(v)m(alue)g(is)g(`)p Fl(off)p Fm('.)315
-716 y Fl(completion-query-items)555 770 y Fm(The)d(n)o(um)o(b)q(er)h
+884 y Fl(completion-query-items)555 939 y Fm(The)d(n)o(um)o(b)q(er)h
 (of)e(p)q(ossible)j(completions)g(that)d(determines)i(when)g(the)f
-(user)555 825 y(is)21 b(ask)o(ed)g(whether)g(he)h(w)o(an)o(ts)d(to)i
+(user)555 994 y(is)21 b(ask)o(ed)g(whether)g(he)h(w)o(an)o(ts)d(to)i
 (see)g(the)g(list)h(of)e(p)q(ossibilitie)q(s.)40 b(If)21
-b(the)555 880 y(n)o(um)o(b)q(er)14 b(of)f(p)q(ossible)i(completions)f
+b(the)555 1049 y(n)o(um)o(b)q(er)14 b(of)f(p)q(ossible)i(completions)f
 (is)g(greater)f(than)g(this)h(v)m(alue,)h(Readline)555
-935 y(will)g(ask)e(the)g(user)h(whether)f(or)g(not)g(he)g(wishes)h(to)f
-(view)h(them;)f(otherwise,)555 990 y(they)f(are)g(simply)i(listed.)20
+1104 y(will)g(ask)e(the)g(user)h(whether)f(or)g(not)g(he)g(wishes)h(to)
+f(view)h(them;)f(otherwise,)555 1158 y(they)f(are)g(simply)i(listed.)20
 b(This)13 b(v)m(ariable)g(m)o(ust)f(b)q(e)h(set)f(to)f(an)h(in)o(teger)
-h(v)m(alue)555 1044 y(greater)h(than)h(or)g(equal)h(to)f(0.)k(The)d
-(default)f(limit)i(is)f Fl(100)p Fm(.)315 1124 y Fl(convert-meta)555
-1178 y Fm(If)11 b(set)g(to)g(`)p Fl(on)p Fm(',)f(Readline)i(will)h(con)
+h(v)m(alue)555 1213 y(greater)h(than)h(or)g(equal)h(to)f(0.)k(The)d
+(default)f(limit)i(is)f Fl(100)p Fm(.)315 1294 y Fl(convert-meta)555
+1348 y Fm(If)11 b(set)g(to)g(`)p Fl(on)p Fm(',)f(Readline)i(will)h(con)
 o(v)o(ert)d(c)o(haracters)h(with)g(the)g(eigh)o(th)h(bit)f(set)555
-1233 y(to)f(an)h Fh(asci)q(i)e Fm(k)o(ey)i(sequence)g(b)o(y)g
+1403 y(to)f(an)h Fh(asci)q(i)e Fm(k)o(ey)i(sequence)g(b)o(y)g
 (stripping)h(the)e(eigh)o(th)h(bit)h(and)e(pre\014xing)i(an)555
-1286 y Ff(h)p 567 1260 70 2 v 567 1288 a Fe(ESC)p 567
-1296 V 634 1286 a Ff(i)666 1288 y Fm(c)o(haracter,)k(con)o(v)o(erting)h
+1456 y Ff(h)p 567 1430 70 2 v 567 1458 a Fe(ESC)p 567
+1466 V 634 1456 a Ff(i)666 1458 y Fm(c)o(haracter,)k(con)o(v)o(erting)h
 (them)g(to)f(a)h(meta-pre\014xed)g(k)o(ey)g(sequence.)555
-1343 y(The)e(default)h(v)m(alue)h(is)e(`)p Fl(on)p Fm('.)315
-1422 y Fl(disable-completion)555 1477 y Fm(If)k(set)f(to)f(`)p
+1513 y(The)e(default)h(v)m(alue)h(is)e(`)p Fl(on)p Fm('.)315
+1593 y Fl(disable-completion)555 1648 y Fm(If)k(set)f(to)f(`)p
 Fl(On)p Fm(',)h(Readline)i(will)g(inhibit)g(w)o(ord)e(completion.)30
-b(Completion)555 1531 y(c)o(haracters)12 b(will)j(b)q(e)f(inserted)g
+b(Completion)555 1703 y(c)o(haracters)12 b(will)j(b)q(e)f(inserted)g
 (in)o(to)f(the)g(line)h(as)f(if)h(they)f(had)g(b)q(een)h(mapp)q(ed)555
-1586 y(to)h Fl(self-insert)p Fm(.)j(The)d(default)h(is)g(`)p
-Fl(off)p Fm('.)315 1665 y Fl(editing-mode)555 1720 y
+1758 y(to)h Fl(self-insert)p Fm(.)j(The)d(default)h(is)g(`)p
+Fl(off)p Fm('.)315 1838 y Fl(editing-mode)555 1893 y
 Fm(The)f Fl(editing-mode)d Fm(v)m(ariable)k(con)o(trols)e(whic)o(h)h
-(default)g(set)f(of)g(k)o(ey)g(bind-)555 1775 y(ings)f(is)g(used.)20
+(default)g(set)f(of)g(k)o(ey)g(bind-)555 1948 y(ings)f(is)g(used.)20
 b(By)12 b(default,)i(Readline)f(starts)f(up)h(in)g(Emacs)f(editing)i
-(mo)q(de,)555 1830 y(where)h(the)f(k)o(eystrok)o(es)g(are)g(most)g
+(mo)q(de,)555 2003 y(where)h(the)f(k)o(eystrok)o(es)g(are)g(most)g
 (similar)i(to)d(Emacs.)20 b(This)15 b(v)m(ariable)h(can)555
-1885 y(b)q(e)g(set)f(to)f(either)i(`)p Fl(emacs)p Fm(')e(or)h(`)p
-Fl(vi)p Fm('.)315 1964 y Fl(enable-keypad)555 2019 y
+2058 y(b)q(e)g(set)f(to)f(either)i(`)p Fl(emacs)p Fm(')e(or)h(`)p
+Fl(vi)p Fm('.)315 2138 y Fl(enable-keypad)555 2193 y
 Fm(When)d(set)f(to)h(`)p Fl(on)p Fm(',)e(Readline)j(will)h(try)d(to)g
-(enable)i(the)f(application)h(k)o(eypad)555 2073 y(when)h(it)f(is)h
+(enable)i(the)f(application)h(k)o(eypad)555 2248 y(when)h(it)f(is)h
 (called.)21 b(Some)13 b(systems)g(need)h(this)g(to)f(enable)h(the)g
-(arro)o(w)e(k)o(eys.)555 2128 y(The)j(default)h(is)g(`)p
-Fl(off)p Fm('.)315 2207 y Fl(expand-tilde)555 2262 y
+(arro)o(w)e(k)o(eys.)555 2303 y(The)j(default)h(is)g(`)p
+Fl(off)p Fm('.)315 2383 y Fl(expand-tilde)555 2438 y
 Fm(If)e(set)g(to)f(`)p Fl(on)p Fm(',)f(tilde)k(expansion)e(is)h(p)q
-(erformed)f(when)g(Readline)h(attempts)555 2317 y(w)o(ord)g
+(erformed)f(when)g(Readline)h(attempts)555 2493 y(w)o(ord)g
 (completion.)21 b(The)15 b(default)h(is)f(`)p Fl(off)p
-Fm('.)315 2396 y Fl(horizontal-scroll-mode)555 2451 y
-Fm(This)k(v)m(ariable)g(can)f(b)q(e)g(set)g(to)f(either)i(`)p
-Fl(on)p Fm(')e(or)g(`)p Fl(off)p Fm('.)27 b(Setting)19
-b(it)f(to)f(`)p Fl(on)p Fm(')555 2506 y(means)c(that)f(the)i(text)e(of)
-h(the)g(lines)i(b)q(eing)f(edited)g(will)h(scroll)f(horizon)o(tally)555
-2560 y(on)i(a)f(single)i(screen)g(line)g(when)g(they)f(are)f(longer)h
-(than)g(the)g(width)g(of)g(the)555 2615 y(screen,)e(instead)f(of)g
-(wrapping)g(on)o(to)f(a)h(new)g(screen)h(line.)21 b(By)13
-b(default,)h(this)555 2670 y(v)m(ariable)j(is)e(set)g(to)g(`)p
-Fl(off)p Fm('.)p eop
+Fm('.)555 2560 y(If)g(set)g(to)f(`)p Fl(on)p Fm(',)g(the)g(history)h
+(co)q(de)h(attempts)e(to)g(place)i(p)q(oin)o(t)f(at)f(the)h(same)555
+2615 y(lo)q(cation)20 b(on)f(eac)o(h)g(history)h(line)g(retriv)o(ed)g
+(with)f Fl(previous-history)e Fm(or)555 2670 y Fl(next-history)p
+Fm(.)p eop
 %%Page: 6 8
 6 7 bop 75 -58 a Fm(6)1322 b(GNU)15 b(Readline)h(Library)315
-149 y Fl(input-meta)555 204 y Fm(If)g(set)f(to)g(`)p
+149 y Fl(horizontal-scroll-mode)555 204 y Fm(This)j(v)m(ariable)g(can)f
+(b)q(e)g(set)g(to)f(either)i(`)p Fl(on)p Fm(')e(or)g(`)p
+Fl(off)p Fm('.)27 b(Setting)19 b(it)f(to)f(`)p Fl(on)p
+Fm(')555 259 y(means)c(that)f(the)i(text)e(of)h(the)g(lines)i(b)q(eing)
+f(edited)g(will)h(scroll)f(horizon)o(tally)555 314 y(on)i(a)f(single)i
+(screen)g(line)g(when)g(they)f(are)f(longer)h(than)g(the)g(width)g(of)g
+(the)555 369 y(screen,)e(instead)f(of)g(wrapping)g(on)o(to)f(a)h(new)g
+(screen)h(line.)21 b(By)13 b(default,)h(this)555 423
+y(v)m(ariable)j(is)e(set)g(to)g(`)p Fl(off)p Fm('.)315
+506 y Fl(input-meta)555 560 y Fm(If)h(set)f(to)g(`)p
 Fl(on)p Fm(',)f(Readline)j(will)h(enable)e(eigh)o(t-bit)h(input)f(\(it)
-g(will)h(not)e(clear)555 259 y(the)20 b(eigh)o(th)g(bit)g(in)h(the)f(c)
+g(will)h(not)e(clear)555 615 y(the)20 b(eigh)o(th)g(bit)g(in)h(the)f(c)
 o(haracters)f(it)h(reads\),)g(regardless)g(of)g(what)f(the)555
-314 y(terminal)i(claims)g(it)f(can)g(supp)q(ort.)34 b(The)20
+670 y(terminal)i(claims)g(it)f(can)g(supp)q(ort.)34 b(The)20
 b(default)h(v)m(alue)g(is)g(`)p Fl(off)p Fm('.)33 b(The)555
-369 y(name)15 b Fl(meta-flag)f Fm(is)i(a)f(synon)o(ym)g(for)f(this)i(v)
-m(ariable.)315 448 y Fl(isearch-terminators)555 503 y
+725 y(name)15 b Fl(meta-flag)f Fm(is)i(a)f(synon)o(ym)g(for)f(this)i(v)
+m(ariable.)315 807 y Fl(isearch-terminators)555 862 y
 Fm(The)26 b(string)g(of)f(c)o(haracters)g(that)g(should)i(terminate)f
-(an)g(incremen)o(tal)555 557 y(searc)o(h)12 b(without)h(subsequen)o
+(an)g(incremen)o(tal)555 917 y(searc)o(h)12 b(without)h(subsequen)o
 (tly)g(executing)h(the)e(c)o(haracter)g(as)g(a)g(command)555
-612 y(\(see)22 b(Section)h(1.2.5)e([Searc)o(hing],)j(page)e(3\).)40
-b(If)23 b(this)g(v)m(ariable)g(has)f(not)555 667 y(b)q(een)17
+971 y(\(see)22 b(Section)h(1.2.5)e([Searc)o(hing],)j(page)e(3\).)40
+b(If)23 b(this)g(v)m(ariable)g(has)f(not)555 1026 y(b)q(een)17
 b(giv)o(en)f(a)g(v)m(alue,)g(the)g(c)o(haracters)1247
-665 y Ff(h)p 1259 639 70 2 v 1259 667 a Fe(ESC)p 1259
-675 V 1326 665 a Ff(i)1357 667 y Fm(and)g Fg(C-J)f Fm(will)i(terminate)
-f(an)555 722 y(incremen)o(tal)g(searc)o(h.)315 801 y
-Fl(keymap)96 b Fm(Sets)19 b(Readline's)i(idea)f(of)f(the)g(curren)o(t)h
-(k)o(eymap)f(for)f(k)o(ey)i(binding)h(com-)555 856 y(mands.)41
-b(Acceptable)23 b Fl(keymap)f Fm(names)g(are)f Fl(emacs)p
-Fm(,)i Fl(emacs-standard)p Fm(,)555 910 y Fl(emacs-meta)p
-Fm(,)49 b Fl(emacs-ctlx)p Fm(,)g Fl(vi)p Fm(,)h Fl(vi-move)p
-Fm(,)f Fl(vi-command)p Fm(,)g(and)555 965 y Fl(vi-insert)p
-Fm(.)31 b Fl(vi)20 b Fm(is)g(equiv)m(alen)o(t)h(to)e
-Fl(vi-command)p Fm(;)g Fl(emacs)g Fm(is)h(equiv)m(alen)o(t)555
-1020 y(to)15 b Fl(emacs-standard)p Fm(.)20 b(The)d(default)f(v)m(alue)h
+1024 y Ff(h)p 1259 998 70 2 v 1259 1026 a Fe(ESC)p 1259
+1034 V 1326 1024 a Ff(i)1357 1026 y Fm(and)g Fg(C-J)f
+Fm(will)i(terminate)f(an)555 1081 y(incremen)o(tal)g(searc)o(h.)315
+1163 y Fl(keymap)96 b Fm(Sets)19 b(Readline's)i(idea)f(of)f(the)g
+(curren)o(t)h(k)o(eymap)f(for)f(k)o(ey)i(binding)h(com-)555
+1218 y(mands.)41 b(Acceptable)23 b Fl(keymap)f Fm(names)g(are)f
+Fl(emacs)p Fm(,)i Fl(emacs-standard)p Fm(,)555 1273 y
+Fl(emacs-meta)p Fm(,)49 b Fl(emacs-ctlx)p Fm(,)g Fl(vi)p
+Fm(,)h Fl(vi-move)p Fm(,)f Fl(vi-command)p Fm(,)g(and)555
+1328 y Fl(vi-insert)p Fm(.)31 b Fl(vi)20 b Fm(is)g(equiv)m(alen)o(t)h
+(to)e Fl(vi-command)p Fm(;)g Fl(emacs)g Fm(is)h(equiv)m(alen)o(t)555
+1382 y(to)15 b Fl(emacs-standard)p Fm(.)20 b(The)d(default)f(v)m(alue)h
 (is)g Fl(emacs)p Fm(.)k(The)16 b(v)m(alue)h(of)f(the)555
-1075 y Fl(editing-mode)e Fm(v)m(ariable)i(also)f(a\013ects)g(the)g
-(default)h(k)o(eymap.)315 1154 y Fl(mark-directories)555
-1209 y Fm(If)j(set)g(to)g(`)p Fl(on)p Fm(',)f(completed)i(directory)g
-(names)f(ha)o(v)o(e)f(a)h(slash)h(app)q(ended.)555 1264
-y(The)15 b(default)h(is)g(`)p Fl(on)p Fm('.)315 1343
-y Fl(mark-modified-lines)555 1398 y Fm(This)j(v)m(ariable,)g(when)g
+1437 y Fl(editing-mode)e Fm(v)m(ariable)i(also)f(a\013ects)g(the)g
+(default)h(k)o(eymap.)315 1519 y Fl(mark-directories)555
+1574 y Fm(If)j(set)g(to)g(`)p Fl(on)p Fm(',)f(completed)i(directory)g
+(names)f(ha)o(v)o(e)f(a)h(slash)h(app)q(ended.)555 1629
+y(The)15 b(default)h(is)g(`)p Fl(on)p Fm('.)315 1711
+y Fl(mark-modified-lines)555 1766 y Fm(This)j(v)m(ariable,)g(when)g
 (set)e(to)h(`)p Fl(on)p Fm(',)f(causes)h(Readline)h(to)e(displa)o(y)i
-(an)f(as-)555 1452 y(terisk)f(\(`)p Fl(*)p Fm('\))e(at)i(the)f(start)g
+(an)f(as-)555 1821 y(terisk)f(\(`)p Fl(*)p Fm('\))e(at)i(the)f(start)g
 (of)h(history)f(lines)j(whic)o(h)e(ha)o(v)o(e)g(b)q(een)h(mo)q
-(di\014ed.)555 1507 y(This)e(v)m(ariable)g(is)g(`)p Fl(off)p
-Fm(')e(b)o(y)h(default.)315 1586 y Fl(output-meta)555
-1641 y Fm(If)j(set)f(to)g(`)p Fl(on)p Fm(',)g(Readline)i(will)h(displa)
+(di\014ed.)555 1875 y(This)e(v)m(ariable)g(is)g(`)p Fl(off)p
+Fm(')e(b)o(y)h(default.)315 1958 y Fl(match-hidden-files)555
+2012 y Fm(This)d(v)m(ariable,)h(when)e(set)g(to)g(`)p
+Fl(on)p Fm(',)f(causes)h(Readline)i(to)d(matc)o(h)h(\014les)h(whose)555
+2067 y(names)22 b(b)q(egin)h(with)g(a)e(`)p Fl(.)p Fm(')h(\(hidden)h
+(\014les\))g(when)f(p)q(erforming)h(\014lename)555 2122
+y(completion,)g(unless)f(the)f(leading)h(`)p Fl(.)p Fm(')e(is)h
+(supplied)i(b)o(y)e(the)f(user)h(in)h(the)555 2177 y(\014lename)16
+b(to)f(b)q(e)h(completed.)21 b(This)15 b(v)m(ariable)i(is)f(`)p
+Fl(on)p Fm(')e(b)o(y)h(default.)315 2259 y Fl(output-meta)555
+2314 y Fm(If)j(set)f(to)g(`)p Fl(on)p Fm(',)g(Readline)i(will)h(displa)
 o(y)f(c)o(haracters)d(with)j(the)e(eigh)o(th)h(bit)555
-1696 y(set)g(directly)i(rather)d(than)h(as)g(a)g(meta-pre\014xed)h
-(escap)q(e)g(sequence.)30 b(The)555 1751 y(default)16
-b(is)f(`)p Fl(off)p Fm('.)315 1830 y Fl(print-completions-horizont)o
-(ally)555 1885 y Fm(If)d(set)g(to)f(`)p Fl(on)p Fm(',)h(Readline)h
+2369 y(set)g(directly)i(rather)d(than)h(as)g(a)g(meta-pre\014xed)h
+(escap)q(e)g(sequence.)30 b(The)555 2423 y(default)16
+b(is)f(`)p Fl(off)p Fm('.)315 2506 y Fl(print-completions-horizont)o
+(ally)555 2560 y Fm(If)d(set)g(to)f(`)p Fl(on)p Fm(',)h(Readline)h
 (will)g(displa)o(y)h(completions)f(with)f(matc)o(hes)f(sorted)555
-1939 y(horizon)o(tally)23 b(in)f(alphab)q(etical)i(order,)f(rather)e
-(than)g(do)o(wn)h(the)g(screen.)555 1994 y(The)15 b(default)h(is)g(`)p
-Fl(off)p Fm('.)315 2073 y Fl(show-all-if-ambiguous)555
-2128 y Fm(This)g(alters)e(the)i(default)f(b)q(eha)o(vior)h(of)e(the)h
-(completion)h(functions.)21 b(If)15 b(set)555 2183 y(to)e(`)p
-Fl(on)p Fm(',)g(w)o(ords)g(whic)o(h)h(ha)o(v)o(e)g(more)f(than)g(one)h
-(p)q(ossible)i(completion)f(cause)555 2238 y(the)20 b(matc)o(hes)f(to)f
-(b)q(e)j(listed)f(immediately)h(instead)f(of)f(ringing)i(the)e(b)q
-(ell.)555 2293 y(The)c(default)h(v)m(alue)h(is)e(`)p
-Fl(off)p Fm('.)315 2372 y Fl(visible-stats)555 2426 y
-Fm(If)h(set)g(to)f(`)p Fl(on)p Fm(',)g(a)h(c)o(haracter)f(denoting)h(a)
-g(\014le's)h(t)o(yp)q(e)f(is)g(app)q(ended)i(to)d(the)555
-2481 y(\014lename)h(when)g(listing)h(p)q(ossible)g(completions.)j(The)c
-(default)g(is)f(`)p Fl(off)p Fm('.)75 2560 y(Key)h(Bindings)315
-2615 y(The)21 b(syn)o(tax)f(for)h(con)o(trolling)h(k)o(ey)f(bindings)h
-(in)g(the)f(init)h(\014le)g(is)g(simple.)39 b(First)20
-b(y)o(ou)315 2670 y(need)15 b(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)p eop
+2615 y(horizon)o(tally)23 b(in)f(alphab)q(etical)i(order,)f(rather)e
+(than)g(do)o(wn)h(the)g(screen.)555 2670 y(The)15 b(default)h(is)g(`)p
+Fl(off)p Fm('.)p eop
 %%Page: 7 9
 7 8 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(7)315 149 y(sections)18 b(con)o(tain)h(tables)f(of)f(the)h(command)g
-(name,)g(the)g(default)h(k)o(eybinding,)h(if)e(an)o(y)l(,)315
-204 y(and)d(a)g(short)g(description)i(of)d(what)h(the)g(command)g(do)q
-(es.)315 273 y(Once)k(y)o(ou)f(kno)o(w)f(the)h(name)g(of)g(the)g
+b(7)315 149 y Fl(show-all-if-ambiguous)555 204 y Fm(This)16
+b(alters)e(the)i(default)f(b)q(eha)o(vior)h(of)e(the)h(completion)h
+(functions.)21 b(If)15 b(set)555 259 y(to)e(`)p Fl(on)p
+Fm(',)g(w)o(ords)g(whic)o(h)h(ha)o(v)o(e)g(more)f(than)g(one)h(p)q
+(ossible)i(completion)f(cause)555 314 y(the)20 b(matc)o(hes)f(to)f(b)q
+(e)j(listed)f(immediately)h(instead)f(of)f(ringing)i(the)e(b)q(ell.)555
+369 y(The)c(default)h(v)m(alue)h(is)e(`)p Fl(off)p Fm('.)315
+448 y Fl(visible-stats)555 502 y Fm(If)h(set)g(to)f(`)p
+Fl(on)p Fm(',)g(a)h(c)o(haracter)f(denoting)h(a)g(\014le's)h(t)o(yp)q
+(e)f(is)g(app)q(ended)i(to)d(the)555 557 y(\014lename)h(when)g(listing)
+h(p)q(ossible)g(completions.)j(The)c(default)g(is)f(`)p
+Fl(off)p Fm('.)75 636 y(Key)h(Bindings)315 691 y(The)21
+b(syn)o(tax)f(for)h(con)o(trolling)h(k)o(ey)f(bindings)h(in)g(the)f
+(init)h(\014le)g(is)g(simple.)39 b(First)20 b(y)o(ou)315
+746 y(need)15 b(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
+801 y(sections)k(con)o(tain)h(tables)f(of)f(the)h(command)g(name,)g
+(the)g(default)h(k)o(eybinding,)h(if)e(an)o(y)l(,)315
+855 y(and)d(a)g(short)g(description)i(of)d(what)h(the)g(command)g(do)q
+(es.)315 922 y(Once)k(y)o(ou)f(kno)o(w)f(the)h(name)g(of)g(the)g
 (command,)g(simply)h(place)g(on)f(a)f(line)j(in)f(the)f(init)315
-328 y(\014le)g(the)f(name)g(of)f(the)h(k)o(ey)g(y)o(ou)f(wish)i(to)e
+977 y(\014le)g(the)f(name)g(of)f(the)h(k)o(ey)g(y)o(ou)f(wish)i(to)e
 (bind)i(the)f(command)g(to,)f(a)g(colon,)i(and)f(then)315
-382 y(the)f(name)g(of)g(the)g(command.)22 b(The)16 b(name)g(of)g(the)g
+1032 y(the)f(name)g(of)g(the)g(command.)22 b(The)16 b(name)g(of)g(the)g
 (k)o(ey)f(can)i(b)q(e)f(expressed)h(in)g(di\013eren)o(t)315
-437 y(w)o(a)o(ys,)d(dep)q(ending)j(on)e(what)g(y)o(ou)g(\014nd)h(most)e
-(comfortable.)315 506 y(In)19 b(addition)g(to)e(command)h(names,)g
+1087 y(w)o(a)o(ys,)d(dep)q(ending)j(on)e(what)g(y)o(ou)g(\014nd)h(most)
+e(comfortable.)315 1154 y(In)19 b(addition)g(to)e(command)h(names,)g
 (readline)i(allo)o(ws)e(k)o(eys)g(to)f(b)q(e)i(b)q(ound)g(to)e(a)h
-(string)315 561 y(that)c(is)i(inserted)g(when)g(the)f(k)o(ey)g(is)h
-(pressed)g(\(a)e Fc(macro)r Fm(\).)315 643 y Fc(k)o(eyname)s
-Fm(:)19 b Fc(function-name)g Fm(or)c Fc(macro)555 698
+(string)315 1208 y(that)c(is)i(inserted)g(when)g(the)f(k)o(ey)g(is)h
+(pressed)g(\(a)e Fc(macro)r Fm(\).)315 1288 y Fc(k)o(eyname)s
+Fm(:)19 b Fc(function-name)g Fm(or)c Fc(macro)555 1342
 y(k)o(eyname)i Fm(is)e(the)f(name)h(of)f(a)g(k)o(ey)g(sp)q(elled)j(out)
-d(in)h(English.)21 b(F)l(or)13 b(example:)675 764 y Fl(Control-u:)22
-b(universal-argument)675 816 y(Meta-Rubout:)g(backward-kill-word)675
-867 y(Control-o:)g(">)i(output")555 936 y Fm(In)c(the)f(ab)q(o)o(v)o(e)
-g(example,)i Fg(C-u)e Fm(is)h(b)q(ound)g(to)f(the)g(function)h
-Fl(universal-)555 991 y(argument)p Fm(,)e Fg(M-DEL)h
-Fm(is)g(b)q(ound)h(to)e(the)h(function)h Fl(backward-kill-word)p
-Fm(,)555 1046 y(and)g Fg(C-o)f Fm(is)h(b)q(ound)g(to)f(run)h(the)f
-(macro)g(expressed)h(on)g(the)f(righ)o(t)h(hand)555 1101
-y(side)c(\(that)e(is,)i(to)e(insert)i(the)f(text)g(`)p
-Fl(>)f(output)p Fm(')g(in)o(to)i(the)f(line\).)555 1169
-y(A)k(n)o(um)o(b)q(er)f(of)g(sym)o(b)q(olic)i(c)o(haracter)e(names)g
-(are)g(recognized)i(while)g(pro-)555 1224 y(cessing)13
+d(in)h(English.)21 b(F)l(or)13 b(example:)675 1406 y
+Fl(Control-u:)22 b(universal-argument)675 1458 y(Meta-Rubout:)g
+(backward-kill-word)675 1510 y(Control-o:)g(">)i(output")555
+1577 y Fm(In)c(the)f(ab)q(o)o(v)o(e)g(example,)i Fg(C-u)e
+Fm(is)h(b)q(ound)g(to)f(the)g(function)h Fl(universal-)555
+1632 y(argument)p Fm(,)e Fg(M-DEL)h Fm(is)g(b)q(ound)h(to)e(the)h
+(function)h Fl(backward-kill-word)p Fm(,)555 1687 y(and)g
+Fg(C-o)f Fm(is)h(b)q(ound)g(to)f(run)h(the)f(macro)g(expressed)h(on)g
+(the)f(righ)o(t)h(hand)555 1741 y(side)c(\(that)e(is,)i(to)e(insert)i
+(the)f(text)g(`)p Fl(>)f(output)p Fm(')g(in)o(to)i(the)f(line\).)555
+1808 y(A)k(n)o(um)o(b)q(er)f(of)g(sym)o(b)q(olic)i(c)o(haracter)e
+(names)g(are)g(recognized)i(while)g(pro-)555 1863 y(cessing)13
 b(this)f(k)o(ey)g(binding)h(syn)o(tax:)18 b Fc(DEL)p
 Fm(,)11 b Fc(ESC)p Fm(,)h Fc(ESCAPE)p Fm(,)f Fc(LFD)p
-Fm(,)g Fc(NEW-)555 1279 y(LINE)p Fm(,)16 b Fc(RET)p Fm(,)e
+Fm(,)g Fc(NEW-)555 1918 y(LINE)p Fm(,)16 b Fc(RET)p Fm(,)e
 Fc(RETURN)p Fm(,)f Fc(R)o(UBOUT)p Fm(,)i Fc(SP)l(A)o(CE)p
-Fm(,)g Fc(SPC)p Fm(,)f(and)i Fc(T)l(AB)p Fm(.)315 1361
+Fm(,)g Fc(SPC)p Fm(,)f(and)i Fc(T)l(AB)p Fm(.)315 1997
 y Fl(")p Fc(k)o(eyseq)q Fl(")p Fm(:)k Fc(function-name)e
-Fm(or)d Fc(macro)555 1416 y(k)o(eyseq)i Fm(di\013ers)e(from)g
+Fm(or)d Fc(macro)555 2052 y(k)o(eyseq)i Fm(di\013ers)e(from)g
 Fc(k)o(eyname)j Fm(ab)q(o)o(v)o(e)d(in)i(that)d(strings)i(denoting)g
-(an)f(en-)555 1471 y(tire)i(k)o(ey)g(sequence)h(can)f(b)q(e)g(sp)q
+(an)f(en-)555 2107 y(tire)i(k)o(ey)g(sequence)h(can)f(b)q(e)g(sp)q
 (eci\014ed,)i(b)o(y)e(placing)h(the)f(k)o(ey)g(sequence)h(in)555
-1526 y(double)e(quotes.)j(Some)c Fh(gnu)g Fm(Emacs)f(st)o(yle)h(k)o(ey)
-g(escap)q(es)g(can)g(b)q(e)g(used,)g(as)555 1580 y(in)j(the)f(follo)o
+2161 y(double)e(quotes.)j(Some)c Fh(gnu)g Fm(Emacs)f(st)o(yle)h(k)o(ey)
+g(escap)q(es)g(can)g(b)q(e)g(used,)g(as)555 2216 y(in)j(the)f(follo)o
 (wing)g(example,)h(but)f(the)g(sp)q(ecial)i(c)o(haracter)d(names)h(are)
-f(not)555 1635 y(recognized.)675 1701 y Fl("\\C-u":)23
-b(universal-argument)675 1753 y("\\C-x\\C-r":)f(re-read-init-file)675
-1805 y("\\e[11~":)h("Function)f(Key)i(1")555 1873 y Fm(In)33
+f(not)555 2271 y(recognized.)675 2335 y Fl("\\C-u":)23
+b(universal-argument)675 2387 y("\\C-x\\C-r":)f(re-read-init-file)675
+2439 y("\\e[11~":)h("Function)f(Key)i(1")555 2506 y Fm(In)33
 b(the)f(ab)q(o)o(v)o(e)g(example,)37 b Fg(C-u)32 b Fm(is)h(again)f(b)q
-(ound)h(to)f(the)g(function)555 1928 y Fl(universal-argument)19
+(ound)h(to)f(the)g(function)555 2560 y Fl(universal-argument)19
 b Fm(\(just)j(as)f(it)h(w)o(as)f(in)i(the)f(\014rst)f(example\),)j(`)p
-Fg(C-x)555 1983 y(C-r)p Fm(')c(is)h(b)q(ound)g(to)f(the)h(function)g
-Fl(re-read-init-file)p Fm(,)f(and)g(`)1731 1981 y Ff(h)p
-1743 1955 70 2 v 1743 1983 a Fe(ESC)p 1743 1991 V 1810
-1981 a Ff(i)15 b(h)p 1852 1955 10 2 v 1852 1983 a Fe([)p
-1852 1991 V 1860 1981 a Ff(i)555 2036 y(h)p 567 2010
-18 2 v 567 2038 a Fe(1)p 567 2045 V 583 2036 a Ff(i)g(h)p
-625 2010 V 625 2038 a Fe(1)p 625 2045 V 640 2036 a Ff(i)g(h)p
-683 2010 24 2 v 683 2038 a Fl(~)p 683 2045 V 704 2036
-a Ff(i)719 2038 y Fm(')g(is)h(b)q(ound)g(to)e(insert)i(the)f(text)g(`)p
-Fl(Function)f(Key)g(1)p Fm('.)315 2120 y(The)h(follo)o(wing)h
-Fh(gnu)e Fm(Emacs)h(st)o(yle)g(escap)q(e)h(sequences)g(are)e(a)o(v)m
-(ailable)j(when)e(sp)q(ecifying)315 2175 y(k)o(ey)g(sequences:)315
-2258 y Fg(\\C-)168 b Fm(con)o(trol)15 b(pre\014x)315
-2340 y Fg(\\M-)168 b Fm(meta)15 b(pre\014x)315 2423 y
-Fg(\\e)192 b Fm(an)15 b(escap)q(e)h(c)o(haracter)315
-2505 y Fg(\\\\)192 b Fm(bac)o(kslash)315 2587 y Fg(\\)p
-Fl(")555 2585 y Ff(h)p 567 2559 V 567 2587 a Fl(")p 567
-2595 V 589 2585 a Ff(i)604 2587 y Fm(,)15 b(a)f(double)j(quotation)e
-(mark)315 2670 y Fg(\\')555 2668 y Ff(h)p 567 2642 10
-2 v 567 2670 a Fe(')p 567 2678 V 575 2668 a Ff(i)590
-2670 y Fm(,)g(a)f(single)j(quote)e(or)g(ap)q(ostrophe)p
-eop
+Fg(C-x)555 2615 y(C-r)p Fm(')c(is)h(b)q(ound)g(to)f(the)h(function)g
+Fl(re-read-init-file)p Fm(,)f(and)g(`)1731 2613 y Ff(h)p
+1743 2587 70 2 v 1743 2615 a Fe(ESC)p 1743 2623 V 1810
+2613 a Ff(i)15 b(h)p 1852 2587 10 2 v 1852 2615 a Fe([)p
+1852 2623 V 1860 2613 a Ff(i)555 2668 y(h)p 567 2642
+18 2 v 567 2670 a Fe(1)p 567 2678 V 583 2668 a Ff(i)g(h)p
+625 2642 V 625 2670 a Fe(1)p 625 2678 V 640 2668 a Ff(i)g(h)p
+683 2642 24 2 v 683 2670 a Fl(~)p 683 2678 V 704 2668
+a Ff(i)719 2670 y Fm(')g(is)h(b)q(ound)g(to)e(insert)i(the)f(text)g(`)p
+Fl(Function)f(Key)g(1)p Fm('.)p eop
 %%Page: 8 10
 8 9 bop 75 -58 a Fm(8)1322 b(GNU)15 b(Readline)h(Library)315
-149 y(In)e(addition)h(to)f(the)f Fh(gnu)h Fm(Emacs)g(st)o(yle)f(escap)q
-(e)i(sequences,)g(a)e(second)i(set)e(of)h(bac)o(kslash)315
-204 y(escap)q(es)i(is)g(a)o(v)m(ailable:)315 286 y Fl(\\a)192
-b Fm(alert)15 b(\(b)q(ell\))315 368 y Fl(\\b)192 b Fm(bac)o(kspace)315
-449 y Fl(\\d)g Fm(delete)315 531 y Fl(\\f)g Fm(form)14
-b(feed)315 613 y Fl(\\n)192 b Fm(newline)315 694 y Fl(\\r)g
-Fm(carriage)15 b(return)315 776 y Fl(\\t)192 b Fm(horizon)o(tal)16
-b(tab)315 858 y Fl(\\v)192 b Fm(v)o(ertical)16 b(tab)315
-940 y Fl(\\)p Fc(nnn)141 b Fm(the)14 b(c)o(haracter)f(whose)h
-Fh(asci)q(i)e Fm(co)q(de)j(is)f(the)g(o)q(ctal)g(v)m(alue)h
-Fc(nnn)f Fm(\(one)g(to)f(three)555 994 y(digits\))315
-1076 y Fl(\\x)p Fc(nnn)117 b Fm(the)16 b(c)o(haracter)f(whose)h
-Fh(asci)q(i)f Fm(co)q(de)i(is)f(the)h(hexadecimal)g(v)m(alue)g
-Fc(nnn)g Fm(\(one)555 1131 y(to)e(three)g(digits\))315
-1213 y(When)k(en)o(tering)g(the)g(text)f(of)g(a)h(macro,)f(single)i(or)
-e(double)i(quotes)f(m)o(ust)f(b)q(e)h(used)h(to)315 1267
+149 y(The)f(follo)o(wing)h Fh(gnu)e Fm(Emacs)h(st)o(yle)g(escap)q(e)h
+(sequences)g(are)e(a)o(v)m(ailable)j(when)e(sp)q(ecifying)315
+204 y(k)o(ey)g(sequences:)315 287 y Fg(\\C-)168 b Fm(con)o(trol)15
+b(pre\014x)315 370 y Fg(\\M-)168 b Fm(meta)15 b(pre\014x)315
+453 y Fg(\\e)192 b Fm(an)15 b(escap)q(e)h(c)o(haracter)315
+536 y Fg(\\\\)192 b Fm(bac)o(kslash)315 619 y Fg(\\)p
+Fl(")555 617 y Ff(h)p 567 591 24 2 v 567 619 a Fl(")p
+567 627 V 589 617 a Ff(i)604 619 y Fm(,)15 b(a)f(double)j(quotation)e
+(mark)315 702 y Fg(\\')555 700 y Ff(h)p 567 674 10 2
+v 567 702 a Fe(')p 567 710 V 575 700 a Ff(i)590 702 y
+Fm(,)g(a)f(single)j(quote)e(or)g(ap)q(ostrophe)315 785
+y(In)f(addition)h(to)f(the)f Fh(gnu)h Fm(Emacs)g(st)o(yle)f(escap)q(e)i
+(sequences,)g(a)e(second)i(set)e(of)h(bac)o(kslash)315
+840 y(escap)q(es)i(is)g(a)o(v)m(ailable:)315 923 y Fl(\\a)192
+b Fm(alert)15 b(\(b)q(ell\))315 1006 y Fl(\\b)192 b Fm(bac)o(kspace)315
+1089 y Fl(\\d)g Fm(delete)315 1172 y Fl(\\f)g Fm(form)14
+b(feed)315 1255 y Fl(\\n)192 b Fm(newline)315 1338 y
+Fl(\\r)g Fm(carriage)15 b(return)315 1421 y Fl(\\t)192
+b Fm(horizon)o(tal)16 b(tab)315 1504 y Fl(\\v)192 b Fm(v)o(ertical)16
+b(tab)315 1587 y Fl(\\)p Fc(nnn)141 b Fm(the)17 b(eigh)o(t-bit)h(c)o
+(haracter)f(whose)g(v)m(alue)i(is)e(the)h(o)q(ctal)f(v)m(alue)i
+Fc(nnn)f Fm(\(one)f(to)555 1642 y(three)e(digits\))315
+1725 y Fl(\\x)p Fc(HH)124 b Fm(the)20 b(eigh)o(t-bit)g(c)o(haracter)f
+(whose)h(v)m(alue)h(is)f(the)g(hexadecimal)h(v)m(alue)g
+Fc(HH)555 1780 y Fm(\(one)15 b(or)g(t)o(w)o(o)f(hex)h(digits\))315
+1863 y(When)k(en)o(tering)g(the)g(text)f(of)g(a)h(macro,)f(single)i(or)
+e(double)i(quotes)f(m)o(ust)f(b)q(e)h(used)h(to)315 1917
 y(indicate)12 b(a)f(macro)f(de\014nition.)20 b(Unquoted)11
 b(text)f(is)i(assumed)e(to)h(b)q(e)g(a)f(function)i(name.)18
-b(In)315 1322 y(the)11 b(macro)f(b)q(o)q(dy)l(,)i(the)f(bac)o(kslash)g
+b(In)315 1972 y(the)11 b(macro)f(b)q(o)q(dy)l(,)i(the)f(bac)o(kslash)g
 (escap)q(es)g(describ)q(ed)i(ab)q(o)o(v)o(e)d(are)g(expanded.)20
-b(Bac)o(kslash)315 1377 y(will)i(quote)d(an)o(y)h(other)g(c)o(haracter)
+b(Bac)o(kslash)315 2027 y(will)i(quote)d(an)o(y)h(other)g(c)o(haracter)
 f(in)i(the)f(macro)f(text,)h(including)j(`)p Fl(")p Fm(')c(and)h(`)p
-Fl(')p Fm('.)34 b(F)l(or)315 1432 y(example,)14 b(the)f(follo)o(wing)g
+Fl(')p Fm('.)34 b(F)l(or)315 2082 y(example,)14 b(the)f(follo)o(wing)g
 (binding)i(will)g(mak)o(e)d(`)p Fg(C-x)i Fl(\\)p Fm(')f(insert)g(a)g
 (single)h(`)p Fl(\\)p Fm(')e(in)o(to)h(the)g(line:)435
-1497 y Fl("\\C-x\\\\":)23 b("\\\\")75 1613 y Fb(1.3.2)30
-b(Conditional)20 b(Init)g(Constructs)137 1712 y Fm(Readline)f(implemen)
+2148 y Fl("\\C-x\\\\":)23 b("\\\\")75 2267 y Fb(1.3.2)30
+b(Conditional)20 b(Init)g(Constructs)137 2366 y Fm(Readline)f(implemen)
 o(ts)g(a)f(facilit)o(y)g(similar)h(in)g(spirit)f(to)f(the)h
-(conditional)h(compilation)g(features)75 1766 y(of)e(the)g(C)g(prepro)q
+(conditional)h(compilation)g(features)75 2421 y(of)e(the)g(C)g(prepro)q
 (cessor)g(whic)o(h)i(allo)o(ws)e(k)o(ey)g(bindings)i(and)f(v)m(ariable)
-g(settings)f(to)g(b)q(e)h(p)q(erformed)f(as)75 1821 y(the)e(result)h
+g(settings)f(to)g(b)q(e)h(p)q(erformed)f(as)75 2476 y(the)e(result)h
 (of)f(tests.)k(There)c(are)g(four)g(parser)g(directiv)o(es)h(used.)75
-1904 y Fl($if)168 b Fm(The)16 b Fl($if)f Fm(construct)g(allo)o(ws)h
+2560 y Fl($if)168 b Fm(The)16 b Fl($if)f Fm(construct)g(allo)o(ws)h
 (bindings)i(to)d(b)q(e)h(made)g(based)g(on)f(the)h(editing)h(mo)q(de,)f
-(the)315 1959 y(terminal)k(b)q(eing)g(used,)g(or)f(the)g(application)i
+(the)315 2615 y(terminal)k(b)q(eing)g(used,)g(or)f(the)g(application)i
 (using)e(Readline.)33 b(The)19 b(text)g(of)f(the)i(test)315
-2013 y(extends)c(to)e(the)h(end)h(of)f(the)g(line;)i(no)e(c)o
-(haracters)f(are)h(required)i(to)d(isolate)i(it.)315
-2095 y Fl(mode)144 b Fm(The)11 b Fl(mode=)e Fm(form)h(of)g(the)h
+2670 y(extends)c(to)e(the)h(end)h(of)f(the)g(line;)i(no)e(c)o
+(haracters)f(are)h(required)i(to)d(isolate)i(it.)p eop
+%%Page: 9 11
+9 10 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
+b(9)315 149 y Fl(mode)144 b Fm(The)11 b Fl(mode=)e Fm(form)h(of)g(the)h
 Fl($if)f Fm(directiv)o(e)h(is)g(used)g(to)f(test)g(whether)h(Readline)
-555 2150 y(is)k(in)h Fl(emacs)e Fm(or)g Fl(vi)g Fm(mo)q(de.)20
+555 204 y(is)k(in)h Fl(emacs)e Fm(or)g Fl(vi)g Fm(mo)q(de.)20
 b(This)c(ma)o(y)e(b)q(e)h(used)g(in)h(conjunction)g(with)f(the)555
-2205 y(`)p Fl(set)f(keymap)p Fm(')f(command,)g(for)h(instance,)g(to)f
-(set)h(bindings)h(in)g(the)f Fl(emacs-)555 2260 y(standard)d
+259 y(`)p Fl(set)f(keymap)p Fm(')f(command,)g(for)h(instance,)g(to)f
+(set)h(bindings)h(in)g(the)f Fl(emacs-)555 314 y(standard)d
 Fm(and)i Fl(emacs-ctlx)e Fm(k)o(eymaps)h(only)i(if)f(Readline)g(is)g
-(starting)f(out)555 2314 y(in)k Fl(emacs)f Fm(mo)q(de.)315
-2396 y Fl(term)144 b Fm(The)14 b Fl(term=)e Fm(form)h(ma)o(y)g(b)q(e)h
+(starting)f(out)555 369 y(in)k Fl(emacs)f Fm(mo)q(de.)315
+448 y Fl(term)144 b Fm(The)14 b Fl(term=)e Fm(form)h(ma)o(y)g(b)q(e)h
 (used)g(to)f(include)j(terminal-sp)q(eci\014c)g(k)o(ey)d(bind-)555
-2451 y(ings,)19 b(p)q(erhaps)g(to)e(bind)i(the)g(k)o(ey)e(sequences)j
-(output)e(b)o(y)g(the)g(terminal's)555 2506 y(function)13
+503 y(ings,)19 b(p)q(erhaps)g(to)e(bind)i(the)g(k)o(ey)e(sequences)j
+(output)e(b)o(y)g(the)g(terminal's)555 558 y(function)13
 b(k)o(eys.)18 b(The)13 b(w)o(ord)e(on)h(the)g(righ)o(t)g(side)g(of)g
-(the)g(`)p Fl(=)p Fm(')f(is)h(tested)g(against)555 2560
+(the)g(`)p Fl(=)p Fm(')f(is)h(tested)g(against)555 613
 y(b)q(oth)j(the)g(full)i(name)e(of)f(the)h(terminal)h(and)f(the)g(p)q
-(ortion)h(of)e(the)h(terminal)555 2615 y(name)i(b)q(efore)g(the)g
+(ortion)h(of)e(the)h(terminal)555 667 y(name)i(b)q(efore)g(the)g
 (\014rst)f(`)p Fl(-)p Fm('.)24 b(This)17 b(allo)o(ws)g
 Fl(sun)f Fm(to)g(matc)o(h)h(b)q(oth)f Fl(sun)h Fm(and)555
-2670 y Fl(sun-cmd)p Fm(,)d(for)g(instance.)p eop
-%%Page: 9 11
-9 10 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(9)315 149 y Fl(application)555 204 y Fm(The)11 b Fc(application)i
-Fm(construct)e(is)g(used)h(to)e(include)j(application-sp)q(eci)q(\014c)
-h(set-)555 259 y(tings.)19 b(Eac)o(h)12 b(program)f(using)j(the)e
-(Readline)i(library)f(sets)f(the)g Fc(application)555
-314 y(name)p Fm(,)g(and)g(y)o(ou)f(can)h(test)f(for)g(a)g(particular)h
-(v)m(alue.)20 b(This)12 b(could)h(b)q(e)f(used)h(to)555
-369 y(bind)18 b(k)o(ey)e(sequences)i(to)d(functions)j(useful)f(for)f(a)
-g(sp)q(eci\014c)i(program.)23 b(F)l(or)555 423 y(instance,)17
-b(the)g(follo)o(wing)g(command)g(adds)f(a)g(k)o(ey)h(sequence)g(that)f
-(quotes)555 478 y(the)f(curren)o(t)g(or)g(previous)h(w)o(ord)e(in)j
-(Bash:)675 543 y Fl($if)23 b(Bash)675 594 y(#)h(Quote)f(the)g(current)g
-(or)h(previous)f(word)675 646 y("\\C-xq":)g("\\eb\\"\\ef\\"")675
-698 y($endif)75 778 y($endif)96 b Fm(This)16 b(command,)e(as)h(seen)h
-(in)g(the)f(previous)h(example,)g(terminates)f(an)g Fl($if)f
-Fm(command.)75 858 y Fl($else)120 b Fm(Commands)15 b(in)h(this)f(branc)
-o(h)h(of)e(the)i Fl($if)e Fm(directiv)o(e)j(are)e(executed)h(if)g(the)f
-(test)g(fails.)75 937 y Fl($include)48 b Fm(This)22 b(directiv)o(e)h
-(tak)o(es)e(a)h(single)h(\014lename)g(as)e(an)h(argumen)o(t)f(and)h
-(reads)f(commands)315 992 y(and)e(bindings)j(from)c(that)h(\014le.)33
+722 y Fl(sun-cmd)p Fm(,)d(for)g(instance.)315 802 y Fl(application)555
+857 y Fm(The)d Fc(application)i Fm(construct)e(is)g(used)h(to)e
+(include)j(application-sp)q(eci)q(\014c)h(set-)555 912
+y(tings.)19 b(Eac)o(h)12 b(program)f(using)j(the)e(Readline)i(library)f
+(sets)f(the)g Fc(application)555 966 y(name)p Fm(,)g(and)g(y)o(ou)f
+(can)h(test)f(for)g(a)g(particular)h(v)m(alue.)20 b(This)12
+b(could)h(b)q(e)f(used)h(to)555 1021 y(bind)18 b(k)o(ey)e(sequences)i
+(to)d(functions)j(useful)f(for)f(a)g(sp)q(eci\014c)i(program.)23
+b(F)l(or)555 1076 y(instance,)17 b(the)g(follo)o(wing)g(command)g(adds)
+f(a)g(k)o(ey)h(sequence)g(that)f(quotes)555 1131 y(the)f(curren)o(t)g
+(or)g(previous)h(w)o(ord)e(in)j(Bash:)675 1195 y Fl($if)23
+b(Bash)675 1247 y(#)h(Quote)f(the)g(current)g(or)h(previous)f(word)675
+1299 y("\\C-xq":)g("\\eb\\"\\ef\\"")675 1351 y($endif)75
+1430 y($endif)96 b Fm(This)16 b(command,)e(as)h(seen)h(in)g(the)f
+(previous)h(example,)g(terminates)f(an)g Fl($if)f Fm(command.)75
+1510 y Fl($else)120 b Fm(Commands)15 b(in)h(this)f(branc)o(h)h(of)e
+(the)i Fl($if)e Fm(directiv)o(e)j(are)e(executed)h(if)g(the)f(test)g
+(fails.)75 1590 y Fl($include)48 b Fm(This)22 b(directiv)o(e)h(tak)o
+(es)e(a)h(single)h(\014lename)g(as)e(an)h(argumen)o(t)f(and)h(reads)f
+(commands)315 1645 y(and)e(bindings)j(from)c(that)h(\014le.)33
 b(F)l(or)19 b(example,)i(the)e(follo)o(wing)h(directiv)o(e)h(reads)e
-(from)315 1047 y(`)p Fl(/etc/inputrc)p Fm(':)435 1111
-y Fl($include)k(/etc/inputrc)75 1223 y Fb(1.3.3)30 b(Sample)20
-b(Init)h(File)137 1320 y Fm(Here)16 b(is)g(an)f(example)h(of)f(an)g
+(from)315 1699 y(`)p Fl(/etc/inputrc)p Fm(':)435 1764
+y Fl($include)k(/etc/inputrc)75 1876 y Fb(1.3.3)30 b(Sample)20
+b(Init)h(File)137 1972 y Fm(Here)16 b(is)g(an)f(example)h(of)f(an)g
 Fc(inputrc)k Fm(\014le.)i(This)16 b(illustrates)g(k)o(ey)f(binding,)i
-(v)m(ariable)f(assignmen)o(t,)75 1374 y(and)f(conditional)i(syn)o(tax.)
+(v)m(ariable)f(assignmen)o(t,)75 2027 y(and)f(conditional)i(syn)o(tax.)
 p eop
 %%Page: 10 12
 10 11 bop 75 -58 a Fm(10)1299 b(GNU)15 b(Readline)h(Library)195
@@ -1605,48 +1623,51 @@ g(at)e(the)i(b)q(eginning)i(of)d(the)g(line,)j(there)315
 259 y(are)c(no)h(c)o(haracters)e(in)j(the)e(line,)j(and)e(the)f(last)h
 (c)o(haracter)e(t)o(yp)q(ed)i(w)o(as)f(not)g(b)q(ound)i(to)315
 314 y Fl(delete-char)p Fm(,)13 b(then)j(return)f Fh(eof)p
-Fm(.)75 406 y Fl(backward-delete-char)d(\(Rubout\))315
-460 y Fm(Delete)k(the)f(c)o(haracter)f(b)q(ehind)j(the)f(cursor.)j(A)c
+Fm(.)75 401 y Fl(backward-delete-char)d(\(Rubout\))315
+456 y Fm(Delete)k(the)f(c)o(haracter)f(b)q(ehind)j(the)f(cursor.)j(A)c
 (n)o(umeric)h(argumen)o(t)e(means)i(to)e(kill)j(the)315
-515 y(c)o(haracters)d(instead)i(of)f(deleting)i(them.)75
-607 y Fl(forward-backward-delete-ch)o(ar)12 b(\(\))315
-662 y Fm(Delete)20 b(the)f(c)o(haracter)f(under)i(the)f(cursor,)h
+511 y(c)o(haracters)d(instead)i(of)f(deleting)i(them.)75
+598 y Fl(forward-backward-delete-ch)o(ar)12 b(\(\))315
+653 y Fm(Delete)20 b(the)f(c)o(haracter)f(under)i(the)f(cursor,)h
 (unless)g(the)f(cursor)g(is)h(at)e(the)h(end)h(of)f(the)315
-717 y(line,)e(in)g(whic)o(h)g(case)e(the)h(c)o(haracter)g(b)q(ehind)h
+707 y(line,)e(in)g(whic)o(h)g(case)e(the)h(c)o(haracter)g(b)q(ehind)h
 (the)f(cursor)g(is)g(deleted.)23 b(By)16 b(default,)h(this)315
-771 y(is)f(not)f(b)q(ound)h(to)e(a)h(k)o(ey)l(.)75 863
-y Fl(quoted-insert)e(\(C-q)i(or)g(C-v\))315 918 y Fm(Add)j(the)f(next)g
+762 y(is)f(not)f(b)q(ound)h(to)e(a)h(k)o(ey)l(.)75 850
+y Fl(quoted-insert)e(\(C-q)i(or)g(C-v\))315 904 y Fm(Add)j(the)f(next)g
 (c)o(haracter)g(t)o(yp)q(ed)g(to)f(the)i(line)g(v)o(erbatim.)26
-b(This)18 b(is)f(ho)o(w)g(to)g(insert)g(k)o(ey)315 973
+b(This)18 b(is)f(ho)o(w)g(to)g(insert)g(k)o(ey)315 959
 y(sequences)f(lik)o(e)h Fg(C-q)p Fm(,)d(for)h(example.)75
-1065 y Fl(tab-insert)f(\(M-)401 1063 y Ff(h)p 412 1037
-74 2 v 412 1065 a Fe(T)m(AB)p 412 1072 V 484 1063 a Ff(i)499
-1065 y Fl(\))315 1119 y Fm(Insert)h(a)g(tab)g(c)o(haracter.)75
-1211 y Fl(self-insert)f(\(a,)g(b,)h(A,)g(1,)g(!,)g(...)o(\))315
-1266 y Fm(Insert)g(y)o(ourself.)75 1358 y Fl(transpose-chars)e(\(C-t\))
-315 1413 y Fm(Drag)i(the)h(c)o(haracter)f(b)q(efore)h(the)h(cursor)e
+1046 y Fl(tab-insert)f(\(M-)401 1044 y Ff(h)p 412 1018
+74 2 v 412 1046 a Fe(T)m(AB)p 412 1054 V 484 1044 a Ff(i)499
+1046 y Fl(\))315 1101 y Fm(Insert)h(a)g(tab)g(c)o(haracter.)75
+1188 y Fl(self-insert)f(\(a,)g(b,)h(A,)g(1,)g(!,)g(...)o(\))315
+1243 y Fm(Insert)g(y)o(ourself.)75 1330 y Fl(transpose-chars)e(\(C-t\))
+315 1385 y Fm(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
-1467 y(mo)o(ving)i(the)f(cursor)h(forw)o(ard)e(as)i(w)o(ell.)28
+1440 y(mo)o(ving)i(the)f(cursor)h(forw)o(ard)e(as)i(w)o(ell.)28
 b(If)18 b(the)g(insertion)h(p)q(oin)o(t)f(is)g(at)f(the)h(end)h(of)e
-(the)315 1522 y(line,)c(then)e(this)h(transp)q(oses)e(the)h(last)g(t)o
+(the)315 1495 y(line,)c(then)e(this)h(transp)q(oses)e(the)h(last)g(t)o
 (w)o(o)f(c)o(haracters)g(of)h(the)g(line.)20 b(Negativ)o(e)11
-b(argumen)o(ts)315 1577 y(ha)o(v)o(e)k(no)g(e\013ect.)75
-1669 y Fl(transpose-words)e(\(M-t\))315 1724 y Fm(Drag)i(the)h(w)o(ord)
+b(argumen)o(ts)315 1550 y(ha)o(v)o(e)k(no)g(e\013ect.)75
+1637 y Fl(transpose-words)e(\(M-t\))315 1692 y Fm(Drag)i(the)h(w)o(ord)
 g(b)q(efore)g(p)q(oin)o(t)h(past)f(the)g(w)o(ord)f(after)h(p)q(oin)o
-(t,)g(mo)o(ving)g(p)q(oin)o(t)h(past)f(that)315 1778
-y(w)o(ord)f(as)f(w)o(ell.)75 1870 y Fl(upcase-word)g(\(M-u\))315
-1925 y Fm(Upp)q(ercase)j(the)f(curren)o(t)g(\(or)f(follo)o(wing\))h(w)o
-(ord.)22 b(With)16 b(a)g(negativ)o(e)g(argumen)o(t,)f(upp)q(er-)315
-1980 y(case)g(the)g(previous)h(w)o(ord,)f(but)g(do)g(not)g(mo)o(v)o(e)f
-(the)i(cursor.)75 2072 y Fl(downcase-word)d(\(M-l\))315
-2126 y Fm(Lo)o(w)o(ercase)d(the)h(curren)o(t)g(\(or)f(follo)o(wing\))h
-(w)o(ord.)17 b(With)11 b(a)g(negativ)o(e)g(argumen)o(t,)f(lo)o(w)o
-(ercase)315 2181 y(the)15 b(previous)h(w)o(ord,)e(but)i(do)f(not)g(mo)o
-(v)o(e)f(the)h(cursor.)75 2273 y Fl(capitalize-word)e(\(M-c\))315
-2328 y Fm(Capitalize)f(the)f(curren)o(t)f(\(or)g(follo)o(wing\))h(w)o
+(t,)g(mo)o(ving)g(p)q(oin)o(t)h(past)f(that)315 1746
+y(w)o(ord)d(as)h(w)o(ell.)21 b(If)14 b(the)g(insertion)i(p)q(oin)o(t)e
+(is)h(at)f(the)g(end)h(of)e(the)i(line,)g(this)g(transp)q(oses)f(the)
+315 1801 y(last)h(t)o(w)o(o)f(w)o(ords)g(on)i(the)f(line.)75
+1888 y Fl(upcase-word)f(\(M-u\))315 1943 y Fm(Upp)q(ercase)j(the)f
+(curren)o(t)g(\(or)f(follo)o(wing\))h(w)o(ord.)22 b(With)16
+b(a)g(negativ)o(e)g(argumen)o(t,)f(upp)q(er-)315 1998
+y(case)g(the)g(previous)h(w)o(ord,)f(but)g(do)g(not)g(mo)o(v)o(e)f(the)
+i(cursor.)75 2085 y Fl(downcase-word)d(\(M-l\))315 2140
+y Fm(Lo)o(w)o(ercase)d(the)h(curren)o(t)g(\(or)f(follo)o(wing\))h(w)o
+(ord.)17 b(With)11 b(a)g(negativ)o(e)g(argumen)o(t,)f(lo)o(w)o(ercase)
+315 2195 y(the)15 b(previous)h(w)o(ord,)e(but)i(do)f(not)g(mo)o(v)o(e)f
+(the)h(cursor.)75 2282 y Fl(capitalize-word)e(\(M-c\))315
+2337 y Fm(Capitalize)f(the)f(curren)o(t)f(\(or)g(follo)o(wing\))h(w)o
 (ord.)18 b(With)11 b(a)f(negativ)o(e)h(argumen)o(t,)f(capitalize)315
-2383 y(the)15 b(previous)h(w)o(ord,)e(but)i(do)f(not)g(mo)o(v)o(e)f
-(the)h(cursor.)75 2494 y Fb(1.4.4)30 b(Killing)20 b(And)h(Y)-5
+2392 y(the)15 b(previous)h(w)o(ord,)e(but)i(do)f(not)g(mo)o(v)o(e)f
+(the)h(cursor.)75 2499 y Fb(1.4.4)30 b(Killing)20 b(And)h(Y)-5
 b(anking)75 2615 y Fl(kill-line)14 b(\(C-k\))315 2670
 y Fm(Kill)j(the)f(text)e(from)h(p)q(oin)o(t)h(to)e(the)h(end)h(of)f
 (the)g(line.)p eop
index 43f652d00f190919ea8d1d17b8916c835d629e96..5439e081fdd83c7be96742a8bfc872f2ef49aaba 100755 (executable)
@@ -1,8 +1,8 @@
 #! /bin/sh
-# texi2dvi --- smartly produce DVI files from texinfo sources
-# $Id: texi2dvi,v 0.8 1998/02/26 21:13:13 karl Exp $
+# 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 Free Software Foundation, Inc.
+# 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
 # program's maintainer or write to: The Free Software Foundation,
 # Inc.; 59 Temple Place, Suite 330; Boston, MA 02111-1307, USA.
 #
-# Commentary:
-#
-# Author: Noah Friedman <friedman@gnu.org>
+# 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.
-#
-# In the interest of general portability, some common bourne shell
-# constructs were avoided because they weren't guaranteed to be available
-# in some earlier implementations.  I've tried to make this program as
-# portable as possible.  Welcome to unix, where the lowest common
-# denominator is rapidly diminishing.
-#
-# Among the more interesting lossages I noticed among Bourne shells:
-#     * No shell functions.
-#     * No `unset' builtin.
-#     * `shift' cannot take a numeric argument, and signals an error if
-#       there are no arguments to shift.
-#
-# Code:
-
-# Name by which this script was invoked.
-progname=`echo "$0" | sed -e 's/[^\/]*\///g'`
 
 # This string is expanded by rcs automatically when this file is checked out.
-rcs_revision='$Revision: 0.8 $'
-version=`set - $rcs_revision; echo $2`
-
-# To prevent hairy quoting and escaping later.
-bq='`'
-eq="'"
+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
 
-usage="Usage: $0 [OPTION]... FILE...
-Run a Texinfo document through TeX.
+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."
 
-Options:
--b, --batch          No interaction (\nonstopmode in TeX).
--c, --clean          Remove all auxiliary files.
--D, --debug          Turn on shell debugging ($bq${bq}set -x$eq$eq).
--t, --texinfo CMD    Insert CMD after @setfilename before running TeX.
---verbose            Report on what is done.
--h, --help           Display this help and exit.
--v, --version        Display version information and exit.
+usage="Usage: $program [OPTION]... FILE...
 
-The values of the TEX, TEXINDEX, and MAKEINFO environment variables are
-used to run those commands, if they are set.
+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).
 
-Email bug reports to bug-texinfo@gnu.org."
+Makeinfo is used to perform Texinfo macro expansion before running TeX
+when needed.
 
-# Initialize variables.
+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.
-# Some of these, like TEX and TEXINDEX, may be inherited from the environment.
-backup_extension=.bak # these files get deleted if all goes well.
-batch=
+escape='\'
+batch=false     # eval for batch mode
 clean=
 debug=
-orig_pwd="`pwd`"
+expand=         # t for expansion via makeinfo
+oformat=dvi
+set_language=
+miincludes=     # makeinfo include path
 textra=
-verbose=false
-makeinfo="${MAKEINFO-makeinfo}"
-texindex="${TEXINDEX-texindex}"
-tex="${TEX-tex}"
+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"
-export 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.
-# Make sure that all wildcarded options are long enough to be unambiguous.
-# It's a good idea to document the full long option name in each case.
-# Long options which take arguments will need a `*' appended to the
-# canonical name to match the value appended after the `=' character.
-while :; do
-  test $# -eq 0 && break
-  
+while test x"$1" != x"$arg_sep"; do
+
+  # Handle --option=value by splitting apart and putting back on argv.
   case "$1" in
-    -b | --batch | --b* ) batch=t; shift ;;
-    -c | --clean | --c* ) clean=t; shift ;;
-    -D | --debug | --d* ) debug=t; shift ;;
-    -h | --help | --h* )   echo "$usage"; exit 0 ;;
-    # OK, we should do real option parsing here, but be lazy for now.
-    -t | --texinfo | --t*) shift; textra="$textra $1"; shift ;; 
-    -v | --vers* )
-      echo "$progname (GNU Texinfo 3.12) $version"
-      echo "Copyright (C) 1998 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."
-      exit 0 ;;
-    --verb* )            verbose=echo; shift ;;
-    -- )     # Stop option processing
+    --*=*)
+      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
-      break ;;
-    -* )
-      case "$1" in
-        --*=* ) arg=`echo "$1" | sed -e 's/=.*//'` ;;
-        * )     arg="$1" ;;
-      esac
-      exec 1>&2
-      echo "$progname: Unknown or ambiguous option $bq$arg$eq."
-      echo "$progname: Try $bq--help$eq for more information."
-      exit 1 ;;
-    * ) break ;;
+      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
 
-# See if there are any command line args left (which will be interpreted as
-# filename arguments).
-if test $# -eq 0; then
-  exec 1>&2
-  echo "$progname: At least one file name is required as an argument."
-  echo "$progname: Try $bq--help$eq for more information."
+# 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
 
-# Texify files
+# \f
+# TeXify files.
+
 for command_line_filename in ${1+"$@"}; do
   $verbose "Processing $command_line_filename ..."
 
-  # See if file exists.  If it doesn't we're in trouble since, even
+  # 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 index files and so forth.
-  if test ! -r "${command_line_filename}"; then
-    echo "$0: Could not read ${command_line_filename}." >&2
+  # 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
 
-  # Roughly equivalent to `dirname ...`, but more portable
-  directory="`echo ${command_line_filename} | sed 's/\/[^\/]*$//'`"
-  filename_texi="`basename ${command_line_filename}`"
-  # Strip off the last extension part (probably .texinfo or .texi)
-  filename_noext="`echo ${filename_texi} | sed 's/\.[^.]*$//'`"
-
-  # Use same basename since we want to generate aux files with the same
-  # basename as the manual.  Use extension .texi for the temp file so
-  # that TeX will ignore it.  Thus, we must use a subdirectory.
-  #
-  # Output the macro-expanded file to here.  The vastly abbreviated
-  # temporary directory name is so we don't have collisions on 8.3 or
-  # 14-character filesystems.
-  tmp_dir=${TMPDIR-/tmp}/txi2d.$$
-  filename_tmp=$tmp_dir/$filename_noext.texi
-  # Output the file with the user's extra commands to here.
-  tmp_dir2=${tmp_dir}.2
-  filename_tmp2=$tmp_dir2/$filename_noext.texi
-  mkdir $tmp_dir $tmp_dir2
-  # Always remove the temporary directories.
-  trap "rm -rf $tmp_dir $tmp_dir2" 1 2 15
-
-  # If directory and file are the same, then it's probably because there's
-  # no pathname component.  Set dirname to `.', the current directory.
-  if test "z${directory}" = "z${command_line_filename}"; then
-    directory=.
-  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 texinfo sources.  Put `.' and
+  # 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 `.'.
-  TEXINPUTS=".:${directory}:${TEXINPUTS_orig}"
+  # 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;
-  #   the macro syntax bfox implemented is impossible to implement in TeX.
+  # 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.
-  # Redirect output to /dev/null to throw away `Making info file...' msg.
-  $verbose "Macro-expanding $command_line_filename to $filename_tmp ..."
-  $makeinfo --footnote-style=end -E $filename_tmp -o /dev/null \
-    $command_line_filename >/dev/null
-
-  # But if there were no macros, or makeinfo failed for some reason,
-  # just use the original file.  (It shouldn't make any difference, but
-  # let's be safe.)
-  if test $? -ne 0 || cmp -s $filename_tmp $command_line_filename; then
+  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 ..."
-    cp -p $command_line_filename $filename_tmp
+    filename_input=$filename_dir/$filename_ext
   fi
-  filename_input=$filename_tmp
-  dirname_input=$tmp_dir
 
   # Used most commonly for @finalout, @smallbook, etc.
   if test -n "$textra"; then
-    $verbose "Inserting extra commands: $textra."
+    $verbose "Inserting extra commands: $textra"
     sed '/^@setfilename/a\
-'"$textra" $filename_input >$filename_tmp2
-   filename_input=$filename_tmp2
-   dirname_input=$tmp_dir2
+'"$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 $dirname_input"
-    cd $dirname_input || exit 1
-    filename_input=`basename $filename_input`
+    $verbose "cd $tmpdir_src"
+    cd "$tmpdir_src" || exit 1
   fi
 
-  while true; do # will break out of loop below
-    # "Unset" variables that might have values from previous iterations and
-    # which won't be completely reset later.
-    definite_index_files=
-
-    # Find all files having root filename with a two-letter extension,
-    # determine whether they're really index files, and save them.  Foo.aux
-    # is actually the cross-references file, but we need to keep track of
-    # that too.
-    possible_index_files="`eval echo ${filename_noext}.?? ${filename_noext}.aux`"
-    for this_file in ${possible_index_files}; do
-      # If file is empty, forget it.
-      test -s "${this_file}" || continue
-
-      # Examine first character of file.  If it's not suitable to be an
-      # index or xref file, don't process it.
-      first_character="`sed -n '1s/^\(.\).*$/\1/p;q' ${this_file}`"
-      if test "x${first_character}" = "x\\" \
-         || test "x${first_character}" = "x'"; then
-        definite_index_files="${definite_index_files} ${this_file}"
+  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
-    done
-    orig_index_files="${definite_index_files}"
-    orig_index_files_sans_aux="`echo ${definite_index_files} \
-                                 | sed 's/'${filename_noext}'\.aux//;
-                                        s/^[ ]*//;s/[ ]*$//;'`"
-
-    # Now save copies of original index files so we have some means of
-    # comparison later.
-    $verbose "Backing up current index files: $orig_index_files ..."  
-    for index_file_to_save in ${orig_index_files}; do
-      cp "${index_file_to_save}" "${index_file_to_save}${backup_extension}"
-    done
-
-    # Run texindex 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 "${orig_index_files_sans_aux}"; then
-      $verbose "Running $texindex $orig_index_files_sans_aux ..."
-      ${texindex} ${orig_index_files_sans_aux}
     fi
 
     # Finally, run TeX.
-    if test "$batch" = t; then
-      tex_mode='\nonstopmode'
-    else
-      tex_mode=
+    # 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
-    $verbose "Running $tex $filename_input ..."
-    cmd="$tex $tex_mode \\input $filename_input"
-    $cmd
-
-    # Check if index files changed.
-    # 
-    definite_index_files=
-    # Get list of new index files.
-    possible_index_files="`eval echo ${filename_noext}.?? ${filename_noext}.aux`"
-    for this_file in ${possible_index_files}; do
-       # If file is empty, forget it.
-       test -s "${this_file}" || continue
-
-       # Examine first character of file.  If it's not a backslash or
-       # single quote, then it's definitely not an index or xref file.
-       # (Will have to check for @ when we switch to Texinfo syntax in
-       # all these files...)
-       first_character="`sed -n '1s/^\(.\).*$/\1/p;q' ${this_file}`"
-       if test "x${first_character}" = "x\\" \
-          || test "x${first_character}" = "x'"; then
-         definite_index_files="${definite_index_files} ${this_file}"
-       fi
-    done
-    new_index_files="${definite_index_files}"
-    new_index_files_sans_aux="`echo ${definite_index_files} \
-                               | sed 's/'${filename_noext}'\.aux//;
-                                      s/^[ ]*//;s/[ ]*$//;'`"
-
-    # If old and new list don't at least have the same file list, then one
-    # file or another has definitely changed.
-    $verbose "Original index files =$orig_index_files"
-    $verbose "New index files =$new_index_files"
-    if test "z${orig_index_files}" != "z${new_index_files}"; then
-      index_files_changed_p=t
-    else
-      # File list is the same.  We must compare each file until we find a
-      # difference.
-      index_files_changed_p=
-      for this_file in ${new_index_files}; do
-        $verbose "Comparing index file $this_file ..."
-        # cmp -s will return nonzero exit status if files differ.
-        cmp -s "${this_file}" "${this_file}${backup_extension}"
-        if test $? -ne 0; then
-          # We only need to keep comparing until we find *one* that
-          # differs, because we'll have to run texindex & tex no
-          # matter what.
-          index_files_changed_p=t
-          $verbose "Index file $this_file differed:"
-          test $verbose = echo \
-          && diff -c "${this_file}${backup_extension}" "${this_file}"
+
+
+    # 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 index files have changed since TeX has been run, or if the aux
-    # file wasn't present originally, run texindex and TeX again.
-    if test "${index_files_changed_p}"; then :; else
-      # Nothing changed.  We're done with TeX.
-      break
-    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 file into the directory where the compilation
+  # 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 DVI file from `pwd` to $orig_pwd"
-    cp -p $filename_noext.dvi $orig_pwd
+    $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
 
-  # Generate list of files to delete, then call rm once with the entire
-  # list.  This is significantly faster than multiple executions of rm.
-  file_list=
-  for file in ${orig_index_files}; do
-    file_list="${file_list} ${file}${backup_extension}"
-  done
-  if test -n "${file_list}"; then
-    $verbose "Removing $file_list $tmp_dir $tmp_dir2 ..."
-    rm -f ${file_list}
-    rm -rf $tmp_dir $tmp_dir2
+  # 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."
-true # exit successfully.
+exit 0 # exit successfully, not however we ended the loop.
index 4beec01b341f0898f1e97725dd1cbd02c83da1a4..bdb3bee33437bd270f3dd9b129e85715f19b6f78 100755 (executable)
-#!/usr/local/bin/perl
+#! /usr/bin/perl
 'di ';
 'ig 00 ';
 #+##############################################################################
-#                                                                              #
-# File: texi2html                                                              #
-#                                                                              #
-# Description: Program to transform most Texinfo documents to HTML             #
-#                                                                              #
+#
+# 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
+# 
 #-##############################################################################
 
-# @(#)texi2html        1.52 01/05/98   Written (mainly) by Lionel Cons, Lionel.Cons@cern.ch
+# 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'.
-# Please read the copyright at the end of the man page.
+
+# 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;
 
 #+++############################################################################
 #                                                                              #
@@ -28,36 +1742,41 @@ $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
-$XREFRE = '[^@{}]+';                   # RE for a xref (should use NODERE)
-
-$ERROR = "***";                                # prefix for errors and warnings
-$THISPROG = "texi2html 1.52";                  # program name and version
-$HOMEPAGE = "http://wwwinfo.cern.ch/dis/texi2html/"; # program home page
-$TODAY = &pretty_date;                 # like "20 September 1993"
-$SPLITTAG = "<!-- SPLIT HERE -->\n";   # tag to know where to split
+$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
-$html2_doctype = '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 2//EN">';
 
-#
-# language dependent constants
-#
-#$LDC_SEE = 'see';
-#$LDC_SECTION = 'section';
-#$LDC_IN = 'in';
-#$LDC_TOC = 'Table of Contents';
-#$LDC_GOTO = 'Go to the';
-#$LDC_FOOT = 'Footnotes';
-# TODO: @def* shortcuts
+$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',
@@ -122,8 +1841,11 @@ $html2_doctype = '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 2//E
               # cf. makeinfo.c
               "*", "<BR>",             # HTML+
               " ", " ",
+              "\t", " ",
+              "-", "&#173;",   # soft hyphen
               "\n", "\n",
               "|", "",
+              'tab', '<\/TD><TD>',
               # spacing commands
               ":", "",
               "!", "!",
@@ -140,7 +1862,8 @@ $html2_doctype = '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 2//E
               'br', '<P>',             # paragraph break
               'bullet', '*',
               'copyright', '(C)',
-              'dots', '...',
+              'dots', '<small>...<\/small>',
+              'enddots', '<small>....<\/small>',
               'equiv', '==',
               'error', 'error-->',
               'expansion', '==>',
@@ -148,27 +1871,45 @@ $html2_doctype = '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 2//E
               'point', '-!-',
               'print', '-|',
               'result', '=>',
-              'today', $TODAY,
+              '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', 'EM',
+             '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
@@ -179,19 +1920,23 @@ $html2_doctype = '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 2//E
              '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 = (
-              'display', 'PRE',
-              'example', 'PRE',
-              'format', 'PRE',
-              'lisp', 'PRE',
               'quotation', 'BLOCKQUOTE',
-              'smallexample', 'PRE',
-              'smalllisp', 'PRE',
               # lists
               'itemize', 'UL',
               'enumerate', 'OL',
@@ -200,6 +1945,38 @@ $html2_doctype = '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 2//E
               '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
 #
@@ -229,7 +2006,9 @@ $html2_doctype = '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 2//E
            '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',
@@ -249,7 +2028,15 @@ $html2_doctype = '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 2//E
            # 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,
@@ -263,6 +2050,7 @@ $html2_doctype = '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 2//E
            'cropmarks', 1,
            'finalout', 1,
            'headings', 1,
+            'sp', 1,
            'need', 1,
            'page', 1,
            'setchapternewpage', 1,
@@ -289,88 +2077,221 @@ $html2_doctype = '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 2//E
 #                                                                              #
 #---############################################################################
 
-%value = ();                           # hold texinfo variables, see also -D
+#
+# 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 = 0;
-$debug = 0;
-$doctype = '';
-$check = 0;
-$expandinfo = 0;
-$use_glossary = 0;
-$invisible_mark = '';
-$use_iso = 0;
-@include_dirs = ();
-$show_menu = 0;
-$number_sections = 0;
-$split_node = 0;
-$split_chapter = 0;
-$monolithic = 0;
-$verbose = 0;
-$usage = <<EOT;
-This is $THISPROG
-To convert a Texinfo file to HMTL: $0 [options] file
-  where options can be:
-    -expandinfo    : use \@ifinfo sections, not \@iftex
-    -glossary      : handle a glossary
-    -invisible name: use 'name' as an invisible anchor
-    -Dname         : define name like with \@set
-    -I dir         : search also for files in 'dir'
-    -menu          : handle menus
-    -monolithic    : output only one file including ToC
-    -number        : number sections
-    -split_chapter : split on main sections
-    -split_node    : split on nodes
-    -usage         : print usage instructions
-    -verbose       : verbose output
-To check converted files: $0 -check [-verbose] files
-EOT
+$use_acc = 1;
 
-while (@ARGV && $ARGV[0] =~ /^-/) {
-    $_ = shift(@ARGV);
-    if (/^-acc$/)            { $use_acc = 1; next; }
-    if (/^-d(ebug)?(\d+)?$/) { $debug = $2 || shift(@ARGV); next; }
-    if (/^-doctype$/)        { $doctype = shift(@ARGV); next; }
-    if (/^-c(heck)?$/)       { $check = 1; next; }
-    if (/^-e(xpandinfo)?$/)  { $expandinfo = 1; next; }
-    if (/^-g(lossary)?$/)    { $use_glossary = 1; next; }
-    if (/^-i(nvisible)?$/)   { $invisible_mark = shift(@ARGV); next; }
-    if (/^-iso$/)            { $use_iso = 1; next; }
-    if (/^-D(.+)?$/)         { $value{$1 || shift(@ARGV)} = 1; next; }
-    if (/^-I(.+)?$/)         { push(@include_dirs, $1 || shift(@ARGV)); next; }
-    if (/^-m(enu)?$/)        { $show_menu = 1; next; }
-    if (/^-mono(lithic)?$/)  { $monolithic = 1; next; }
-    if (/^-n(umber)?$/)      { $number_sections = 1; next; }
-    if (/^-s(plit)?_?(n(ode)?|c(hapter)?)?$/) {
-       if ($2 =~ /^n/) {
-           $split_node = 1;
-       } else {
-           $split_chapter = 1;
-       }
-       next;
+#
+# 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);
     }
-    if (/^-v(erbose)?$/)     { $verbose = 1; next; }
-    die $usage;
 }
-if ($check) {
-    die $usage unless @ARGV > 0;
+
+
+#+++############################################################################
+#                                                                              #
+# 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;
 }
 
-if (($split_node || $split_chapter) && $monolithic) {
-    warn "Can't use -monolithic with -split, -monolithic ignored.\n";
-    $monolithic = 0;
-}
-if ($expandinfo) {
-    $to_skip{'ifinfo'}++;
-    $to_skip{'end ifinfo'}++;
-} else {
-    $to_skip{'iftex'}++;
-    $to_skip{'end iftex'}++;
+#+++############################################################################
+#                                                                              #
+# 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;
+  
 }
-$invisible_mark = '<IMG SRC="invisible.xbm">' if $invisible_mark eq 'xbm';
-die $usage unless @ARGV == 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 = $&);
@@ -379,29 +2300,123 @@ if ($docu =~ /.*\//) {
     $docu_dir = '.';
     $docu_name = $docu;
 }
-unshift(@include_dirs, $docu_dir);
+unshift(@T2H_INCLUDE_DIRS, $docu_dir);
 $docu_name =~ s/\.te?x(i|info)?$//;    # basename of the document
+$docu_name = $T2H_PREFIX if ($T2H_PREFIX);
 
-$docu_doc = "$docu_name.html";         # document's contents
-if ($monolithic) {
-    $docu_toc = $docu_foot = $docu_doc;
-} else {
-    $docu_toc  = "${docu_name}_toc.html";  # document's table of contents
-    $docu_foot = "${docu_name}_foot.html"; # document's footnotes
+# 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'} = '1.52';          # predefine texi2html (the translator)
+$value{'texi2html'} = $THISVERSION;    # predefine texi2html (the translator)
 # _foo: internal to track @foo
 foreach ('_author', '_title', '_subtitle',
-        '_settitle', '_setfilename') {
+        '_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
@@ -421,7 +2436,7 @@ $html_num = 0;
 #
 # can I use ISO8879 characters? (HTML+)
 #
-if ($use_iso) {
+if ($T2H_USE_ISO) {
     $things_map{'bullet'} = "&bull;";
     $things_map{'copyright'} = "&copy;";
     $things_map{'dots'} = "&hellip;";
@@ -436,19 +2451,487 @@ if ($use_iso) {
 #
 $extensions = 'texi2html.ext'; # extensions in working directory
 if (-f $extensions) {
-    print "# reading extensions from $extensions\n" if $verbose;
+    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 $verbose;
+       print "# reading extensions from $extensions\n" if $T2H_VERBOSE;
        require($extensions);
     }
 }
 
-print "# reading from $docu\n" if $verbose;
+
+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;
+}
+
 
 #+++############################################################################
 #                                                                              #
@@ -458,25 +2941,34 @@ print "# reading from $docu\n" if $verbose;
 
 @lines = ();                           # whole document
 @toc_lines = ();                       # table of contents
-$toplevel = 0;                         # top level seen in hierarchy
+@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
-$split_num = 0;                                # split index
 $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
@@ -499,13 +2991,13 @@ if ($use_acc) {
        } else {
            $subst_code .= "s/\\\@\\$_";
        }
-       $subst_code .= "([aeiou])/&\${1}$accent_map{$_};/gi;\n";
+       $subst_code .= "([a-z])/&\${1}$accent_map{$_};/gi;\n";
     }
 }
 eval("sub simple_substitutions { $subst_code }");
 
 &init_input;
-while ($_ = &next_line) {
+INPUT_LINE: while ($_ = &next_line) {
     #
     # remove \input on the first lines only
     #
@@ -513,56 +3005,123 @@ while ($_ = &next_line) {
        next if /^\\input/;
        $first_line = 0;
     }
+    # non-@ substitutions cf. texinfmt.el
     #
     # parse texinfo tags
     #
     $tag = '';
     $end_tag = '';
-    if (/^\@end\s+(\w+)\b/) {
+    if (/^\s*\@end\s+(\w+)\b/) {
        $end_tag = $1;
-    } elsif (/^\@(\w+)\b/) {
+    } elsif (/^\s*\@(\w+)\b/) {
        $tag = $1;
     }
     #
-    # handle @ifhtml / @end ifhtml
+    # handle @html / @end html
     #
     if ($in_html) {
-       if ($end_tag eq 'ifhtml') {
+       if ($end_tag eq 'html') {
            $in_html = 0;
        } else {
            $tag2pro{$in_html} .= $_;
        }
        next;
-    } elsif ($tag eq 'ifhtml') {
+    } 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) {
-       next if $to_skip{$tag};
-       last if $tag eq 'bye';
+      $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' || $tag eq 'include' || $sec2level{$tag}) {
+       if ($tag eq 'node' || 
+           ($sec2level{$tag} && $tag !~ /unnumbered/ && $tag !~ /heading/))
+       {
            # no more in top
            $in_top = 0;
-       } else {
-           # skip it
-           next;
+           push(@lines, $TOPEND);
        }
     }
-    #
-    # try to remove inlined comments
-    # syntax from tex-mode.el comment-start-skip
-    #
-    s/((^|[^\@])(\@\@)*)\@c(omment)? .*/$1/;
-    # non-@ substitutions cf. texinfmt.el
     unless ($in_pre) {
        s/``/\"/g;
        s/''/\"/g;
@@ -574,12 +3133,33 @@ while ($_ = &next_line) {
     if ($tag) {
        # skip lines
        &skip_until($tag), next if $tag eq 'ignore';
-       if ($expandinfo) {
-           &skip_until($tag), next if $tag eq 'iftex';
-       } else {
-           &skip_until($tag), next if $tag eq 'ifinfo';
+       &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;
        }
-       &skip_until($tag), next if $tag eq 'tex';
        # handle special tables
        if ($tag =~ /^(|f|v|multi)table$/) {
            $table_type = $1;
@@ -588,35 +3168,37 @@ while ($_ = &next_line) {
        # 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;
-           warn "$ERROR Bad node line: $_" unless $_ =~ /^\@node\s$NODESRE$/o;
-           $_ = &protect_html($_); # if node contains '&' for instance
-           s/^\@node\s+//;
-           ($node) = split(/,/);
-           &normalise_node($node);
-           if ($split_node) {
-               &next_doc;
-               push(@lines, $SPLITTAG) if $split_num++;
-               push(@sections, $node);
-           }
-           next;
+           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 = $1;
-               unless (-e $file) {
-                   foreach $dir (@include_dirs) {
-                       $file = "$dir/$1";
-                       last if -e $file;
-                   }
-               }
-               if (-e $file) {
+               $file = LocateIncludeFile($1);
+               if ($file && -e $file) {
                    &open($file);
-                   print "# including $file\n" if $verbose;
+                   print "# including $file\n" if $T2H_VERBOSE;
                } else {
-                   warn "$ERROR Can't find $file, skipping";
+                   warn "$ERROR Can't find $1, skipping";
                }
            } else {
                warn "$ERROR Bad include line: $_";
@@ -639,45 +3221,110 @@ while ($_ = &next_line) {
            }
            next;
        } elsif ($tag eq 'menu') {
-           unless ($show_menu) {
+           unless ($T2H_SHOW_MENU) {
                &skip_until($tag);
                next;
            }
            &html_push_if($tag);
-           push(@lines, &html_debug("\n", __LINE__));
+           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("\n", __LINE__));
+           push(@lines, &html_debug('', __LINE__));
            $in_list++ if $format_map{$tag} eq 'UL' || $format_map{$tag} eq 'OL' ;
-           push(@lines, &debug("<$format_map{$tag}>\n", __LINE__));
+#          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') {
-           if (/^\@(|f|v|multi)table\s+\@(\w+)/) {
+         # 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") {
-                   push(@lines, &debug("<TABLE BORDER>\n", __LINE__));
+                   # 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("\n", __LINE__));
+               push(@lines, &html_debug('', __LINE__));
            } else {
                warn "$ERROR Bad table line: $_";
            }
            next;
-       } elsif ($tag eq 'synindex' || $tag eq 'syncodeindex') {
-           if (/^\@$tag\s+(\w)\w\s+(\w)\w\s*$/) {
-               eval("*${1}index = *${2}index");
-           } else {
-               warn "$ERROR Bad syn*index line: $_";
+       } 
+       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;
            }
-           next;
-       } elsif ($tag eq 'sp') {
+           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*$/) {
@@ -685,19 +3332,60 @@ while ($_ = &next_line) {
                $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 'defindex' || $tag eq 'defcodeindex') {
-           if (/^\@$tag\s+(\w\w)\s*$/) {
-               $valid_index{$1} = 1;
-           } else {
-               warn "$ERROR Bad defindex line: $_";
+       } elsif ($tag eq 'lowersections') {
+           local ($sec, $level);
+           while (($sec, $level) = each %sec2level) {
+               $sec2level{$sec} = $level + 1;
            }
            next;
-       } elsif (defined($def_map{$tag})) {
+       } 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};
@@ -707,7 +3395,7 @@ while ($_ = &next_line) {
        } elsif (defined($user_sub{$tag})) {
            s/^\@$tag\s+//;
            $sub = $user_sub{$tag};
-           print "# user $tag = $sub, arg: $_" if $debug & $DEBUG_USER;
+           print "# user $tag = $sub, arg: $_" if $T2H_DEBUG & $DEBUG_USER;
            if (defined(&$sub)) {
                chop($_);
                &$sub($_);
@@ -715,7 +3403,7 @@ while ($_ = &next_line) {
                warn "$ERROR Bad user sub for $tag: $sub\n";
            }
            next;
-       }
+         } 
        if (defined($def_map{$tag})) {
            s/^\@$tag\s+//;
            if ($tag =~ /x$/) {
@@ -742,9 +3430,9 @@ while ($_ = &next_line) {
            $type = shift(@args);
            $type =~ s/^\{(.*)\}$/$1/;
            print "# def ($tag): {$type} ", join(', ', @args), "\n"
-               if $debug & $DEBUG_DEF;
+               if $T2H_DEBUG & $DEBUG_DEF;
            $type .= ':'; # it's nicer like this
-           $name = shift(@args);
+           my $name = shift(@args);
            $name =~ s/^\{(.*)\}$/$1/;
            if ($is_extra) {
                $_ = &debug("<DT>", __LINE__);
@@ -769,13 +3457,17 @@ while ($_ = &next_line) {
            $_ .= &debug("\n<DD>", __LINE__);
            $name = &unprotect_html($name);
            if ($tag eq 'deffn' || $tag eq 'deftypefn') {
-               unshift(@input_spool, "\@findex $name\n");
+             EnterIndexEntry('f', $name, $docu_doc, $section, \@lines);
+#              unshift(@input_spool, "\@findex $name\n");
            } elsif ($tag eq 'defop') {
-               unshift(@input_spool, "\@findex $name on $ftype\n");
+             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') {
-               unshift(@input_spool, "\@vindex $name\n");
+             EnterIndexEntry('v', $name, $docu_doc, $section, \@lines);
+#              unshift(@input_spool, "\@vindex $name\n");
            } else {
-               unshift(@input_spool, "\@tindex $name\n");
+             EnterIndexEntry('t', $name, $docu_doc, $section, \@lines);
+#              unshift(@input_spool, "\@tindex $name\n");
            }
            $dont_html = 1;
        }
@@ -783,15 +3475,28 @@ while ($_ = &next_line) {
        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('LI', 'P');
+           &html_pop_if('P');
+           &html_pop_if('LI');
            &html_pop_if();
            push(@lines, &debug("</$format_map{$end_tag}>\n", __LINE__));
-           push(@lines, &html_debug("\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";
@@ -815,103 +3520,154 @@ while ($_ = &next_line) {
        } elsif ($end_tag eq 'menu') {
            &html_pop_if();
            push(@lines, $_); # must keep it for pass 2
-       }
+       } 
        next;
     }
-    #
-    # misc things
+    #############################################################
+    # 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/^\@center\s+//g;
     s/^\@exdent\s+//g;
     s/\@noindent\s+//g;
     s/\@refill\s+//g;
     # other substitutions
     &simple_substitutions;
-    s/\@value{($VARRE)}/$value{$1}/eg;
     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 (defined($sec2level{$tag}) && $sec2level{$tag} > 0) {
            if (/^\@$tag\s+(.+)$/) {
                $name = $1;
-               $name =~ s/\s+$//;
+               $name = &normalise_node($name);
                $level = $sec2level{$tag};
-               $name = &update_sec_num($tag, $level) . "  $name"
-                   if $number_sections && $tag !~ /^unnumbered/;
-               if ($tag =~ /heading$/) {
-                   push(@lines, &html_debug("\n", __LINE__));
-                   if ($html_element ne 'body') {
-                       # We are in a nice pickle here. We are trying to get a H? heading
-                       # even though we are not in the body level. So, we convert it to a
-                       # nice, bold, line by itself.
-                       $_ = &debug("\n\n<P><STRONG>$name</STRONG></P>\n\n", __LINE__);
-                   } else {
-                       $_ = &debug("<H$level>$name</H$level>\n", __LINE__);
-                       &html_push_if('body');
+               # 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;
                    }
-                   print "# heading, section $name, level $level\n"
-                       if $debug & $DEBUG_TOC;
-               } else {
-                   if ($split_chapter) {
-                       unless ($toplevel) {
-                           # first time we see a "section"
-                           unless ($level == 1) {
-                               warn "$ERROR The first section found is not of level 1: $_";
-                               warn "$ERROR I'll split on sections of level $level...\n";
-                           }
-                           $toplevel = $level;
-                       }
-                       if ($level == $toplevel) {
-                           &next_doc;
-                           push(@lines, $SPLITTAG) if $split_num++;
-                           push(@sections, $name);
-                       }
+                   if (defined($toplevel))
+                   {
+                     push @lines, ($level==$toplevel ? $CHAPTEREND : $SECTIONEND);
                    }
-                   $sec_num++;
-                   $docid = "SEC$sec_num";
-                   $tocid = "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) {
-                       if ($node2sec{$node}) {
-                           warn "$ERROR Duplicate node found: $node\n";
-                       } else {
-                           $node2sec{$node} = $name;
-                           $node2href{$node} = "$docu_doc#$docid";
-                           print "# node $node, section $name, level $level\n"
-                               if $debug & $DEBUG_TOC;
-                       }
-                       $node = '';
-                   } else {
-                       print "# no node, section $name, level $level\n"
-                           if $debug & $DEBUG_TOC;
+                   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");
+                     $curlevel++;
+                     push(@toc_lines, "<UL>\n");
                    }
                    while ($level < $curlevel) {
-                       $curlevel--;
-                       push(@toc_lines, "</UL>\n");
+                     $curlevel--;
+                     push(@toc_lines, "</UL>\n");
                    }
-                   $_ = "<LI>" . &anchor($tocid, "$docu_doc#$docid", $name, 1);
-                   push(@toc_lines, &substitute_style($_));
-                   # update DOC
-                   push(@lines, &html_debug("\n", __LINE__));
-                   &html_reset;
-                   $_ =  "<H$level>".&anchor($docid, "$docu_toc#$tocid", $name)."</H$level>\n";
-                   $_ = &debug($_, __LINE__);
-                   push(@lines, &html_debug("\n", __LINE__));
+                   $_ = &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+/, $_)) {
@@ -923,59 +3679,18 @@ while ($_ = &next_line) {
            }
        } else {
            # track variables
-           $value{$1} = $2, next if /^\@set\s+($VARRE)\s+(.*)$/o;
+           $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{'_setfilename'}   = $1, next if /^\@setfilename\s+(.*)$/;
-           $value{'_settitle'}      = $1, next if /^\@settitle\s+(.*)$/;
-           $value{'_author'}   .= "$1\n", next if /^\@author\s+(.*)$/;
-           $value{'_subtitle'} .= "$1\n", next if /^\@subtitle\s+(.*)$/;
-           $value{'_title'}    .= "$1\n", next if /^\@title\s+(.*)$/;
-           # index
-           if (/^\@(..?)index\s+/) {
-               unless ($valid_index{$1}) {
-                   warn "$ERROR Undefined index command: $_";
-                   next;
-               }
-               $id = 'IDX' . ++$idx_num;
-               $index = $1 . 'index';
-               $what = &substitute_style($');
-               $what =~ s/\s+$//;
-               print "# found $index for '$what' id $id\n"
-                   if $debug & $DEBUG_INDEX;
-               eval(<<EOC);
-               if (defined(\$$index\{\$what\})) {
-                   \$$index\{\$what\} .= "$;$docu_doc#$id";
-               } else {
-                   \$$index\{\$what\} = "$docu_doc#$id";
-               }
-EOC
-               #
-               # dirty hack to see if I can put an invisible anchor...
-               #
-               if ($html_element eq 'P' ||
-                   $html_element eq 'LI' ||
-                   $html_element eq 'DT' ||
-                   $html_element eq 'DD' ||
-                   $html_element eq 'ADDRESS' ||
-                   $html_element eq 'B' ||
-                   $html_element eq 'BLOCKQUOTE' ||
-                   $html_element eq 'PRE' ||
-                   $html_element eq 'SAMP') {
-                    push(@lines, &anchor($id, '', $invisible_mark, !$in_pre));
-                } elsif ($html_element eq 'body') {
-                   push(@lines, &debug("<P>\n", __LINE__));
-                    push(@lines, &anchor($id, '', $invisible_mark, !$in_pre));
-                   &html_push('P');
-               } elsif ($html_element eq 'DL' ||
-                        $html_element eq 'UL' ||
-                        $html_element eq 'OL' ) {
-                   $deferred_ref .= &anchor($id, '', $invisible_mark, !$in_pre) . " ";
-               }
-               next;
-           }
+           $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 (/^\@itemx?\s+/) {
+           if (/^\s*\@itemx?\s+/) {
                $what = $';
                $what =~ s/\s+$//;
                if ($in_bibliography && $use_bibliography) {
@@ -983,17 +3698,21 @@ EOC
                        $id = 'BIB' . ++$bib_num;
                        $bib2href{$what} = "$docu_doc#$id";
                        print "# found bibliography for '$what' id $id\n"
-                           if $debug & $DEBUG_BIB;
-                       $what = &anchor($id, '', $what);
+                           if $T2H_DEBUG & $DEBUG_BIB;
+                       $what = &t2h_anchor($id, '', $what);
                    }
-               } elsif ($in_glossary && $use_glossary) {
+               } 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 $debug & $DEBUG_GLOSS;
-                   $what = &anchor($id, '', $what);
+                       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') {
@@ -1018,7 +3737,7 @@ EOC
                    push(@lines, &debug("<LI>$what\n", __LINE__));
                    &html_push('LI') unless $html_element eq 'LI';
                }
-               push(@lines, &html_debug("\n", __LINE__));
+               push(@lines, &html_debug('', __LINE__));
                if ($deferred_ref) {
                    push(@lines, &debug("$deferred_ref\n", __LINE__));
                    $deferred_ref = '';
@@ -1031,20 +3750,25 @@ EOC
        }
     }
     # paragraph separator
-    if ($_ eq "\n") {
+    if ($_ eq "\n" && ! $in_pre) {
        next if $#lines >= 0 && $lines[$#lines] eq "\n";
        if ($html_element eq 'P') {
-           push(@lines, "\n");
-           $_ = &debug("</P>\n", __LINE__);
-           &html_pop;
+           push (@lines, &debug("</P><P>\n", __LINE__));
        }
-    } elsif ($html_element eq 'body' || $html_element eq 'BLOCKQUOTE') {
-       push(@lines, "<P>\n");
-       &html_push('P');
-       $_ = &debug($_, __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, $_);
+    push(@lines, $_) unless $in_titlepage;
+    push(@lines, &debug("</center>\n", __LINE__))  if ($tag eq 'center');
 }
 
 # finish TOC
@@ -1054,7 +3778,327 @@ while ($level < $curlevel) {
     push(@toc_lines, "</UL>\n");
 }
 
-print "# end of pass 1\n" if $verbose;
+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);
+  }
+}
+
 
 #+++############################################################################
 #                                                                              #
@@ -1078,86 +4122,86 @@ while (@lines) {
     #
     # menu
     #
-    $in_menu = 1, push(@lines2, &debug("<UL>\n", __LINE__)), next if /^\@menu\b/;
-    $in_menu = 0, push(@lines2, &debug("</UL>\n", __LINE__)), next if /^\@end\s+menu\b/;
-    if ($in_menu) {
-       if (/^\*\s+($NODERE)::/o) {
-           $descr = $';
-           chop($descr);
-           &menu_entry($1, $1, $descr);
-       } elsif (/^\*\s+(.+):\s+([^\t,\.\n]+)[\t,\.\n]/) {
-           $descr = $';
-           chop($descr);
-           &menu_entry($1, $2, $descr);
-       } elsif (/^\*/) {
-           warn "$ERROR Bad menu line: $_";
-       } else { # description continued?
-           push(@lines2, $_);
-       }
-       next;
+    if (/^\@menu\b/)
+    {
+      $in_menu = 1;
+      $in_menu_listing = 1;
+      push(@lines2, &debug("<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> \n", __LINE__));
+      next;
     }
-    #
-    # printindex
-    #
-    if (/^\@printindex\s+(\w\w)\b/) {
-       local($index, *ary, @keys, $key, $letter, $last_letter, @refs);
-       if ($predefined_index{$1}) {
-           $index = $predefined_index{$1} . 'index';
-       } else {
-           $index = $1 . 'index';
-       }
-       eval("*ary = *$index");
-       @keys = keys(%ary);
-       foreach $key (@keys) {
-           $_ = $key;
-           1 while s/<(\w+)>\`(.*)\'<\/\1>/$2/; # remove HTML tags with quotes
-           1 while s/<(\w+)>(.*)<\/\1>/$2/;     # remove HTML tags
-           $_ = &unprotect_html($_);
-           &unprotect_texi;
-           tr/A-Z/a-z/; # lowercase
-           $key2alpha{$key} = $_;
-           print "# index $key sorted as $_\n"
-               if $key ne $_ && $debug & $DEBUG_INDEX;
+    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__));
        }
-       push(@lines2, "Jump to:\n");
-       $last_letter = undef;
-       foreach $key (sort byalpha @keys) {
-           $letter = substr($key2alpha{$key}, 0, 1);
-           $letter = substr($key2alpha{$key}, 0, 2) if $letter eq $;;
-           if (!defined($last_letter) || $letter ne $last_letter) {
-               push(@lines2, "-\n") if defined($last_letter);
-               push(@lines2, "<A HREF=\"#$index\_$letter\">" . &protect_html($letter) . "</A>\n");
-               $last_letter = $letter;
-           }
+       # 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__));
        }
-       push(@lines2, "<P>\n");
-       $last_letter = undef;
-       foreach $key (sort byalpha @keys) {
-           $letter = substr($key2alpha{$key}, 0, 1);
-           $letter = substr($key2alpha{$key}, 0, 2) if $letter eq $;;
-           if (!defined($last_letter) || $letter ne $last_letter) {
-               push(@lines2, "</DIR>\n") if defined($last_letter);
-               push(@lines2, "<H2><A NAME=\"$index\_$letter\">" . &protect_html($letter) . "</A></H2>\n");
-               push(@lines2, "<DIR>\n");
-               $last_letter = $letter;
-           }
-           @refs = ();
-           foreach (split(/$;/, $ary{$key})) {
-               push(@refs, &anchor('', $_, $key, 0));
-           }
-           push(@lines2, "<LI>" . join(", ", @refs) . "\n");
+       # look for continuation
+       while ($lines[0] =~ /^\s+\w+/)
+       {
+         $descr .= shift(@lines);
        }
-       push(@lines2, "</DIR>\n") if defined($last_letter);
-       next;
+       &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{($XREFRE)(}?)/o) {
+    while (/\@(x|px|info|)ref{([^{}]+)(}?)/) {
        # note: Texinfo may accept other characters
        ($type, $nodes, $full) = ($1, $2, $3);
        ($before, $after) = ($`, $');
@@ -1167,11 +4211,11 @@ while (@lines) {
            next; # while xref
        }
        if ($type eq 'x') {
-           $type = 'See ';
+           $type = "$T2H_WORDS->{$T2H_LANG}->{'See'} ";
        } elsif ($type eq 'px') {
-           $type = 'see ';
+           $type = "$T2H_WORDS->{$T2H_LANG}->{'see'} ";
        } elsif ($type eq 'info') {
-           $type = 'See Info';
+           $type = "$T2H_WORDS->{$T2H_LANG}->{'See'} Info";
        } else {
            $type = '';
        }
@@ -1201,24 +4245,50 @@ while (@lines) {
        $nodes =~ s/\s+/ /g; # remove useless spaces
        @args = split(/\s*,\s*/, $nodes);
        $node = $args[0]; # the node is always the first arg
-       &normalise_node($node);
-       $sec = $node2sec{$node};
+       $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}section `$sec' in \@cite{$man}$after";
+           $_ = "${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 = $node2href{$node};
-           $_ = "${before}${type}section " . &anchor('', $href, $sec) . $after;
-       } else {
+       } 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
     #
@@ -1229,7 +4299,7 @@ while (@lines) {
                ($pre, $what, $post) = ($`, $&, $');
                $href = $bib2href{$what};
                if (defined($href) && $post !~ /^[^<]*<\/A>/) {
-                   $done .= $pre . &anchor('', $href, $what);
+                   $done .= $pre . &t2h_anchor('', $href, $what);
                } else {
                    $done .= "$pre$what";
                }
@@ -1237,7 +4307,7 @@ while (@lines) {
            }
            $_ = $done . $_;
        }
-       if ($use_glossary) {
+       if ($T2H_USE_GLOSSARY) {
            $done = '';
            while (/\b\w+\b/) {
                ($pre, $what, $post) = ($`, $&, $');
@@ -1245,7 +4315,7 @@ while (@lines) {
                $entry =~ tr/A-Z/a-z/ unless $entry =~ /^[A-Z\s]+$/;
                $href = $gloss2href{$entry};
                if (defined($href) && $post !~ /^[^<]*<\/A>/) {
-                   $done .= $pre . &anchor('', $href, $what);
+                   $done .= $pre . &t2h_anchor('', $href, $what);
                } else {
                    $done .= "$pre$what";
                }
@@ -1257,7 +4327,7 @@ while (@lines) {
     # otherwise
     push(@lines2, $_);
 }
-print "# end of pass 2\n" if $verbose;
+print "# end of pass 2\n" if $T2H_VERBOSE;
 
 #
 # split style substitutions
@@ -1307,8 +4377,8 @@ while (@lines2) {
     # otherwise
     push(@lines3, $_);
 }
-print "# end of pass 3\n" if $verbose;
-
+print "# end of pass 3\n" if $T2H_VERBOSE;
+       
 #+++############################################################################
 #                                                                              #
 # Pass 4: foot notes, final cleanup                                            #
@@ -1318,7 +4388,7 @@ print "# end of pass 3\n" if $verbose;
 @foot_lines = ();                      # footnotes
 @doc_lines = ();                       # final document
 $end_of_para = 0;                      # true if last line is <P>
-
+       
 while (@lines3) {
     $_ = shift(@lines3);
     #
@@ -1356,10 +4426,10 @@ while (@lines3) {
            $docid  = "DOCF$foot_num";
            $footid = "FOOT$foot_num";
            $foot = "($foot_num)";
-           push(@foot_lines, "<H3>" . &anchor($footid, "$d#$docid", $foot) . "</H3>\n");
+           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 . &anchor($docid, "$docu_foot#$footid", $foot) . $after;
+           $_ = $before . &t2h_anchor($docid, "$docu_foot#$footid", $foot) . $after;
        }
     }
     #
@@ -1373,7 +4443,8 @@ while (@lines3) {
     # otherwise
     push(@doc_lines, $_);
 }
-print "# end of pass 4\n" if $verbose;
+       
+print "# end of pass 4\n" if $T2H_VERBOSE;
 
 #+++############################################################################
 #                                                                              #
@@ -1381,126 +4452,377 @@ print "# end of pass 4\n" if $verbose;
 #                                                                              #
 #---############################################################################
 
-$header = <<EOT;
-<!-- This HTML file has been created by $THISPROG
-     from $docu on $TODAY -->
-EOT
+$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} = $_;
+}
 
-$full_title = $value{'_title'} || $value{'_settitle'} || "Untitled Document";
-$title = $value{'_settitle'} || $full_title;
-$_ = &substitute_style($full_title);
-&unprotect_texi;
-s/\n$//; # rmv last \n (if any)
-$full_title = "<H1>" . join("</H1>\n<H1>", split(/\n/, $_)) . "</H1>\n";
+# 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
 #
-# print ToC
-#
-if (!$monolithic && @toc_lines) {
-    if (open(FILE, "> $docu_toc")) {
-       print "# creating $docu_toc...\n" if $verbose;
-       &print_toplevel_header("$title - Table of Contents");
-       &print_ruler;
-       &print(*toc_lines, FILE);
-       &print_toplevel_footer;
-       close(FILE);
-    } else {
-       warn "$ERROR Can't write to $docu_toc: $!\n";
-    }
+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
 #
-# print footnotes
+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
 #
-if (!$monolithic && @foot_lines) {
-    if (open(FILE, "> $docu_foot")) {
-       print "# creating $docu_foot...\n" if $verbose;
-       &print_toplevel_header("$title - Footnotes");
-       &print_ruler;
-        &print(*foot_lines, FILE);
-       &print_toplevel_footer;
-       close(FILE);
-    } else {
-       warn "$ERROR Can't write to $docu_foot: $!\n";
-    }
-}
-
-#
-# print document
-#
-if ($split_chapter || $split_node) { # split
-    $doc_num = 0;
-    $last_num = scalar(@sections);
-    $first_doc = &doc_name(1);
-    $last_doc = &doc_name($last_num);
-    while (@sections) {
-       $section = shift(@sections);
-       &next_doc;
-       if (open(FILE, "> $docu_doc")) {
-           print "# creating $docu_doc...\n" if $verbose;
-           &print_header("$title - $section");
-           $prev_doc = ($doc_num == 1 ? undef : &doc_name($doc_num - 1));
-           $next_doc = ($doc_num == $last_num ? undef : &doc_name($doc_num + 1));
-           $navigation = "Go to the ";
-           $navigation .= ($prev_doc ? &anchor('', $first_doc, "first") : "first");
-           $navigation .= ", ";
-           $navigation .= ($prev_doc ? &anchor('', $prev_doc, "previous") : "previous");
-           $navigation .= ", ";
-           $navigation .= ($next_doc ? &anchor('', $next_doc, "next") : "next");
-           $navigation .= ", ";
-           $navigation .= ($next_doc ? &anchor('', $last_doc, "last") : "last");
-           $navigation .= " section, " . &anchor('', $docu_toc, "table of contents") . ".\n";
-           print FILE $navigation;
-           &print_ruler;
-           # find corresponding lines
-            @tmp_lines = ();
-            while (@doc_lines) {
-               $_ = shift(@doc_lines);
-               last if ($_ eq $SPLITTAG);
-               push(@tmp_lines, $_);
-           }
-            &print(*tmp_lines, FILE);
-           &print_ruler;
-           print FILE $navigation;
-           &print_footer;
-           close(FILE);
-       } else {
-           warn "$ERROR Can't write to $docu_doc: $!\n";
-       }
+$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;
     }
-} else { # not split
-    if (open(FILE, "> $docu_doc")) {
-       print "# creating $docu_doc...\n" if $verbose;
-       if ($monolithic || !@toc_lines) {
-           &print_toplevel_header($title);
-       } else {
-           &print_header($title);
-           print FILE $full_title;
-       }
-       if ($monolithic && @toc_lines) {
-           &print_ruler;
-           print FILE "<H1>Table of Contents</H1>\n";
-           &print(*toc_lines, FILE);
-       }
-       &print_ruler;
-        &print(*doc_lines, FILE);
-       if ($monolithic && @foot_lines) {
-           &print_ruler;
-           print FILE "<H1>Footnotes</H1>\n";
-           &print(*foot_lines, FILE);
-       }
-       if ($monolithic || !@toc_lines) {
-           &print_toplevel_footer;
-       } else {
-           &print_footer;
-       }
-       close(FILE);
-    } else {
-       warn "$ERROR Can't write to $docu_doc: $!\n";
+  }
+  $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;
 }
 
-print "# that's all folks\n" if $verbose;
+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);
 
 #+++############################################################################
 #                                                                              #
@@ -1508,27 +4830,55 @@ print "# that's all folks\n" if $verbose;
 #                                                                              #
 #---############################################################################
 
+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/) {
+    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);
        }
-       return(join('.', @appendix_sec_num[0..$level]));
+       $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);
+       if (defined(@normal_sec_num)) 
+       {
+         &incr_sec_num($level, @normal_sec_num);
+       } 
+       else 
+       {
+         @normal_sec_num = (1, 0, 0, 0);
        }
-       return(join('.', @normal_sec_num[0..$level]));
+       $ret = join('.', @normal_sec_num[0..$level]);
     }
+    
+    $ret .= "." if $level == 0;
+    return $ret;
 }
 
 sub incr_sec_num {
@@ -1540,13 +4890,78 @@ sub incr_sec_num {
     }
 }
 
+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 $verbose;
+           $context{$&} .= "> $_" if $T2H_VERBOSE;
            $_ = "$`XX$'";
            redo;
        }
@@ -1554,10 +4969,10 @@ sub check {
            ($before, $match, $after) = ($`, $&, $');
            if ($before =~ /\b[\w-]+$/ && $after =~ /^[\w-.]*\b/) { # e-mail address
                $seen{'e-mail address'}++;
-               $context{'e-mail address'} .= "> $_" if $verbose;
+               $context{'e-mail address'} .= "> $_" if $T2H_VERBOSE;
            } else {
                $seen{$match}++;
-               $context{$match} .= "> $_" if $verbose;
+               $context{$match} .= "> $_" if $T2H_VERBOSE;
            }
            $match =~ s/^\@/X/;
            $_ = "$before$match$after";
@@ -1566,7 +4981,7 @@ sub check {
     }
     
     foreach (sort(keys(%seen))) {
-       if ($verbose) {
+       if ($T2H_VERBOSE) {
            print "$_\n";
            print $context{$_};
        } else {
@@ -1621,6 +5036,19 @@ sub skip_until {
     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
 #
@@ -1664,8 +5092,11 @@ sub html_pop_if {
 
 sub html_debug {
     local($what, $line) = @_;
-    return("<!-- $line @html_stack, $html_element -->$what")
-       if $debug & $DEBUG_HTML;
+    if ($T2H_DEBUG & $DEBUG_HTML)
+    {
+     $what = "\n" unless $what;
+     return("<!-- $line @html_stack, $html_element -->$what")
+    }  
     return($what);
 }
 
@@ -1673,29 +5104,80 @@ sub html_debug {
 sub debug {
     local($what, $line) = @_;
     return("<!-- $line -->$what")
-       if $debug & $DEBUG_HTML;
+       if $T2H_DEBUG & $DEBUG_HTML;
     return($what);
 }
 
+sub SimpleTexi2Html
+{
+  local $_ = $_[0];
+  &protect_texi;
+  &protect_html;
+  $_ = substitute_style($_);
+  $_[0]  = $_;
+}
+
 sub normalise_node {
-    $_[0] =~ s/\s+/ /g;
-    $_[0] =~ s/ $//;
-    $_[0] =~ s/^ //;
+  local $_ = $_[0];
+  s/\s+/ /g;
+  s/ $//;
+  s/^ //;
+  &protect_texi;
+  &protect_html;
+  $_ = substitute_style($_);
+  $_[0]  = $_;
 }
 
-sub menu_entry {
-    local($entry, $node, $descr) = @_;
-    local($href);
+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);
+    }
 
-    &normalise_node($node);
-    $href = $node2href{$node};
-    if ($href) {
-       $descr =~ s/^\s+//;
-       $descr = ": $descr" if $descr;
-       push(@lines2, "<LI>" . &anchor('', $href, $entry) . "$descr\n");
-    } else {
-       warn "$ERROR Undefined 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]" }
@@ -1704,19 +5186,51 @@ sub do_email {
     local($addr, $text) = split(/,\s*/, $_[0]);
 
     $text = $addr unless $text;
-    &anchor('', "mailto:$addr", $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_sc { "\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) = split(/,\s*/, $_[0]);
+    local($url, $text, $only_text) = split(/,\s*/, $_[0]);
 
+    $text = $only_text if $only_text;
     $text = $url unless $text;
-    &anchor('', $url, $text);
+    &t2h_anchor('', $url, $text);
+}
+
+sub do_url { &t2h_anchor('', $_[0], $_[0]) }
+
+sub do_acronym
+{
+  return '<FONT SIZE="-1">' . $_[0] . '</FONT>';
 }
 
-sub do_url { &anchor('', $_[0], $_[0]) }
+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) = @_;
@@ -1730,7 +5244,7 @@ sub apply_style {
        }
        if ($style =~ /^\&/) { # custom
            $style = $';
-           $text = &$style($text);
+           $text = &$style($text, $texi_style);
        } elsif ($style) { # good style
            $text = "<$style>$text</$style>";
        } else { # no style
@@ -1744,19 +5258,27 @@ sub apply_style {
 # remove Texinfo styles
 sub remove_style {
     local($_) = @_;
-    s/\@\w+{([^\{\}]+)}/$1/g;
+    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+){([^\{\}]+)}/) {
+       while (/\@(\w+){([^\{\}]+)}/ || /\@(,){([^\{\}]+)}/) {
            $text = &apply_style($1, $2);
            if ($text) {
                $_ = "$`$text$'";
@@ -1771,13 +5293,19 @@ sub substitute_style {
     return($_);
 }
 
-sub anchor {
-    local($name, $href, $text, $newline) = @_;
+sub t2h_anchor {
+    local($name, $href, $text, $newline, $extra_attribs) = @_;
     local($result);
 
     $result = "<A";
     $result .= " NAME=\"$name\"" if $name;
-    $result .= " HREF=\"$href\"" if $href;
+    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);
@@ -1786,104 +5314,46 @@ sub anchor {
 sub pretty_date {
     local(@MoY, $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst);
 
-    @MoY = ('January', 'Febuary', 'March', 'April', 'May', 'June',
+    @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;
-    return("$mday $MoY[$mon] $year");
+    # obachman: Let's do it as the Americans do
+    return("$MoY[$mon], $mday  $year");
 }
 
-sub doc_name {
+sub doc_href {
     local($num) = @_;
 
-    return("${docu_name}_$num.html");
+    return("${docu_name}_$num.$docu_ext");
+}
+
+sub sec_href
+{
+  return $node2href{$sec2node{$_[0]}};
 }
 
 sub next_doc {
-    $docu_doc = &doc_name(++$doc_num);
+    $docu_doc = &doc_href(++$doc_num);
 }
 
-sub print {
-    local(*lines, $fh) = @_;
+sub t2h_print_lines {
+    my ($fh, $lines) = @_;
     local($_);
-
-    while (@lines) {
-       $_ = shift(@lines);
+    $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*/);
     }
-}
-
-sub print_ruler {
-    print FILE "<P><HR><P>\n";
-}
-
-sub print_header {
-    local($_);
-
-    # clean the title
-    $_ = &remove_style($_[0]);
-    &unprotect_texi;
-    # print the header
-    if ($doctype eq 'html2') {
-       print FILE $html2_doctype;
-    } elsif ($doctype) {
-       print FILE $doctype;
-    }
-    print FILE <<EOT;
-<HTML>
-<HEAD>
-$header
-<TITLE>$_</TITLE>
-</HEAD>
-<BODY>
-EOT
-}
-
-sub print_toplevel_header {
-    local($_);
-
-    &print_header; # pass given arg...
-    print FILE $full_title;
-    if ($value{'_subtitle'}) {
-       $value{'_subtitle'} =~ s/\n+$//;
-       foreach (split(/\n/, $value{'_subtitle'})) {
-           $_ = &substitute_style($_);
-           &unprotect_texi;
-           print FILE "<H2>$_</H2>\n";
-       }
-    }
-    if ($value{'_author'}) {
-       $value{'_author'} =~ s/\n+$//;
-       foreach (split(/\n/, $value{'_author'})) {
-           $_ = &substitute_style($_);
-           &unprotect_texi;
-           s/[\w.-]+\@[\w.-]+/<A HREF="mailto:$&">$&<\/A>/g;
-           print FILE "<ADDRESS>$_</ADDRESS>\n";
-       }
-    }
-    print FILE "<P>\n";
-}
-
-sub print_footer {
-    print FILE <<EOT;
-</BODY>
-</HTML>
-EOT
-}
-
-sub print_toplevel_footer {
-    &print_ruler;
-    print FILE <<EOT;
-This document was generated on $TODAY using the
-<A HREF=\"$HOMEPAGE\">texi2html</A>
-translator version 1.52.</P>
-EOT
-    &print_footer;
+    return $cnt;
 }
 
 sub protect_texi {
@@ -1901,6 +5371,13 @@ sub protect_html {
     $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 [^&]+>
@@ -1916,6 +5393,13 @@ sub unprotect_texi {
     s/$;4/\'/go;
 }
 
+sub Unprotect_texi 
+{
+  local $_ = shift;
+  &unprotect_texi;
+  return($_);
+}
+
 sub unprotect_html {
     local($what) = @_;
     $what =~ s/\&\#38;/\&/g;
@@ -1924,8 +5408,12 @@ sub unprotect_html {
     return($what);
 }
 
-sub byalpha {
-    $key2alpha{$a} cmp $key2alpha{$b};
+sub t2h_print_label
+{
+    my $fh = shift;
+    my $href = shift || $T2H_HREF{This};
+    $href =~ s/.*#(.*)$/$1/;
+    print $fh qq{<A NAME="$href"></A>\n};
 }
 
 ##############################################################################
@@ -1938,144 +5426,4 @@ sub byalpha {
 .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 ############
-.TH TEXI2HTML 1 "01/05/98"
-.AT 3
-.SH NAME
-texi2html \- a Texinfo to HTML converter
-.SH SYNOPSIS
-.B texi2html [options] file
-.PP
-.B texi2html -check [-verbose] files
-.SH DESCRIPTION
-.I Texi2html
-converts the given Texinfo file to a set of HTML files. It tries to handle
-most of the Texinfo commands. It creates hypertext links for cross-references,
-footnotes...
-.PP
-It also tries to add links from a reference to its corresponding entry in the
-bibliography (if any). It may also handle a glossary (see the
-.B \-glossary
-option).
-.PP
-.I Texi2html
-creates several files depending on the contents of the Texinfo file and on
-the chosen options (see FILES).
-.PP
-The HTML files created by
-.I texi2html
-are closer to TeX than to Info, that's why
-.I texi2html
-converts @iftex sections and not @ifinfo ones by default. You can reverse
-this with the \-expandinfo option.
-.SH OPTIONS
-.TP 12
-.B \-check
-Check the given file and give the list of all things that may be Texinfo commands.
-This may be used to check the output of
-.I texi2html
-to find the Texinfo commands that have been left in the HTML file.
-.TP
-.B \-expandinfo
-Expand @ifinfo sections, not @iftex ones.
-.TP
-.B \-glossary
-Use the section named 'Glossary' to build a list of terms and put links in the HTML
-document from each term toward its definition.
-.TP
-.B \-invisible \fIname\fP
-Use \fIname\fP 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.
-.TP
-.B \-I \fIdir\fP
-Look also in \fIdir\fP to find included files.
-.TP
-.B \-menu
-Show the Texinfo menus; by default they are ignored.
-.TP
-.B \-monolithic
-Output only one file, including the table of contents and footnotes.
-.TP
-.B \-number
-Number the sections.
-.TP
-.B \-split_chapter
-Split the output into several HTML files (one per main section:
-chapter, appendix...).
-.TP
-.B \-split_node
-Split the output into several HTML files (one per node).
-.TP
-.B \-usage
-Print usage instructions, listing the current available command-line options.
-.TP
-.B \-verbose
-Give a verbose output. Can be used with the
-.B \-check
-option.
-.PP
-.SH FILES
-By default
-.I texi2html
-creates the following files (foo being the name of the Texinfo file):
-.TP 16
-.B foo_toc.html
-The table of contents.
-.TP
-.B foo.html
-The document's contents.
-.TP
-.B foo_foot.html
-The footnotes (if any).
-.PP
-When used with the
-.B \-split
-option, it creates several files (one per chapter or node), named
-.B foo_n.html
-(n being the indice of the chapter or node), instead of the single
-.B foo.html
-file.
-.PP
-When used with the
-.B \-monolithic
-option, it creates only one file:
-.B foo.html
-.SH VARIABLES
-.I texi2html
-predefines the following variables: \fBhtml\fP, \fBtexi2html\fP.
-.SH ADDITIONAL COMMANDS
-.I texi2html
-implements the following non-Texinfo commands (maybe they are in Texinfo now...):
-.TP 16
-.B @ifhtml
-This indicates the start of an HTML section, this section will passed through
-without any modification.
-.TP
-.B @end ifhtml
-This indicates the end of an HTML section.
-.SH VERSION
-This is \fItexi2html\fP version 1.52, 01/05/98.
-.PP
-The latest version of \fItexi2html\fP can be found in WWW, cf. URL
-http://wwwinfo.cern.ch/dis/texi2html/
-.SH AUTHOR
-The main author is Lionel Cons, CERN IT/DIS/OSE, Lionel.Cons@cern.ch.
-Many other people around the net contributed to this program.
-.SH COPYRIGHT
-This program is the intellectual property of the European
-Laboratory for Particle Physics (known as CERN). No guarantee whatsoever is
-provided by CERN. No liability whatsoever is accepted for any loss or damage
-of any kind resulting from any defect or inaccuracy in this information or
-code.
-.PP
-CERN, 1211 Geneva 23, Switzerland
-.SH "SEE ALSO"
-GNU Texinfo Documentation Format,
-HyperText Markup Language (HTML),
-World Wide Web (WWW).
-.SH BUGS
-This program does not understand all Texinfo commands (yet).
-.PP
-TeX specific commands (normally enclosed in @iftex) will be
-passed unmodified.
-.ex
+.so /usr/local/man/man1/texi2html.1
index 1e90f8acce09d02273aae09f8d1b8b2c91f087b8..f1896649429015ff0b4649deaa74afc246970930 100644 (file)
@@ -26,6 +26,9 @@ VPATH = .:@srcdir@
 top_srcdir = @top_srcdir@
 BUILD_DIR = .
 
+# Support an alternate destination root directory for package building
+DESTDIR =
+
 DEFS = @DEFS@
 CC = @CC@
 CFLAGS = @CFLAGS@
index e9768487f006edf1962eb919d8137192b1d20fe5..578491a416c54440fcf6e5bc1de29763d12c417f 100644 (file)
 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 *));
+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. */
@@ -212,8 +212,8 @@ stripwhite (string)
 /*                                                                  */
 /* **************************************************************** */
 
-char *command_generator __P((const char *, int));
-char **fileman_completion __P((const char *, int, int));
+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
diff --git a/examples/readlinebuf.h b/examples/readlinebuf.h
new file mode 100644 (file)
index 0000000..a8af52c
--- /dev/null
@@ -0,0 +1,139 @@
+/*******************************************************************************
+ * $Revision: 1.2 $
+ * $Date: 2001/09/11 06:19:36 $
+ * $Author: vyzo $
+ *
+ * Contents: A streambuf which uses the GNU readline library for line I/O
+ * (c) 2001 by Dimitris Vyzovitis [vyzo@media.mit.edu]
+ *
+ * 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
+ *
+ ******************************************************************************/
+
+#ifndef _READLINEBUF_H_
+#define _READLINEBUF_H_
+
+#include <iostream>
+#include <cstring>
+#include <cassert>
+#include <cstdlib>
+#include <cstdio>
+
+#include <readline/readline.h>
+#include <readline/history.h>
+
+#if (defined __GNUC__) && (__GNUC__ < 3)
+#include <streambuf.h>
+#else
+#include <streambuf>
+using std::streamsize;
+using std::streambuf;
+#endif
+
+class readlinebuf : public streambuf {
+public:
+#if (defined __GNUC__) && (__GNUC__ < 3)
+       typedef char char_type;
+       typedef int int_type;
+       typedef streampos pos_type;
+       typedef streamoff off_type;
+#endif
+       static const int_type eof = EOF; // this is -1
+       static const int_type not_eof = 0;
+
+private:
+       const char* prompt_;
+       bool history_;
+       char* line_;
+       int low_;
+       int high_;
+
+protected:
+               
+       virtual int_type showmanyc() const { return high_ - low_; }
+               
+       virtual streamsize xsgetn( char_type* buf, streamsize n ) {
+               int rd = n > (high_ - low_)? (high_ - low_) : n;
+               memcpy( buf, line_, rd );
+               low_ += rd;
+                       
+               if ( rd < n ) {
+                       low_ = high_ = 0;
+                       free( line_ ); // free( NULL ) is a noop
+                       line_ = readline( prompt_ );
+                       if ( line_ ) {
+                               high_ = strlen( line_ );
+                               if ( history_ && high_ ) add_history( line_ );
+                               rd += xsgetn( buf + rd, n - rd );
+                       }
+               }
+                       
+               return rd; 
+       }
+               
+       virtual int_type underflow() {
+               if ( high_ == low_ ) {
+                       low_ = high_ = 0;
+                       free( line_ ); // free( NULL ) is a noop
+                       line_ = readline( prompt_ );
+                       if ( line_ ) {
+                               high_ = strlen( line_ );
+                               if ( history_ && high_ ) add_history( line_ );
+                       }
+               }
+                       
+               if ( low_ < high_ ) return line_[low_];
+               else return eof;
+       }
+               
+       virtual int_type uflow() {
+               int_type c = underflow();
+               if ( c != eof ) ++low_;
+               return c;
+       }
+               
+       virtual int_type pbackfail( int_type c = eof ) {
+               if ( low_ > 0 ) --low_;
+               else if ( c != eof ) {
+                       if ( high_ > 0 ) {
+                               char* nl = (char*)realloc( line_, high_ + 1 );
+                               if ( nl ) {
+                                       line_ = (char*)memcpy( nl + 1, line_, high_ );
+                                       high_ += 1;
+                                       line_[0] = char( c );
+                               } else return eof;
+                       } else {
+                               assert( !line_ );
+                               line_ = (char*)malloc( sizeof( char ) );
+                               *line_ = char( c );
+                               high_ = 1;
+                       }
+               } else return eof;
+
+               return not_eof;
+       }
+               
+public:
+       readlinebuf( const char* prompt = NULL, bool history = true ) 
+               : prompt_( prompt ), history_( history ),
+                 line_( NULL ), low_( 0 ), high_( 0 ) {
+               setbuf( 0, 0 );
+       }
+               
+               
+};
+
+#endif
index e09faf58dcdf291553c10343f01547bcab2c96a4..e4f28012bf11da708ff621c7dc517559ad82059e 100644 (file)
--- a/funmap.c
+++ b/funmap.c
@@ -46,7 +46,7 @@ typedef int QSFUNC (const void *, const void *);
 typedef int QSFUNC ();
 #endif
 
-extern int _rl_qsort_string_compare __P((char **, char **));
+extern int _rl_qsort_string_compare PARAMS((char **, char **));
 
 FUNMAP **funmap;
 static int funmap_size;
index 1c8a1d9d3e31b6c2ae3b19960ea20398b4f60153..04f6478e41ae2d6ef06206281556d37d3aefb91f 100644 (file)
@@ -56,7 +56,7 @@
 #define HISTORY_WORD_DELIMITERS                " \t\n;&()|<>"
 #define HISTORY_QUOTE_CHARACTERS       "\"'`"
 
-typedef int _hist_search_func_t __P((const char *, int));
+typedef int _hist_search_func_t PARAMS((const char *, int));
 
 static char error_pointer;
 
@@ -65,10 +65,10 @@ static char *subst_rhs;
 static int subst_lhs_len;
 static int subst_rhs_len;
 
-static char *get_history_word_specifier __P((char *, char *, int *));
-static char *history_find_word __P((char *, int));
+static char *get_history_word_specifier PARAMS((char *, char *, int *));
+static char *history_find_word PARAMS((char *, int));
 
-static char *quote_breaks __P((char *));
+static char *quote_breaks PARAMS((char *));
 
 /* Variables exported by this file. */
 /* The character that represents the start of a history expansion
@@ -212,7 +212,7 @@ get_history_event (string, caller_index, delimiting_quote)
       break;
 
   which = i - local_index;
-  temp = xmalloc (1 + which);
+  temp = (char *)xmalloc (1 + which);
   if (which)
     strncpy (temp, string + local_index, which);
   temp[which] = '\0';
@@ -314,7 +314,7 @@ quote_breaks (s)
        len += 2;
     }
 
-  r = ret = xmalloc (len);
+  r = ret = (char *)xmalloc (len);
   *r++ = '\'';
   for (p = s; p && *p; )
     {
@@ -379,7 +379,7 @@ hist_error(s, start, current, errtype)
       break;
     }
 
-  temp = xmalloc (ll + elen + 3);
+  temp = (char *)xmalloc (ll + elen + 3);
   strncpy (temp, s + start, ll);
   temp[ll] = ':';
   temp[ll + 1] = ' ';
@@ -415,7 +415,7 @@ get_subst_pattern (str, iptr, delimiter, is_rhs, lenptr)
 
   if (si > i || is_rhs)
     {
-      s = xmalloc (si - i + 1);
+      s = (char *)xmalloc (si - i + 1);
       for (j = 0, k = i; k < si; j++, k++)
        {
          /* Remove a backslash quoting the search string delimiter. */
@@ -442,13 +442,13 @@ postproc_subst_rhs ()
   char *new;
   int i, j, new_size;
 
-  new = xmalloc (new_size = subst_rhs_len + subst_lhs_len);
+  new = (char *)xmalloc (new_size = subst_rhs_len + subst_lhs_len);
   for (i = j = 0; i < subst_rhs_len; i++)
     {
       if (subst_rhs[i] == '&')
        {
          if (j + subst_lhs_len >= new_size)
-           new = xrealloc (new, (new_size = new_size * 2 + subst_lhs_len));
+           new = (char *)xrealloc (new, (new_size = new_size * 2 + subst_lhs_len));
          strcpy (new + j, subst_lhs);
          j += subst_lhs_len;
        }
@@ -458,7 +458,7 @@ postproc_subst_rhs ()
          if (subst_rhs[i] == '\\' && subst_rhs[i + 1] == '&')
            i++;
          if (j >= new_size)
-           new = xrealloc (new, new_size *= 2);
+           new = (char *)xrealloc (new, new_size *= 2);
          new[j++] = subst_rhs[i];
        }
     }
@@ -485,7 +485,7 @@ history_expand_internal (string, start, end_index_ptr, ret_string, current_line)
   char *event, *temp, *result, *tstr, *t, c, *word_spec;
   int result_len;
 
-  result = xmalloc (result_len = 128);
+  result = (char *)xmalloc (result_len = 128);
 
   i = start;
 
@@ -698,7 +698,7 @@ history_expand_internal (string, start, end_index_ptr, ret_string, current_line)
              if (STREQN (temp+si, subst_lhs, subst_lhs_len))
                {
                  int len = subst_rhs_len - subst_lhs_len + l_temp;
-                 new_event = xmalloc (1 + len);
+                 new_event = (char *)xmalloc (1 + len);
                  strncpy (new_event, temp, si);
                  strncpy (new_event + si, subst_rhs, subst_rhs_len);
                  strncpy (new_event + si + subst_rhs_len,
@@ -759,7 +759,7 @@ history_expand_internal (string, start, end_index_ptr, ret_string, current_line)
 
   n = strlen (temp);
   if (n >= result_len)
-    result = xrealloc (result, n + 2);
+    result = (char *)xrealloc (result, n + 2);
   strcpy (result, temp);
   free (temp);
 
@@ -790,7 +790,7 @@ history_expand_internal (string, start, end_index_ptr, ret_string, current_line)
              { \
                while (j >= result_len) \
                  result_len += 128; \
-               result = xrealloc (result, result_len); \
+               result = (char *)xrealloc (result, result_len); \
              } \
            strcpy (result + j - sl, s); \
          } \
@@ -800,7 +800,7 @@ history_expand_internal (string, start, end_index_ptr, ret_string, current_line)
        do \
          { \
            if (j >= result_len - 1) \
-             result = xrealloc (result, result_len += 64); \
+             result = (char *)xrealloc (result, result_len += 64); \
            result[j++] = c; \
            result[j] = '\0'; \
          } \
@@ -834,7 +834,7 @@ history_expand (hstring, output)
     }
     
   /* Prepare the buffer for printing error messages. */
-  result = xmalloc (result_len = 256);
+  result = (char *)xmalloc (result_len = 256);
   result[0] = '\0';
 
   only_printing = modified = 0;
@@ -851,7 +851,7 @@ history_expand (hstring, output)
      that is the substitution that we do. */
   if (hstring[0] == history_subst_char)
     {
-      string = xmalloc (l + 5);
+      string = (char *)xmalloc (l + 5);
 
       string[0] = string[1] = history_expansion_char;
       string[2] = ':';
@@ -960,7 +960,7 @@ history_expand (hstring, output)
                hist_string_extract_single_quoted (string, &i);
 
                slen = i - quote + 2;
-               temp = xmalloc (slen);
+               temp = (char *)xmalloc (slen);
                strncpy (temp, string + quote, slen);
                temp[slen - 1] = '\0';
                ADD_STRING (temp);
@@ -974,7 +974,7 @@ history_expand (hstring, output)
        case -2:                /* history_comment_char */
          if (i == 0 || member (string[i - 1], history_word_delimiters))
            {
-             temp = xmalloc (l - i + 1);
+             temp = (char *)xmalloc (l - i + 1);
              strcpy (temp, string + i);
              ADD_STRING (temp);
              free (temp);
@@ -1006,7 +1006,7 @@ history_expand (hstring, output)
            {
              if (result)
                {
-                 temp = xmalloc (1 + strlen (result));
+                 temp = (char *)xmalloc (1 + strlen (result));
                  strcpy (temp, result);
                  ADD_STRING (temp);
                  free (temp);
@@ -1140,7 +1140,14 @@ get_history_word_specifier (spec, from, caller_index)
          i++;
          last = '$';
        }
-      else if (!spec[i] || spec[i] == ':')  /* could be modifier separator */
+#if 0
+      else if (!spec[i] || spec[i] == ':')
+       /* check against `:' because there could be a modifier separator */
+#else
+      else
+       /* csh seems to allow anything to terminate the word spec here,
+          leaving it as an abbreviation. */
+#endif
        last = -1;              /* x- abbreviates x-$ omitting word `$' */
     }
 
@@ -1196,7 +1203,7 @@ history_arg_extract (first, last, string)
     {
       for (size = 0, i = first; i < last; i++)
        size += strlen (list[i]) + 1;
-      result = xmalloc (size + 1);
+      result = (char *)xmalloc (size + 1);
       result[0] = '\0';
 
       for (i = first, offset = 0; i < last; i++)
@@ -1329,7 +1336,7 @@ history_tokenize_internal (string, wind, indp)
       len = i - start;
       if (result_index + 2 >= size)
        result = (char **)xrealloc (result, ((size += 10) * sizeof (char *)));
-      result[result_index] = xmalloc (1 + len);
+      result[result_index] = (char *)xmalloc (1 + len);
       strncpy (result[result_index], string + start, len);
       result[result_index][len] = '\0';
       result[++result_index] = (char *)NULL;
index c0582de256bd258fca2eb0e6f52d9a14a311fb91..ab3c6c1dc79e4ec02d7afd0b51c0dc3c0ba57b43 100644 (file)
@@ -105,7 +105,7 @@ history_filename (filename)
   else
     home_len = strlen (home);
 
-  return_val = xmalloc (2 + home_len + 8); /* strlen(".history") == 8 */
+  return_val = (char *)xmalloc (2 + home_len + 8); /* strlen(".history") == 8 */
   strcpy (return_val, home);
   return_val[home_len] = '/';
 #if defined (__MSDOS__)
@@ -161,7 +161,7 @@ read_history_range (filename, from, to)
       goto error_and_exit;
     }
 
-  buffer = xmalloc (file_size + 1);
+  buffer = (char *)xmalloc (file_size + 1);
 
   chars_read = read (file, buffer, file_size);
   if (chars_read < 0)
@@ -276,7 +276,7 @@ history_truncate_file (fname, lines)
       goto truncate_exit;
     }
 
-  buffer = xmalloc (file_size + 1);
+  buffer = (char *)xmalloc (file_size + 1);
   chars_read = read (file, buffer, file_size);
   close (file);
 
@@ -367,7 +367,7 @@ history_do_write (filename, nelements, overwrite)
       buffer_size += 1 + strlen (the_history[i]->line);
 
     /* Allocate the buffer, and fill it. */
-    buffer = xmalloc (buffer_size);
+    buffer = (char *)xmalloc (buffer_size);
 
     for (j = 0, i = history_length - nelements; i < history_length; i++)
       {
index d59d8ce2755e6fb668ebacfe115599c2d99d7a88..e2d65ea504de46a9b04d7f99b21d325ce696f5ed 100644 (file)
--- a/history.c
+++ b/history.c
@@ -71,6 +71,9 @@ static HIST_ENTRY **the_history = (HIST_ENTRY **)NULL;
    history that we save. */
 static int history_stifled;
 
+/* The current number of slots allocated to the input_history. */
+static int history_size;
+
 /* If HISTORY_STIFLED is non-zero, then this is the maximum number of
    entries to remember. */
 int history_max_entries;
@@ -83,9 +86,6 @@ int history_offset;
 /* The number of strings currently stored in the history list. */
 int history_length;
 
-/* The current number of slots allocated to the input_history. */
-static int history_size;
-
 /* The logical `base' of the history array.  It defaults to 1. */
 int history_base = 1;
 
index 947902e54c0a98478dd023f7be584dbacff813ed..58b5de4655fb7a90b2b5f33fa4d28b75dd8bd61d 100644 (file)
--- a/history.h
+++ b/history.h
@@ -62,81 +62,81 @@ typedef struct _hist_state {
 
 /* Begin a session in which the history functions might be used.  This
    just initializes the interactive variables. */
-extern void using_history __P((void));
+extern void using_history PARAMS((void));
 
 /* Return the current HISTORY_STATE of the history. */
-extern HISTORY_STATE *history_get_history_state __P((void));
+extern HISTORY_STATE *history_get_history_state PARAMS((void));
 
 /* Set the state of the current history array to STATE. */
-extern void history_set_history_state __P((HISTORY_STATE *));
+extern void history_set_history_state PARAMS((HISTORY_STATE *));
 
 /* Manage the history list. */
 
 /* Place STRING at the end of the history list.
    The associated data field (if any) is set to NULL. */
-extern void add_history __P((const char *));
+extern void add_history PARAMS((const char *));
 
 /* A reasonably useless function, only here for completeness.  WHICH
    is the magic number that tells us which element to delete.  The
    elements are numbered from 0. */
-extern HIST_ENTRY *remove_history __P((int));
+extern HIST_ENTRY *remove_history PARAMS((int));
 
 /* Make the history entry at WHICH have LINE and DATA.  This returns
    the old entry so you can dispose of the data.  In the case of an
    invalid WHICH, a NULL pointer is returned. */
-extern HIST_ENTRY *replace_history_entry __P((int, const char *, histdata_t));
+extern HIST_ENTRY *replace_history_entry PARAMS((int, const char *, histdata_t));
 
 /* Clear the history list and start over. */
-extern void clear_history __P((void));
+extern void clear_history PARAMS((void));
 
 /* Stifle the history list, remembering only MAX number of entries. */
-extern void stifle_history __P((int));
+extern void stifle_history PARAMS((int));
 
 /* Stop stifling the history.  This returns the previous amount the
    history was stifled by.  The value is positive if the history was
    stifled, negative if it wasn't. */
-extern int unstifle_history __P((void));
+extern int unstifle_history PARAMS((void));
 
 /* Return 1 if the history is stifled, 0 if it is not. */
-extern int history_is_stifled __P((void));
+extern int history_is_stifled PARAMS((void));
 
 /* Information about the history list. */
 
 /* 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. */
-extern HIST_ENTRY **history_list __P((void));
+extern HIST_ENTRY **history_list PARAMS((void));
 
 /* Returns the number which says what history element we are now
    looking at.  */
-extern int where_history __P((void));
+extern int where_history PARAMS((void));
   
 /* Return the history entry at the current position, as determined by
    history_offset.  If there is no entry there, return a NULL pointer. */
-extern HIST_ENTRY *current_history __P((void));
+extern HIST_ENTRY *current_history PARAMS((void));
 
 /* Return the history entry which is logically at OFFSET in the history
    array.  OFFSET is relative to history_base. */
-extern HIST_ENTRY *history_get __P((int));
+extern HIST_ENTRY *history_get PARAMS((int));
 
 /* Return the number of bytes that the primary history entries are using.
    This just adds up the lengths of the_history->lines. */
-extern int history_total_bytes __P((void));
+extern int history_total_bytes PARAMS((void));
 
 /* Moving around the history list. */
 
 /* Set the position in the history list to POS. */
-extern int history_set_pos __P((int));
+extern int history_set_pos PARAMS((int));
 
 /* Back up history_offset to the previous history entry, and return
    a pointer to that entry.  If there is no previous entry, return
    a NULL pointer. */
-extern HIST_ENTRY *previous_history __P((void));
+extern HIST_ENTRY *previous_history PARAMS((void));
 
 /* Move history_offset forward to the next item in the input_history,
    and return the a pointer to that entry.  If there is no next entry,
    return a NULL pointer. */
-extern HIST_ENTRY *next_history __P((void));
+extern HIST_ENTRY *next_history PARAMS((void));
 
 /* Searching the history list. */
 
@@ -146,45 +146,45 @@ extern HIST_ENTRY *next_history __P((void));
    current_history () is the history entry, and the value of this function
    is the offset in the line of that history entry that the string was
    found in.  Otherwise, nothing is changed, and a -1 is returned. */
-extern int history_search __P((const char *, int));
+extern int history_search PARAMS((const char *, int));
 
 /* Search the history for STRING, starting at history_offset.
    The search is anchored: matching lines must begin with string.
    DIRECTION is as in history_search(). */
-extern int history_search_prefix __P((const char *, int));
+extern int history_search_prefix PARAMS((const char *, int));
 
 /* Search for STRING in the history list, starting at POS, an
    absolute index into the list.  DIR, if negative, says to search
    backwards from POS, else forwards.
    Returns the absolute index of the history element where STRING
    was found, or -1 otherwise. */
-extern int history_search_pos __P((const char *, int, int));
+extern int history_search_pos PARAMS((const char *, int, int));
 
 /* Managing the history file. */
 
 /* 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. */
-extern int read_history __P((const char *));
+extern int read_history PARAMS((const char *));
 
 /* Read a range of lines from FILENAME, adding them to the history list.
    Start reading at the FROM'th line and end at the TO'th.  If FROM
    is zero, start at the beginning.  If TO is less than FROM, read
    until the end of the file.  If FILENAME is NULL, then read from
    ~/.history.  Returns 0 if successful, or errno if not. */
-extern int read_history_range __P((const char *, int, int));
+extern int read_history_range PARAMS((const char *, int, int));
 
 /* Write the current history to FILENAME.  If FILENAME is NULL,
    then write the history list to ~/.history.  Values returned
    are as in read_history ().  */
-extern int write_history __P((const char *));
+extern int write_history PARAMS((const char *));
 
 /* Append NELEMENT entries to FILENAME.  The entries appended are from
    the end of the list minus NELEMENTs up to the end of the list. */
-extern int append_history __P((int, const char *));
+extern int append_history PARAMS((int, const char *));
 
 /* Truncate the history file, leaving only the last NLINES lines. */
-extern int history_truncate_file __P((const char *, int));
+extern int history_truncate_file PARAMS((const char *, int));
 
 /* History expansion. */
 
@@ -200,12 +200,12 @@ extern int history_truncate_file __P((const char *, int));
 
   If an error ocurred in expansion, then OUTPUT contains a descriptive
   error message. */
-extern int history_expand __P((char *, char **));
+extern int history_expand PARAMS((char *, char **));
 
 /* Extract a string segment consisting of the FIRST through LAST
    arguments present in STRING.  Arguments are broken up as in
    the shell. */
-extern char *history_arg_extract __P((int, int, const char *));
+extern char *history_arg_extract PARAMS((int, int, const char *));
 
 /* Return the text of the history event beginning at the current
    offset into STRING.  Pass STRING with *INDEX equal to the
@@ -213,11 +213,11 @@ extern char *history_arg_extract __P((int, int, const char *));
    DELIMITING_QUOTE is a character that is allowed to end the string
    specification for what to search for in addition to the normal
    characters `:', ` ', `\t', `\n', and sometimes `?'. */
-extern char *get_history_event __P((const char *, int *, int));
+extern char *get_history_event PARAMS((const char *, int *, int));
 
 /* Return an array of tokens, much as the shell might.  The tokens are
    parsed out of STRING. */
-extern char **history_tokenize __P((const char *));
+extern char **history_tokenize PARAMS((const char *));
 
 /* Exported history variables. */
 extern int history_base;
index ff4f3a131703a3bbf97f5ac08cbd3295054a2f4c..76303f4c3993aafcd90284181a0e0918de3eee5b 100644 (file)
@@ -51,6 +51,8 @@
    string. */
 char *history_search_delimiter_chars = (char *)NULL;
 
+static int history_search_internal PARAMS((const char *, int, int));
+
 /* Search the history for STRING, starting at history_offset.
    If DIRECTION < 0, then the search is through previous entries, else
    through subsequent.  If ANCHORED is non-zero, the string must
diff --git a/input.c b/input.c
index e5af52d5e5da88979ed267f47f994aa82198aebc..e34558bf8586aaa21f8dfedf78f8b3d53eaf1d49 100644 (file)
--- a/input.c
+++ b/input.c
@@ -84,6 +84,11 @@ rl_getc_func_t *rl_getc_function = rl_getc;
 
 static int _keyboard_input_timeout = 100000;           /* 0.1 seconds; it's in usec */
 
+static int ibuffer_space PARAMS((void));
+static int rl_get_char PARAMS((int *));
+static int rl_unget_char PARAMS((int));
+static void rl_gather_tyi PARAMS((void));
+
 /* **************************************************************** */
 /*                                                                 */
 /*                     Character Input Buffering                   */
@@ -245,7 +250,7 @@ _rl_input_available ()
   fd_set readfds, exceptfds;
   struct timeval timeout;
 #endif
-#if defined(FIONREAD)
+#if !defined (HAVE_SELECT) && defined(FIONREAD)
   int chars_avail;
 #endif
   int tty;
@@ -260,11 +265,13 @@ _rl_input_available ()
   timeout.tv_sec = 0;
   timeout.tv_usec = _keyboard_input_timeout;
   return (select (tty + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout) > 0);
-#endif
+#else
 
 #if defined (FIONREAD)
   if (ioctl (tty, FIONREAD, &chars_avail) == 0)
     return (chars_avail);
+#endif
+
 #endif
 
   return 0;
@@ -278,7 +285,7 @@ _rl_insert_typein (c)
   char *string;
 
   i = key = 0;
-  string = xmalloc (ibuffer_len + 1);
+  string = (char *)xmalloc (ibuffer_len + 1);
   string[i++] = (char) c;
 
   while ((t = rl_get_char (&key)) &&
index f8d76951b014dd743df3acc7e33d016d0f78472d..2e3e16b8a9993edd99cf82a75e450b7a2b01cda7 100644 (file)
--- a/isearch.c
+++ b/isearch.c
 #include "xmalloc.h"
 
 /* Variables exported to other files in the readline library. */
-unsigned char *_rl_isearch_terminators = (unsigned char *)NULL;
+char *_rl_isearch_terminators = (char *)NULL;
 
 /* Variables imported from other files in the readline library. */
 extern HIST_ENTRY *_rl_saved_line_for_history;
 
 /* Forward declarations */
-static int rl_search_history __P((int, int));
+static int rl_search_history PARAMS((int, int));
 
 /* Last line found by the current incremental search, so we don't `find'
    identical lines many times in a row. */
 static char *prev_line_found;
 
-static unsigned char *default_isearch_terminators = "\033\012";
+/* Last search string and its length. */
+static char *last_isearch_string;
+static int last_isearch_string_len;
+
+static char *default_isearch_terminators = "\033\012";
 
 /* Search backwards through the history looking for a string which is typed
    interactively.  Start with the current line. */
@@ -99,7 +103,7 @@ rl_display_search (search_string, reverse_p, where)
 
   searchlen = (search_string && *search_string) ? strlen (search_string) : 0;
 
-  message = xmalloc (searchlen + 33);
+  message = (char *)xmalloc (searchlen + 33);
   msglen = 0;
 
 #if defined (NOTDEF)
@@ -129,7 +133,7 @@ rl_display_search (search_string, reverse_p, where)
 
   strcpy (message + msglen, "': ");
 
-  rl_message ("%s", message, 0);
+  rl_message ("%s", message);
   free (message);
   (*rl_redisplay_function) ();
 }
@@ -176,7 +180,7 @@ rl_search_history (direction, invoking_key)
   /* The list of characters which terminate the search, but are not
      subsequently executed.  If the variable isearch-terminators has
      been set, we use that value, otherwise we use ESC and C-J. */
-  unsigned char *isearch_terminators;
+  char *isearch_terminators;
 
   RL_SETSTATE(RL_STATE_ISEARCH);
   orig_point = rl_point;
@@ -205,7 +209,7 @@ rl_search_history (direction, invoking_key)
   else
     {
       /* Keep track of this so we can free it. */
-      allocated_line = xmalloc (1 + strlen (rl_line_buffer));
+      allocated_line = (char *)xmalloc (1 + strlen (rl_line_buffer));
       strcpy (allocated_line, &rl_line_buffer[0]);
       lines[i] = allocated_line;
     }
@@ -218,7 +222,7 @@ rl_search_history (direction, invoking_key)
   rl_save_prompt ();
 
   /* Initialize search parameters. */
-  search_string = xmalloc (search_string_size = 128);
+  search_string = (char *)xmalloc (search_string_size = 128);
   *search_string = '\0';
   search_string_index = 0;
   prev_line_found = (char *)0;         /* XXX */
@@ -242,7 +246,7 @@ rl_search_history (direction, invoking_key)
       c = rl_read_key ();
       RL_UNSETSTATE(RL_STATE_MOREINPUT);
 
-      if (_rl_keymap[c].type == ISFUNC)
+      if (c >= 0 && _rl_keymap[c].type == ISFUNC)
        {
          f = _rl_keymap[c].function;
 
@@ -288,7 +292,18 @@ rl_search_history (direction, invoking_key)
        {
        case -1:
          if (search_string_index == 0)
-           continue;
+           {
+             if (last_isearch_string)
+               {
+                 search_string_size = 64 + last_isearch_string_len;
+                 search_string = (char *)xrealloc (search_string, search_string_size);
+                 strcpy (search_string, last_isearch_string);
+                 search_string_index = last_isearch_string_len;
+                 rl_display_search (search_string, reverse, -1);
+                 break;
+               }
+             continue;
+           }
          else if (reverse)
            --line_index;
          else if (line_index != sline_len)
@@ -335,7 +350,7 @@ rl_search_history (direction, invoking_key)
          if (search_string_index + 2 >= search_string_size)
            {
              search_string_size += 128;
-             search_string = xrealloc (search_string, search_string_size);
+             search_string = (char *)xrealloc (search_string, search_string_size);
            }
          search_string[search_string_index++] = c;
          search_string[search_string_index] = '\0';
@@ -428,8 +443,15 @@ rl_search_history (direction, invoking_key)
 
   rl_restore_prompt ();
 
+#if 1
+  /* Save the search string for possible later use. */
+  FREE (last_isearch_string);
+  last_isearch_string = search_string;
+  last_isearch_string_len = search_string_index;
+#else
   /* Free the search string. */
   free (search_string);
+#endif
 
   if (last_found_line < orig_line)
     rl_get_previous_history (orig_line - last_found_line, 0);
@@ -442,8 +464,7 @@ rl_search_history (direction, invoking_key)
   rl_point = line_index;
   rl_clear_message ();
 
-  if (allocated_line)
-    free (allocated_line);
+  FREE (allocated_line);
   free (lines);
 
   RL_UNSETSTATE(RL_STATE_ISEARCH);
index d8cba233c0a86a2abcd6c9b01c8e43055dfeb594..93cc8208f8b6174c31276b3731119f2944326c35 100644 (file)
--- a/keymaps.h
+++ b/keymaps.h
@@ -70,30 +70,30 @@ extern KEYMAP_ENTRY_ARRAY vi_insertion_keymap, vi_movement_keymap;
 
 /* Return a new, empty keymap.
    Free it with free() when you are done. */
-extern Keymap rl_make_bare_keymap __P((void));
+extern Keymap rl_make_bare_keymap PARAMS((void));
 
 /* Return a new keymap which is a copy of MAP. */
-extern Keymap rl_copy_keymap __P((Keymap));
+extern Keymap rl_copy_keymap PARAMS((Keymap));
 
 /* 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. */
-extern Keymap rl_make_keymap __P((void));
+extern Keymap rl_make_keymap PARAMS((void));
 
 /* Free the storage associated with a keymap. */
-extern void rl_discard_keymap __P((Keymap));
+extern void rl_discard_keymap PARAMS((Keymap));
 
 /* These functions actually appear in bind.c */
 
 /* Return the keymap corresponding to a given name.  Names look like
    `emacs' or `emacs-meta' or `vi-insert'.  */
-extern Keymap rl_get_keymap_by_name __P((const char *));
+extern Keymap rl_get_keymap_by_name PARAMS((const char *));
 
 /* Return the current keymap. */
-extern Keymap rl_get_keymap __P((void));
+extern Keymap rl_get_keymap PARAMS((void));
 
 /* Set the current keymap to MAP. */
-extern void rl_set_keymap __P((Keymap));
+extern void rl_set_keymap PARAMS((Keymap));
 
 #ifdef __cplusplus
 }
diff --git a/kill.c b/kill.c
index 3ced8fbc9a93452a78654cf75387fd6b46c2d50a..90ce6e45db35806693708094fcd793b17d63c3f5 100644 (file)
--- a/kill.c
+++ b/kill.c
@@ -70,6 +70,11 @@ static int rl_kill_index;
 /* How many slots we have in the kill ring. */
 static int rl_kill_ring_length;
 
+static int _rl_copy_to_kill_ring PARAMS((char *, int));
+static int region_kill_internal PARAMS((int));
+static int _rl_copy_word_as_kill PARAMS((int, int));
+static int rl_yank_nth_arg_internal PARAMS((int, int, int));
+
 /* How to say that you only want to save a certain amount
    of kill material. */
 int
@@ -129,7 +134,7 @@ _rl_copy_to_kill_ring (text, append)
   if (_rl_last_command_was_kill && rl_editing_mode != vi_mode)
     {
       old = rl_kill_ring[slot];
-      new = xmalloc (1 + strlen (old) + strlen (text));
+      new = (char *)xmalloc (1 + strlen (old) + strlen (text));
 
       if (append)
        {
@@ -612,7 +617,7 @@ rl_paste_from_clipboard (count, key)
       if (ptr)
        {
          len = ptr - data;
-         ptr = xmalloc (len + 1);
+         ptr = (char *)xmalloc (len + 1);
          ptr[len] = '\0';
          strncpy (ptr, data, len);
        }
diff --git a/macro.c b/macro.c
index fed298a06a7828b355662df65ce4a46b7999fb2e..347f89bf9906606ec05853a03728327b9796d8c2 100644 (file)
--- a/macro.c
+++ b/macro.c
@@ -163,9 +163,9 @@ _rl_add_macro_char (c)
   if (current_macro_index + 1 >= current_macro_size)
     {
       if (current_macro == 0)
-       current_macro = xmalloc (current_macro_size = 25);
+       current_macro = (char *)xmalloc (current_macro_size = 25);
       else
-       current_macro = xrealloc (current_macro, current_macro_size += 25);
+       current_macro = (char *)xrealloc (current_macro, current_macro_size += 25);
     }
 
   current_macro[current_macro_index++] = c;
diff --git a/nls.c b/nls.c
index f807995a067acaa77a6e5eaef894ba394947feee..706c8195c1047bde36d26ff34622a133fb7cc980 100644 (file)
--- a/nls.c
+++ b/nls.c
@@ -71,8 +71,8 @@ static char *legal_lang_values[] =
   0
 };
 
-static char *normalize_codeset __P((char *));
-static char *find_codeset __P((char *, size_t *));
+static char *normalize_codeset PARAMS((char *));
+static char *find_codeset PARAMS((char *, size_t *));
 #endif /* !HAVE_SETLOCALE */
 
 /* Check for LC_ALL, LC_CTYPE, and LANG and use the first with a value
@@ -141,10 +141,10 @@ normalize_codeset (codeset)
   all_digits = 1;
   for (len = 0, i = 0; i < namelen; i++)
     {
-      if (isalnum (codeset[i]))
+      if (ISALNUM ((unsigned char)codeset[i]))
        {
          len++;
-         all_digits &= isdigit (codeset[i]);
+         all_digits &= _rl_digit_p (codeset[i]);
        }
     }
 
@@ -162,9 +162,9 @@ normalize_codeset (codeset)
     }
 
   for (i = 0; i < namelen; i++)
-    if (isalpha (codeset[i]))
-      *wp++ = (isupper (codeset[i])) ? tolower (codeset[i]) : codeset[i];
-    else if (isdigit (codeset[i]))
+    if (ISALPHA ((unsigned char)codeset[i]))
+      *wp++ = _rl_to_lower (codeset[i]);
+    else if (_rl_digit_p (codeset[i]))
       *wp++ = codeset[i];
   *wp = '\0';
 
index d1e66f598140816a1fef393cefece456e9bbcb8e..ca6c368842d44047d5b55d7c406c50babcb9a0a6 100644 (file)
--- a/parens.c
+++ b/parens.c
@@ -54,7 +54,7 @@ extern char *strchr (), *strrchr ();
 #include "readline.h"
 #include "rlprivate.h"
 
-static int find_matching_open __P((char *, int, int));
+static int find_matching_open PARAMS((char *, int, int));
 
 /* Non-zero means try to blink the matching open parenthesis when the
    close parenthesis is inserted. */
index 9d7cc5bf7df830564f916a60a925fdcf3547db66..3efd8102e66c0590c351b06e43cca6888f522e56 100644 (file)
 #include "xmalloc.h"
 
 #ifndef RL_LIBRARY_VERSION
-#  define RL_LIBRARY_VERSION "4.2"
+#  define RL_LIBRARY_VERSION "4.2a"
+#endif
+
+#ifndef RL_READLINE_VERSION
+#  define RL_READLINE_VERSION  0x0402
 #endif
 
 /* Evaluates its arguments multiple times. */
 #define SWAP(s, e)  do { int t; t = s; s = e; e = t; } while (0)
 
 /* Forward declarations used in this file. */
-void _rl_free_history_entry __P((HIST_ENTRY *));
+void _rl_free_history_entry PARAMS((HIST_ENTRY *));
 
-static char *readline_internal __P((void));
-static void readline_initialize_everything __P((void));
-static void start_using_history __P((void));
-static void bind_arrow_keys __P((void));
-static int rl_change_case __P((int, int));
+static char *readline_internal PARAMS((void));
+static void readline_initialize_everything PARAMS((void));
+static void start_using_history PARAMS((void));
+static void bind_arrow_keys PARAMS((void));
+static int rl_change_case PARAMS((int, int));
 
-static void readline_default_bindings __P((void));
+static void readline_default_bindings PARAMS((void));
 
 /* **************************************************************** */
 /*                                                                 */
@@ -92,6 +96,8 @@ static void readline_default_bindings __P((void));
 
 const char *rl_library_version = RL_LIBRARY_VERSION;
 
+int rl_readline_version = RL_READLINE_VERSION;
+
 /* True if this is `real' readline as opposed to some stub substitute. */
 int rl_gnu_readline_p = 1;
 
@@ -155,8 +161,11 @@ FILE *_rl_in_stream, *_rl_out_stream;
 FILE *rl_instream = (FILE *)NULL;
 FILE *rl_outstream = (FILE *)NULL;
 
-/* Non-zero means echo characters as they are read. */
-int readline_echoing_p = 1;
+/* Non-zero means echo characters as they are read.  Defaults to no echo;
+   set to 1 if there is a controlling terminal, we can get its attributes,
+   and the attributes include `echo'.  Look at rltty.c:prepare_terminal_settings
+   for the code that sets it. */
+int readline_echoing_p = 0;
 
 /* Current prompt. */
 char *rl_prompt = (char *)NULL;
@@ -219,7 +228,7 @@ int rl_num_chars_to_read;
 char *rl_line_buffer = (char *)NULL;
 int rl_line_buffer_len = 0;
 
-/* Forward declarations used by the display and termcap code. */
+/* Forward declarations used by the display, termcap, and history code. */
 
 /* **************************************************************** */
 /*                                                                 */
@@ -240,6 +249,14 @@ int _rl_convert_meta_chars_to_ascii = 1;
    rather than as a meta-prefixed escape sequence. */
 int _rl_output_meta_chars = 0;
 
+/* If non-zero, rl_get_previous_history and rl_get_next_history attempt
+   to preserve the value of rl_point from line to line. */
+int _rl_history_preserve_point = 0;
+
+/* Saved target point for when _rl_history_preserve_point is set.  Special
+   value of -1 means that point is at the end of the line. */
+static int _rl_history_saved_point = -1;
+
 /* **************************************************************** */
 /*                                                                 */
 /*                     Top Level Functions                         */
@@ -258,9 +275,7 @@ rl_set_prompt (prompt)
   FREE (rl_prompt);
   rl_prompt = prompt ? savestring (prompt) : (char *)NULL;
 
-  rl_visible_prompt_length = (rl_prompt && *rl_prompt)
-                               ? rl_expand_prompt (rl_prompt)
-                               : 0;
+  rl_visible_prompt_length = rl_expand_prompt (rl_prompt);
   return 0;
 }
   
@@ -583,6 +598,12 @@ _rl_dispatch (key, map)
          if (key == ESC)
            RL_UNSETSTATE(RL_STATE_METANEXT);
 
+         if (newkey < 0)
+           {
+             _rl_abort_internal ();
+             return -1;
+           }
+
          r = _rl_dispatch (newkey, FUNCTION_TO_KEYMAP (map, key));
        }
       else
@@ -714,7 +735,7 @@ readline_initialize_everything ()
 
   /* Allocate data structures. */
   if (rl_line_buffer == 0)
-    rl_line_buffer = xmalloc (rl_line_buffer_len = DEFAULT_BUFFER_SIZE);
+    rl_line_buffer = (char *)xmalloc (rl_line_buffer_len = DEFAULT_BUFFER_SIZE);
 
   /* Initialize the terminal interface. */
   if (rl_terminal_name == 0)
@@ -855,6 +876,12 @@ rl_digit_loop ()
       key = c = rl_read_key ();
       RL_UNSETSTATE(RL_STATE_MOREINPUT);
 
+      if (c < 0)
+       {
+         _rl_abort_internal ();
+         return -1;
+       }
+
       /* If we see a key bound to `universal-argument' after seeing digits,
         it ends the argument but is otherwise ignored. */
       if (_rl_keymap[c].type == ISFUNC &&
@@ -901,8 +928,7 @@ rl_digit_loop ()
        }
     }
 
-  RL_UNSETSTATE(RL_STATE_NUMERICARG);
-  return 0;
+  /*NOTREACHED*/
 }
 
 /* Add the current digit to the argument in progress. */
@@ -1139,6 +1165,10 @@ rl_backward (count, key)
       else
         rl_point -= count;
     }
+
+  if (rl_point < 0)
+    rl_point = 0;
+
   return 0;
 }
 
@@ -1344,7 +1374,7 @@ rl_insert (count, c)
      readline because of extra large arguments. */
   if (count > 1 && count <= 1024)
     {
-      string = xmalloc (1 + count);
+      string = (char *)xmalloc (1 + count);
 
       for (i = 0; i < count; i++)
        string[i] = c;
@@ -1431,6 +1461,10 @@ rl_newline (count, key)
      int count, key;
 {
   rl_done = 1;
+
+  if (_rl_history_preserve_point)
+    _rl_history_saved_point = (rl_point == rl_end) ? -1 : rl_point;
+
   RL_SETSTATE(RL_STATE_DONE);
 
 #if defined (VI_MODE)
@@ -1487,10 +1521,10 @@ rl_rubout (count, key)
     }
   else
     {
-      int c = the_line[--rl_point];
+      unsigned char c = the_line[--rl_point];
       rl_delete_text (rl_point, rl_point + 1);
 
-      if (rl_point == rl_end && isprint (c) && _rl_last_c_pos)
+      if (rl_point == rl_end && ISPRINT (c) && _rl_last_c_pos)
        {
          int l;
          l = rl_character_len (c, rl_point);
@@ -1685,7 +1719,8 @@ rl_change_case (count, op)
 /*                                                                 */
 /* **************************************************************** */
 
-/* Transpose the words at point. */
+/* Transpose the words at point.  If point is at the end of the line,
+   transpose the two words before point. */
 int
 rl_transpose_words (count, key)
      int count, key;
@@ -2000,6 +2035,10 @@ rl_get_next_history (count, key)
 
   rl_maybe_replace_line ();
 
+  /* either not saved by rl_newline or at end of line, so set appropriately. */
+  if (_rl_history_saved_point == -1 && (rl_point || rl_end))
+    _rl_history_saved_point = (rl_point == rl_end) ? -1 : rl_point;
+
   temp = (HIST_ENTRY *)NULL;
   while (count)
     {
@@ -2020,7 +2059,12 @@ rl_get_next_history (count, key)
 
       strcpy (the_line, temp->line);
       rl_undo_list = (UNDO_LIST *)temp->data;
-      rl_end = rl_point = strlen (the_line);
+      rl_end = strlen (the_line);
+      rl_point = (_rl_history_preserve_point && _rl_history_saved_point != -1)
+                       ? _rl_history_saved_point
+                       : rl_end;
+      if (rl_point > rl_end)
+       rl_point = rl_end;
 #if defined (VI_MODE)
       if (rl_editing_mode == vi_mode)
        rl_point = 0;
@@ -2044,6 +2088,10 @@ rl_get_previous_history (count, key)
   if (count == 0)
     return 0;
 
+  /* either not saved by rl_newline or at end of line, so set appropriately. */
+  if (_rl_history_saved_point == -1 && (rl_point || rl_end))
+    _rl_history_saved_point = (rl_point == rl_end) ? -1 : rl_point;
+
   /* If we don't have a line saved, then save this one. */
   rl_maybe_save_line ();
 
@@ -2077,7 +2125,12 @@ rl_get_previous_history (count, key)
 
       strcpy (the_line, temp->line);
       rl_undo_list = (UNDO_LIST *)temp->data;
-      rl_end = rl_point = line_len;
+      rl_end = line_len;
+      rl_point = (_rl_history_preserve_point && _rl_history_saved_point != -1)
+                       ? _rl_history_saved_point
+                       : rl_end;
+      if (rl_point > rl_end)
+       rl_point = rl_end;
 
 #if defined (VI_MODE)
       if (rl_editing_mode == vi_mode)
index d362df1618002c6d3cb24838f3e768ef763d5d29..d608c7ab8b3ae41c27c8a10441b1c168552520e6 100644 (file)
@@ -37,6 +37,11 @@ extern "C" {
 #  include <readline/tilde.h>
 #endif
 
+/* Hex-encoded Readline version number. */
+#define RL_READLINE_VERSION    0x0402          /* Readline 4.2 */
+#define RL_VERSION_MAJOR       4
+#define RL_VERSION_MINOR       2
+
 /* Readline data structures. */
 
 /* Maintaining the state of undo.  We remember individual deletes and inserts
@@ -73,184 +78,184 @@ extern FUNMAP **funmap;
 /* **************************************************************** */
 
 /* Bindable commands for numeric arguments. */
-extern int rl_digit_argument __P((int, int));
-extern int rl_universal_argument __P((int, int));
+extern int rl_digit_argument PARAMS((int, int));
+extern int rl_universal_argument PARAMS((int, int));
 
 /* Bindable commands for moving the cursor. */
-extern int rl_forward __P((int, int));
-extern int rl_backward __P((int, int));
-extern int rl_beg_of_line __P((int, int));
-extern int rl_end_of_line __P((int, int));
-extern int rl_forward_word __P((int, int));
-extern int rl_backward_word __P((int, int));
-extern int rl_refresh_line __P((int, int));
-extern int rl_clear_screen __P((int, int));
-extern int rl_arrow_keys __P((int, int));
+extern int rl_forward PARAMS((int, int));
+extern int rl_backward PARAMS((int, int));
+extern int rl_beg_of_line PARAMS((int, int));
+extern int rl_end_of_line PARAMS((int, int));
+extern int rl_forward_word PARAMS((int, int));
+extern int rl_backward_word PARAMS((int, int));
+extern int rl_refresh_line PARAMS((int, int));
+extern int rl_clear_screen PARAMS((int, int));
+extern int rl_arrow_keys PARAMS((int, int));
 
 /* Bindable commands for inserting and deleting text. */
-extern int rl_insert __P((int, int));
-extern int rl_quoted_insert __P((int, int));
-extern int rl_tab_insert __P((int, int));
-extern int rl_newline __P((int, int));
-extern int rl_do_lowercase_version __P((int, int));
-extern int rl_rubout __P((int, int));
-extern int rl_delete __P((int, int));
-extern int rl_rubout_or_delete __P((int, int));
-extern int rl_delete_horizontal_space __P((int, int));
-extern int rl_delete_or_show_completions __P((int, int));
-extern int rl_insert_comment __P((int, int));
+extern int rl_insert PARAMS((int, int));
+extern int rl_quoted_insert PARAMS((int, int));
+extern int rl_tab_insert PARAMS((int, int));
+extern int rl_newline PARAMS((int, int));
+extern int rl_do_lowercase_version PARAMS((int, int));
+extern int rl_rubout PARAMS((int, int));
+extern int rl_delete PARAMS((int, int));
+extern int rl_rubout_or_delete PARAMS((int, int));
+extern int rl_delete_horizontal_space PARAMS((int, int));
+extern int rl_delete_or_show_completions PARAMS((int, int));
+extern int rl_insert_comment PARAMS((int, int));
 
 /* Bindable commands for changing case. */
-extern int rl_upcase_word __P((int, int));
-extern int rl_downcase_word __P((int, int));
-extern int rl_capitalize_word __P((int, int));
+extern int rl_upcase_word PARAMS((int, int));
+extern int rl_downcase_word PARAMS((int, int));
+extern int rl_capitalize_word PARAMS((int, int));
 
 /* Bindable commands for transposing characters and words. */
-extern int rl_transpose_words __P((int, int));
-extern int rl_transpose_chars __P((int, int));
+extern int rl_transpose_words PARAMS((int, int));
+extern int rl_transpose_chars PARAMS((int, int));
 
 /* Bindable commands for searching within a line. */
-extern int rl_char_search __P((int, int));
-extern int rl_backward_char_search __P((int, int));
+extern int rl_char_search PARAMS((int, int));
+extern int rl_backward_char_search PARAMS((int, int));
 
 /* Bindable commands for readline's interface to the command history. */
-extern int rl_beginning_of_history __P((int, int));
-extern int rl_end_of_history __P((int, int));
-extern int rl_get_next_history __P((int, int));
-extern int rl_get_previous_history __P((int, int));
+extern int rl_beginning_of_history PARAMS((int, int));
+extern int rl_end_of_history PARAMS((int, int));
+extern int rl_get_next_history PARAMS((int, int));
+extern int rl_get_previous_history PARAMS((int, int));
 
 /* Bindable commands for managing the mark and region. */
-extern int rl_set_mark __P((int, int));
-extern int rl_exchange_point_and_mark __P((int, int));
+extern int rl_set_mark PARAMS((int, int));
+extern int rl_exchange_point_and_mark PARAMS((int, int));
 
 /* Bindable commands to set the editing mode (emacs or vi). */
-extern int rl_vi_editing_mode __P((int, int));
-extern int rl_emacs_editing_mode __P((int, int));
+extern int rl_vi_editing_mode PARAMS((int, int));
+extern int rl_emacs_editing_mode PARAMS((int, int));
 
 /* Bindable commands for managing key bindings. */
-extern int rl_re_read_init_file __P((int, int));
-extern int rl_dump_functions __P((int, int));
-extern int rl_dump_macros __P((int, int));
-extern int rl_dump_variables __P((int, int));
+extern int rl_re_read_init_file PARAMS((int, int));
+extern int rl_dump_functions PARAMS((int, int));
+extern int rl_dump_macros PARAMS((int, int));
+extern int rl_dump_variables PARAMS((int, int));
 
 /* Bindable commands for word completion. */
-extern int rl_complete __P((int, int));
-extern int rl_possible_completions __P((int, int));
-extern int rl_insert_completions __P((int, int));
-extern int rl_menu_complete __P((int, int));
+extern int rl_complete PARAMS((int, int));
+extern int rl_possible_completions PARAMS((int, int));
+extern int rl_insert_completions PARAMS((int, int));
+extern int rl_menu_complete PARAMS((int, int));
 
 /* Bindable commands for killing and yanking text, and managing the kill ring. */
-extern int rl_kill_word __P((int, int));
-extern int rl_backward_kill_word __P((int, int));
-extern int rl_kill_line __P((int, int));
-extern int rl_backward_kill_line __P((int, int));
-extern int rl_kill_full_line __P((int, int));
-extern int rl_unix_word_rubout __P((int, int));
-extern int rl_unix_line_discard __P((int, int));
-extern int rl_copy_region_to_kill __P((int, int));
-extern int rl_kill_region __P((int, int));
-extern int rl_copy_forward_word __P((int, int));
-extern int rl_copy_backward_word __P((int, int));
-extern int rl_yank __P((int, int));
-extern int rl_yank_pop __P((int, int));
-extern int rl_yank_nth_arg __P((int, int));
-extern int rl_yank_last_arg __P((int, int));
+extern int rl_kill_word PARAMS((int, int));
+extern int rl_backward_kill_word PARAMS((int, int));
+extern int rl_kill_line PARAMS((int, int));
+extern int rl_backward_kill_line PARAMS((int, int));
+extern int rl_kill_full_line PARAMS((int, int));
+extern int rl_unix_word_rubout PARAMS((int, int));
+extern int rl_unix_line_discard PARAMS((int, int));
+extern int rl_copy_region_to_kill PARAMS((int, int));
+extern int rl_kill_region PARAMS((int, int));
+extern int rl_copy_forward_word PARAMS((int, int));
+extern int rl_copy_backward_word PARAMS((int, int));
+extern int rl_yank PARAMS((int, int));
+extern int rl_yank_pop PARAMS((int, int));
+extern int rl_yank_nth_arg PARAMS((int, int));
+extern int rl_yank_last_arg PARAMS((int, int));
 /* Not available unless __CYGWIN__ is defined. */
 #ifdef __CYGWIN__
-extern int rl_paste_from_clipboard __P((int, int));
+extern int rl_paste_from_clipboard PARAMS((int, int));
 #endif
 
 /* Bindable commands for incremental searching. */
-extern int rl_reverse_search_history __P((int, int));
-extern int rl_forward_search_history __P((int, int));
+extern int rl_reverse_search_history PARAMS((int, int));
+extern int rl_forward_search_history PARAMS((int, int));
 
 /* Bindable keyboard macro commands. */
-extern int rl_start_kbd_macro __P((int, int));
-extern int rl_end_kbd_macro __P((int, int));
-extern int rl_call_last_kbd_macro __P((int, int));
+extern int rl_start_kbd_macro PARAMS((int, int));
+extern int rl_end_kbd_macro PARAMS((int, int));
+extern int rl_call_last_kbd_macro PARAMS((int, int));
 
 /* Bindable undo commands. */
-extern int rl_revert_line __P((int, int));
-extern int rl_undo_command __P((int, int));
+extern int rl_revert_line PARAMS((int, int));
+extern int rl_undo_command PARAMS((int, int));
 
 /* Bindable tilde expansion commands. */
-extern int rl_tilde_expand __P((int, int));
+extern int rl_tilde_expand PARAMS((int, int));
 
 /* Bindable terminal control commands. */
-extern int rl_restart_output __P((int, int));
-extern int rl_stop_output __P((int, int));
+extern int rl_restart_output PARAMS((int, int));
+extern int rl_stop_output PARAMS((int, int));
 
 /* Miscellaneous bindable commands. */
-extern int rl_abort __P((int, int));
-extern int rl_tty_status __P((int, int));
+extern int rl_abort PARAMS((int, int));
+extern int rl_tty_status PARAMS((int, int));
 
 /* Bindable commands for incremental and non-incremental history searching. */
-extern int rl_history_search_forward __P((int, int));
-extern int rl_history_search_backward __P((int, int));
-extern int rl_noninc_forward_search __P((int, int));
-extern int rl_noninc_reverse_search __P((int, int));
-extern int rl_noninc_forward_search_again __P((int, int));
-extern int rl_noninc_reverse_search_again __P((int, int));
+extern int rl_history_search_forward PARAMS((int, int));
+extern int rl_history_search_backward PARAMS((int, int));
+extern int rl_noninc_forward_search PARAMS((int, int));
+extern int rl_noninc_reverse_search PARAMS((int, int));
+extern int rl_noninc_forward_search_again PARAMS((int, int));
+extern int rl_noninc_reverse_search_again PARAMS((int, int));
 
 /* Bindable command used when inserting a matching close character. */
-extern int rl_insert_close __P((int, int));
+extern int rl_insert_close PARAMS((int, int));
 
 /* Not available unless READLINE_CALLBACKS is defined. */
-extern void rl_callback_handler_install __P((const char *, rl_vcpfunc_t *));
-extern void rl_callback_read_char __P((void));
-extern void rl_callback_handler_remove __P((void));
+extern void rl_callback_handler_install PARAMS((const char *, rl_vcpfunc_t *));
+extern void rl_callback_read_char PARAMS((void));
+extern void rl_callback_handler_remove PARAMS((void));
 
 /* Things for vi mode. Not available unless readline is compiled -DVI_MODE. */
 /* VI-mode bindable commands. */
-extern int rl_vi_redo __P((int, int));
-extern int rl_vi_undo __P((int, int));
-extern int rl_vi_yank_arg __P((int, int));
-extern int rl_vi_fetch_history __P((int, int));
-extern int rl_vi_search_again __P((int, int));
-extern int rl_vi_search __P((int, int));
-extern int rl_vi_complete __P((int, int));
-extern int rl_vi_tilde_expand __P((int, int));
-extern int rl_vi_prev_word __P((int, int));
-extern int rl_vi_next_word __P((int, int));
-extern int rl_vi_end_word __P((int, int));
-extern int rl_vi_insert_beg __P((int, int));
-extern int rl_vi_append_mode __P((int, int));
-extern int rl_vi_append_eol __P((int, int));
-extern int rl_vi_eof_maybe __P((int, int));
-extern int rl_vi_insertion_mode __P((int, int));
-extern int rl_vi_movement_mode __P((int, int));
-extern int rl_vi_arg_digit __P((int, int));
-extern int rl_vi_change_case __P((int, int));
-extern int rl_vi_put __P((int, int));
-extern int rl_vi_column __P((int, int));
-extern int rl_vi_delete_to __P((int, int));
-extern int rl_vi_change_to __P((int, int));
-extern int rl_vi_yank_to __P((int, int));
-extern int rl_vi_delete __P((int, int));
-extern int rl_vi_back_to_indent __P((int, int));
-extern int rl_vi_first_print __P((int, int));
-extern int rl_vi_char_search __P((int, int));
-extern int rl_vi_match __P((int, int));
-extern int rl_vi_change_char __P((int, int));
-extern int rl_vi_subst __P((int, int));
-extern int rl_vi_overstrike __P((int, int));
-extern int rl_vi_overstrike_delete __P((int, int));
-extern int rl_vi_replace __P((int, int));
-extern int rl_vi_set_mark __P((int, int));
-extern int rl_vi_goto_mark __P((int, int));
+extern int rl_vi_redo PARAMS((int, int));
+extern int rl_vi_undo PARAMS((int, int));
+extern int rl_vi_yank_arg PARAMS((int, int));
+extern int rl_vi_fetch_history PARAMS((int, int));
+extern int rl_vi_search_again PARAMS((int, int));
+extern int rl_vi_search PARAMS((int, int));
+extern int rl_vi_complete PARAMS((int, int));
+extern int rl_vi_tilde_expand PARAMS((int, int));
+extern int rl_vi_prev_word PARAMS((int, int));
+extern int rl_vi_next_word PARAMS((int, int));
+extern int rl_vi_end_word PARAMS((int, int));
+extern int rl_vi_insert_beg PARAMS((int, int));
+extern int rl_vi_append_mode PARAMS((int, int));
+extern int rl_vi_append_eol PARAMS((int, int));
+extern int rl_vi_eof_maybe PARAMS((int, int));
+extern int rl_vi_insertion_mode PARAMS((int, int));
+extern int rl_vi_movement_mode PARAMS((int, int));
+extern int rl_vi_arg_digit PARAMS((int, int));
+extern int rl_vi_change_case PARAMS((int, int));
+extern int rl_vi_put PARAMS((int, int));
+extern int rl_vi_column PARAMS((int, int));
+extern int rl_vi_delete_to PARAMS((int, int));
+extern int rl_vi_change_to PARAMS((int, int));
+extern int rl_vi_yank_to PARAMS((int, int));
+extern int rl_vi_delete PARAMS((int, int));
+extern int rl_vi_back_to_indent PARAMS((int, int));
+extern int rl_vi_first_print PARAMS((int, int));
+extern int rl_vi_char_search PARAMS((int, int));
+extern int rl_vi_match PARAMS((int, int));
+extern int rl_vi_change_char PARAMS((int, int));
+extern int rl_vi_subst PARAMS((int, int));
+extern int rl_vi_overstrike PARAMS((int, int));
+extern int rl_vi_overstrike_delete PARAMS((int, int));
+extern int rl_vi_replace PARAMS((int, int));
+extern int rl_vi_set_mark PARAMS((int, int));
+extern int rl_vi_goto_mark PARAMS((int, int));
 
 /* VI-mode utility functions. */
-extern int rl_vi_check __P((void));
-extern int rl_vi_domove __P((int, int *));
-extern int rl_vi_bracktype __P((int));
+extern int rl_vi_check PARAMS((void));
+extern int rl_vi_domove PARAMS((int, int *));
+extern int rl_vi_bracktype PARAMS((int));
 
 /* VI-mode pseudo-bindable commands, used as utility functions. */
-extern int rl_vi_fWord __P((int, int));
-extern int rl_vi_bWord __P((int, int));
-extern int rl_vi_eWord __P((int, int));
-extern int rl_vi_fword __P((int, int));
-extern int rl_vi_bword __P((int, int));
-extern int rl_vi_eword __P((int, int));
+extern int rl_vi_fWord PARAMS((int, int));
+extern int rl_vi_bWord PARAMS((int, int));
+extern int rl_vi_eWord PARAMS((int, int));
+extern int rl_vi_fword PARAMS((int, int));
+extern int rl_vi_bword PARAMS((int, int));
+extern int rl_vi_eword PARAMS((int, int));
 
 /* **************************************************************** */
 /*                                                                 */
@@ -260,171 +265,172 @@ extern int rl_vi_eword __P((int, int));
 
 /* Readline functions. */
 /* Read a line of input.  Prompt with PROMPT.  A NULL PROMPT means none. */
-extern char *readline __P((const char *));
+extern char *readline PARAMS((const char *));
 
-extern int rl_set_prompt __P((const char *));
-extern int rl_expand_prompt __P((char *));
+extern int rl_set_prompt PARAMS((const char *));
+extern int rl_expand_prompt PARAMS((char *));
 
-extern int rl_initialize __P((void));
+extern int rl_initialize PARAMS((void));
 
 /* Undocumented; unused by readline */
-extern int rl_discard_argument __P((void));
+extern int rl_discard_argument PARAMS((void));
 
 /* Utility functions to bind keys to readline commands. */
-extern int rl_add_defun __P((const char *, rl_command_func_t *, int));
-extern int rl_bind_key __P((int, rl_command_func_t *));
-extern int rl_bind_key_in_map __P((int, rl_command_func_t *, Keymap));
-extern int rl_unbind_key __P((int));
-extern int rl_unbind_key_in_map __P((int, Keymap));
-extern int rl_unbind_function_in_map __P((rl_command_func_t *, Keymap));
-extern int rl_unbind_command_in_map __P((const char *, Keymap));
-extern int rl_set_key __P((const char *, rl_command_func_t *, Keymap));
-extern int rl_generic_bind __P((int, const char *, char *, Keymap));
-extern int rl_variable_bind __P((const char *, const char *));
+extern int rl_add_defun PARAMS((const char *, rl_command_func_t *, int));
+extern int rl_bind_key PARAMS((int, rl_command_func_t *));
+extern int rl_bind_key_in_map PARAMS((int, rl_command_func_t *, Keymap));
+extern int rl_unbind_key PARAMS((int));
+extern int rl_unbind_key_in_map PARAMS((int, Keymap));
+extern int rl_unbind_function_in_map PARAMS((rl_command_func_t *, Keymap));
+extern int rl_unbind_command_in_map PARAMS((const char *, Keymap));
+extern int rl_set_key PARAMS((const char *, rl_command_func_t *, Keymap));
+extern int rl_generic_bind PARAMS((int, const char *, char *, Keymap));
+extern int rl_variable_bind PARAMS((const char *, const char *));
 
 /* Backwards compatibility, use rl_generic_bind instead. */
-extern int rl_macro_bind __P((const char *, const char *, Keymap));
+extern int rl_macro_bind PARAMS((const char *, const char *, Keymap));
 
 /* Undocumented in the texinfo manual; not really useful to programs. */
-extern int rl_translate_keyseq __P((const char *, char *, int *));
-extern char *rl_untranslate_keyseq __P((int));
+extern int rl_translate_keyseq PARAMS((const char *, char *, int *));
+extern char *rl_untranslate_keyseq PARAMS((int));
 
-extern rl_command_func_t *rl_named_function __P((const char *));
-extern rl_command_func_t *rl_function_of_keyseq __P((const char *, Keymap, int *));
+extern rl_command_func_t *rl_named_function PARAMS((const char *));
+extern rl_command_func_t *rl_function_of_keyseq PARAMS((const char *, Keymap, int *));
 
-extern void rl_list_funmap_names __P((void));
-extern char **rl_invoking_keyseqs_in_map __P((rl_command_func_t *, Keymap));
-extern char **rl_invoking_keyseqs __P((rl_command_func_t *));
+extern void rl_list_funmap_names PARAMS((void));
+extern char **rl_invoking_keyseqs_in_map PARAMS((rl_command_func_t *, Keymap));
+extern char **rl_invoking_keyseqs PARAMS((rl_command_func_t *));
  
-extern void rl_function_dumper __P((int));
-extern void rl_macro_dumper __P((int));
-extern void rl_variable_dumper __P((int));
+extern void rl_function_dumper PARAMS((int));
+extern void rl_macro_dumper PARAMS((int));
+extern void rl_variable_dumper PARAMS((int));
 
-extern int rl_read_init_file __P((const char *));
-extern int rl_parse_and_bind __P((char *));
+extern int rl_read_init_file PARAMS((const char *));
+extern int rl_parse_and_bind PARAMS((char *));
 
 /* Functions for manipulating keymaps. */
-extern Keymap rl_make_bare_keymap __P((void));
-extern Keymap rl_copy_keymap __P((Keymap));
-extern Keymap rl_make_keymap __P((void));
-extern void rl_discard_keymap __P((Keymap));
-
-extern Keymap rl_get_keymap_by_name __P((const char *));
-extern char *rl_get_keymap_name __P((Keymap));
-extern void rl_set_keymap __P((Keymap));
-extern Keymap rl_get_keymap __P((void));
+extern Keymap rl_make_bare_keymap PARAMS((void));
+extern Keymap rl_copy_keymap PARAMS((Keymap));
+extern Keymap rl_make_keymap PARAMS((void));
+extern void rl_discard_keymap PARAMS((Keymap));
+
+extern Keymap rl_get_keymap_by_name PARAMS((const char *));
+extern char *rl_get_keymap_name PARAMS((Keymap));
+extern void rl_set_keymap PARAMS((Keymap));
+extern Keymap rl_get_keymap PARAMS((void));
 /* Undocumented; used internally only. */
-extern void rl_set_keymap_from_edit_mode __P((void));
-extern char *rl_get_keymap_name_from_edit_mode __P((void));
+extern void rl_set_keymap_from_edit_mode PARAMS((void));
+extern char *rl_get_keymap_name_from_edit_mode PARAMS((void));
 
 /* Functions for manipulating the funmap, which maps command names to functions. */
-extern int rl_add_funmap_entry __P((const char *, rl_command_func_t *));
-extern const char **rl_funmap_names __P((void));
+extern int rl_add_funmap_entry PARAMS((const char *, rl_command_func_t *));
+extern const char **rl_funmap_names PARAMS((void));
 /* Undocumented, only used internally -- there is only one funmap, and this
    function may be called only once. */
-extern void rl_initialize_funmap __P((void));
+extern void rl_initialize_funmap PARAMS((void));
 
 /* Utility functions for managing keyboard macros. */
-extern void rl_push_macro_input __P((char *));
+extern void rl_push_macro_input PARAMS((char *));
 
 /* Functions for undoing, from undo.c */
-extern void rl_add_undo __P((enum undo_code, int, int, char *));
-extern void rl_free_undo_list __P((void));
-extern int rl_do_undo __P((void));
-extern int rl_begin_undo_group __P((void));
-extern int rl_end_undo_group __P((void));
-extern int rl_modifying __P((int, int));
+extern void rl_add_undo PARAMS((enum undo_code, int, int, char *));
+extern void rl_free_undo_list PARAMS((void));
+extern int rl_do_undo PARAMS((void));
+extern int rl_begin_undo_group PARAMS((void));
+extern int rl_end_undo_group PARAMS((void));
+extern int rl_modifying PARAMS((int, int));
 
 /* Functions for redisplay. */
-extern void rl_redisplay __P((void));
-extern int rl_on_new_line __P((void));
-extern int rl_on_new_line_with_prompt __P((void));
-extern int rl_forced_update_display __P((void));
-extern int rl_clear_message __P((void));
-extern int rl_reset_line_state __P((void));
-extern int rl_crlf __P((void));
+extern void rl_redisplay PARAMS((void));
+extern int rl_on_new_line PARAMS((void));
+extern int rl_on_new_line_with_prompt PARAMS((void));
+extern int rl_forced_update_display PARAMS((void));
+extern int rl_clear_message PARAMS((void));
+extern int rl_reset_line_state PARAMS((void));
+extern int rl_crlf PARAMS((void));
 
 #if (defined (__STDC__) || defined (__cplusplus)) && defined (USE_VARARGS) && defined (PREFER_STDARG)
-extern int rl_message (const char *, ...);
+extern int rl_message (const char *, ...)  __attribute__((__format__ (printf, 1, 2)));
 #else
 extern int rl_message ();
 #endif
 
-extern int rl_show_char __P((int));
+extern int rl_show_char PARAMS((int));
 
 /* Undocumented in texinfo manual. */
-extern int rl_character_len __P((int, int));
+extern int rl_character_len PARAMS((int, int));
 
 /* Save and restore internal prompt redisplay information. */
-extern void rl_save_prompt __P((void));
-extern void rl_restore_prompt __P((void));
+extern void rl_save_prompt PARAMS((void));
+extern void rl_restore_prompt PARAMS((void));
 
 /* Modifying text. */
-extern int rl_insert_text __P((const char *));
-extern int rl_delete_text __P((int, int));
-extern int rl_kill_text __P((int, int));
-extern char *rl_copy_text __P((int, int));
+extern int rl_insert_text PARAMS((const char *));
+extern int rl_delete_text PARAMS((int, int));
+extern int rl_kill_text PARAMS((int, int));
+extern char *rl_copy_text PARAMS((int, int));
 
 /* Terminal and tty mode management. */
-extern void rl_prep_terminal __P((int));
-extern void rl_deprep_terminal __P((void));
-extern void rl_tty_set_default_bindings __P((Keymap));
+extern void rl_prep_terminal PARAMS((int));
+extern void rl_deprep_terminal PARAMS((void));
+extern void rl_tty_set_default_bindings PARAMS((Keymap));
+
+extern int rl_reset_terminal PARAMS((const char *));
+extern void rl_resize_terminal PARAMS((void));
+extern void rl_set_screen_size PARAMS((int, int));
+extern void rl_get_screen_size PARAMS((int *, int *));
 
-extern int rl_reset_terminal __P((const char *));
-extern void rl_resize_terminal __P((void));
-extern void rl_set_screen_size __P((int, int));
-extern void rl_get_screen_size __P((int *, int *));
+extern char *rl_get_termcap PARAMS((const char *));
 
 /* Functions for character input. */
-extern int rl_stuff_char __P((int));
-extern int rl_execute_next __P((int));
-extern int rl_clear_pending_input __P((void));
-extern int rl_read_key __P((void));
-extern int rl_getc __P((FILE *));
-extern int rl_set_keyboard_input_timeout __P((int));
+extern int rl_stuff_char PARAMS((int));
+extern int rl_execute_next PARAMS((int));
+extern int rl_clear_pending_input PARAMS((void));
+extern int rl_read_key PARAMS((void));
+extern int rl_getc PARAMS((FILE *));
+extern int rl_set_keyboard_input_timeout PARAMS((int));
 
 /* `Public' utility functions . */
-extern void rl_extend_line_buffer __P((int));
-extern int rl_ding __P((void));
-extern int rl_alphabetic __P((int));
+extern void rl_extend_line_buffer PARAMS((int));
+extern int rl_ding PARAMS((void));
+extern int rl_alphabetic PARAMS((int));
 
 /* Readline signal handling, from signals.c */
-extern int rl_set_signals __P((void));
-extern int rl_clear_signals __P((void));
-extern void rl_cleanup_after_signal __P((void));
-extern void rl_reset_after_signal __P((void));
-extern void rl_free_line_state __P((void));
+extern int rl_set_signals PARAMS((void));
+extern int rl_clear_signals PARAMS((void));
+extern void rl_cleanup_after_signal PARAMS((void));
+extern void rl_reset_after_signal PARAMS((void));
+extern void rl_free_line_state PARAMS((void));
  
-/* Undocumented. */
-extern int rl_set_paren_blink_timeout __P((int));
+extern int rl_set_paren_blink_timeout PARAMS((int));
 
 /* Undocumented. */
-extern int rl_maybe_save_line __P((void));
-extern int rl_maybe_unsave_line __P((void));
-extern int rl_maybe_replace_line __P((void));
+extern int rl_maybe_save_line PARAMS((void));
+extern int rl_maybe_unsave_line PARAMS((void));
+extern int rl_maybe_replace_line PARAMS((void));
 
 /* Completion functions. */
-extern int rl_complete_internal __P((int));
-extern void rl_display_match_list __P((char **, int, int));
+extern int rl_complete_internal PARAMS((int));
+extern void rl_display_match_list PARAMS((char **, int, int));
 
-extern char **rl_completion_matches __P((const char *, rl_compentry_func_t *));
-extern char *rl_username_completion_function __P((const char *, int));
-extern char *rl_filename_completion_function __P((const char *, int));
+extern char **rl_completion_matches PARAMS((const char *, rl_compentry_func_t *));
+extern char *rl_username_completion_function PARAMS((const char *, int));
+extern char *rl_filename_completion_function PARAMS((const char *, int));
 
 #if 0
 /* Backwards compatibility (compat.c).  These will go away sometime. */
-extern void free_undo_list __P((void));
-extern int maybe_save_line __P((void));
-extern int maybe_unsave_line __P((void));
-extern int maybe_replace_line __P((void));
-
-extern int ding __P((void));
-extern int alphabetic __P((int));
-extern int crlf __P((void));
-
-extern char **completion_matches __P((char *, rl_compentry_func_t *));
-extern char *username_completion_function __P((const char *, int));
-extern char *filename_completion_function __P((const char *, int));
+extern void free_undo_list PARAMS((void));
+extern int maybe_save_line PARAMS((void));
+extern int maybe_unsave_line PARAMS((void));
+extern int maybe_replace_line PARAMS((void));
+
+extern int ding PARAMS((void));
+extern int alphabetic PARAMS((int));
+extern int crlf PARAMS((void));
+
+extern char **completion_matches PARAMS((char *, rl_compentry_func_t *));
+extern char *username_completion_function PARAMS((const char *, int));
+extern char *filename_completion_function PARAMS((const char *, int));
 #endif
 
 /* **************************************************************** */
@@ -434,7 +440,8 @@ extern char *filename_completion_function __P((const char *, int));
 /* **************************************************************** */
 
 /* The version of this incarnation of the readline library. */
-extern const char *rl_library_version;
+extern const char *rl_library_version;         /* e.g., "4.2" */
+extern int rl_readline_version;                        /* e.g., 0x0402 */
 
 /* True if this is real GNU readline. */
 extern int rl_gnu_readline_p;
@@ -551,8 +558,8 @@ extern int rl_catch_sigwinch;
 
 /* Completion variables. */
 /* Pointer to the generator function for completion_matches ().
-   NULL means to use filename_entry_function (), the default filename
-   completer. */
+   NULL means to use rl_filename_completion_function (), the default
+   filename completer. */
 extern rl_compentry_func_t *rl_completion_entry_function;
 
 /* If rl_ignore_some_completions_function is non-NULL it is the address
index 4e094bf66c75adf5e7a9781eed579130f689dfdd..bd055e3bc8021219faa90010b13d073735220969 100644 (file)
--- a/rldefs.h
+++ b/rldefs.h
@@ -73,8 +73,14 @@ extern char *strchr (), *strrchr ();
 #define _rl_stricmp strcasecmp
 #define _rl_strnicmp strncasecmp
 #else
-extern int _rl_stricmp __P((char *, char *);
-extern int _rl_strnicmp __P((char *, char *));
+extern int _rl_stricmp PARAMS((char *, char *));
+extern int _rl_strnicmp PARAMS((char *, char *));
+#endif
+
+#if defined (HAVE_STRPBRK)
+#  define _rl_strpbrk(a,b)     strpbrk((a),(b))
+#else
+extern char *_rl_strpbrk PARAMS((const char *, const char *));
 #endif
 
 #if !defined (emacs_mode)
@@ -97,8 +103,7 @@ extern int _rl_strnicmp __P((char *, char *));
 #endif
 
 #ifndef savestring
-extern char *xmalloc __P((int));
-#define savestring(x) strcpy (xmalloc (1 + strlen (x)), (x))
+#define savestring(x) strcpy ((char *)xmalloc (1 + strlen (x)), (x))
 #endif
 
 /* Possible values for _rl_bell_preference. */
index a36de9b4590a4a97ebe13b98780fca66223cba73..9347b361599934c95f4bb17a7d2549424076725a 100644 (file)
@@ -26,7 +26,7 @@
 
 #include "rlconf.h"    /* for VISIBLE_STATS */
 #include "rlstdc.h"
-#include "posixjmp.h" /* defines procenv_t */
+#include "posixjmp.h"  /* defines procenv_t */
 
 /*************************************************************************
  *                                                                      *
@@ -34,9 +34,6 @@
  *                                                                      *
  *************************************************************************/
 
-/* terminal.c */
-extern char *rl_get_termcap __P((const char *));
-
 /*************************************************************************
  *                                                                      *
  * Global variables undocumented in texinfo manual and not in readline.h *
@@ -69,25 +66,25 @@ extern int rl_blink_matching_paren;
  *************************************************************************/
 
 /* bind.c */
-extern char *rl_untranslate_keyseq __P((int));
+extern char *rl_untranslate_keyseq PARAMS((int));
 
 /* kill.c */
-extern int rl_set_retained_kills __P((int));
+extern int rl_set_retained_kills PARAMS((int));
 
 /* readline.c */
-extern int rl_discard_argument __P((void));
+extern int rl_discard_argument PARAMS((void));
 
 /* rltty.c */
-extern int rl_stop_output __P((int, int));
+extern int rl_stop_output PARAMS((int, int));
 
 /* terminal.c */
-extern void _rl_set_screen_size __P((int, int));
+extern void _rl_set_screen_size PARAMS((int, int));
 
 /* undo.c */
-extern int _rl_fix_last_undo_of_type __P((int, int, int));
+extern int _rl_fix_last_undo_of_type PARAMS((int, int, int));
 
 /* util.c */
-extern char *_rl_savestring __P((const char *));
+extern char *_rl_savestring PARAMS((const char *));
 
 /*************************************************************************
  *                                                                      *
@@ -107,98 +104,97 @@ extern char *_rl_savestring __P((const char *));
 #if defined(READLINE_CALLBACKS)
 
 /* readline.c */
-extern void readline_internal_setup __P((void));
-extern char *readline_internal_teardown __P((int));
-extern int readline_internal_char __P((void));
+extern void readline_internal_setup PARAMS((void));
+extern char *readline_internal_teardown PARAMS((int));
+extern int readline_internal_char PARAMS((void));
 
 #endif /* READLINE_CALLBACKS */
 
 /* bind.c */
-extern void _rl_bind_if_unbound __P((const char *, rl_command_func_t *));
+extern void _rl_bind_if_unbound PARAMS((const char *, rl_command_func_t *));
 
 /* display.c */
-extern char *_rl_strip_prompt __P((char *));
-extern void _rl_move_cursor_relative __P((int, const char *));
-extern void _rl_move_vert __P((int));
-extern void _rl_save_prompt __P((void));
-extern void _rl_restore_prompt __P((void));
-extern char *_rl_make_prompt_for_search __P((int));
-extern void _rl_erase_at_end_of_line __P((int));
-extern void _rl_clear_to_eol __P((int));
-extern void _rl_clear_screen __P((void));
-extern void _rl_update_final __P((void));
-extern void _rl_redisplay_after_sigwinch __P((void));
-extern void _rl_clean_up_for_exit __P((void));
-extern void _rl_erase_entire_line __P((void));
-extern int _rl_current_display_line __P((void));
+extern char *_rl_strip_prompt PARAMS((char *));
+extern void _rl_move_cursor_relative PARAMS((int, const char *));
+extern void _rl_move_vert PARAMS((int));
+extern void _rl_save_prompt PARAMS((void));
+extern void _rl_restore_prompt PARAMS((void));
+extern char *_rl_make_prompt_for_search PARAMS((int));
+extern void _rl_erase_at_end_of_line PARAMS((int));
+extern void _rl_clear_to_eol PARAMS((int));
+extern void _rl_clear_screen PARAMS((void));
+extern void _rl_update_final PARAMS((void));
+extern void _rl_redisplay_after_sigwinch PARAMS((void));
+extern void _rl_clean_up_for_exit PARAMS((void));
+extern void _rl_erase_entire_line PARAMS((void));
+extern int _rl_current_display_line PARAMS((void));
 
 /* input.c */
-extern int _rl_any_typein __P((void));
-extern int _rl_input_available __P((void));
-extern void _rl_insert_typein __P((int));
+extern int _rl_any_typein PARAMS((void));
+extern int _rl_input_available PARAMS((void));
+extern void _rl_insert_typein PARAMS((int));
 
 /* macro.c */
-extern void _rl_with_macro_input __P((char *));
-extern int _rl_next_macro_key __P((void));
-extern void _rl_push_executing_macro __P((void));
-extern void _rl_pop_executing_macro __P((void));
-extern void _rl_add_macro_char __P((int));
-extern void _rl_kill_kbd_macro __P((void));
+extern void _rl_with_macro_input PARAMS((char *));
+extern int _rl_next_macro_key PARAMS((void));
+extern void _rl_push_executing_macro PARAMS((void));
+extern void _rl_pop_executing_macro PARAMS((void));
+extern void _rl_add_macro_char PARAMS((int));
+extern void _rl_kill_kbd_macro PARAMS((void));
 
 /* nls.c */
-extern int _rl_init_eightbit __P((void));
+extern int _rl_init_eightbit PARAMS((void));
 
 /* parens.c */
-extern void _rl_enable_paren_matching __P((int));
+extern void _rl_enable_paren_matching PARAMS((int));
 
 /* readline.c */
-extern void _rl_init_line_state __P((void));
-extern void _rl_set_the_line __P((void));
-extern int _rl_dispatch __P((int, Keymap));
-extern int _rl_init_argument __P((void));
-extern void _rl_fix_point __P((int));
-extern void _rl_replace_text __P((const char *, int, int));
-extern int _rl_char_search_internal __P((int, int, int));
-extern int _rl_set_mark_at_pos __P((int));
-extern int _rl_free_saved_history_line __P((void));
+extern void _rl_init_line_state PARAMS((void));
+extern void _rl_set_the_line PARAMS((void));
+extern int _rl_dispatch PARAMS((int, Keymap));
+extern int _rl_init_argument PARAMS((void));
+extern void _rl_fix_point PARAMS((int));
+extern void _rl_replace_text PARAMS((const char *, int, int));
+extern int _rl_char_search_internal PARAMS((int, int, int));
+extern int _rl_set_mark_at_pos PARAMS((int));
+extern int _rl_free_saved_history_line PARAMS((void));
 
 /* rltty.c */
-extern int _rl_disable_tty_signals __P((void));
-extern int _rl_restore_tty_signals __P((void));
+extern int _rl_disable_tty_signals PARAMS((void));
+extern int _rl_restore_tty_signals PARAMS((void));
 
 /* terminal.c */
-extern void _rl_get_screen_size __P((int, int));
-extern int _rl_init_terminal_io __P((const char *));
+extern void _rl_get_screen_size PARAMS((int, int));
+extern int _rl_init_terminal_io PARAMS((const char *));
 #ifdef _MINIX
-extern void _rl_output_character_function __P((int));
+extern void _rl_output_character_function PARAMS((int));
 #else
-extern int _rl_output_character_function __P((int));
+extern int _rl_output_character_function PARAMS((int));
 #endif
-extern void _rl_output_some_chars __P((const char *, int));
-extern int _rl_backspace __P((int));
-extern void _rl_enable_meta_key __P((void));
-extern void _rl_control_keypad __P((int));
+extern void _rl_output_some_chars PARAMS((const char *, int));
+extern int _rl_backspace PARAMS((int));
+extern void _rl_enable_meta_key PARAMS((void));
+extern void _rl_control_keypad PARAMS((int));
 
 /* util.c */
-extern int rl_alphabetic __P((int));
-extern int _rl_abort_internal __P((void));
-extern char *_rl_strindex __P((const char *, const char *));
-extern char *_rl_strpbrk __P((const char *, const char *));
-extern int _rl_qsort_string_compare __P((char **, char **));
-extern int (_rl_uppercase_p) __P((int));
-extern int (_rl_lowercase_p) __P((int));
-extern int (_rl_pure_alphabetic) __P((int));
-extern int (_rl_digit_p) __P((int));
-extern int (_rl_to_lower) __P((int));
-extern int (_rl_to_upper) __P((int));
-extern int (_rl_digit_value) __P((int));
+extern int rl_alphabetic PARAMS((int));
+extern int _rl_abort_internal PARAMS((void));
+extern char *_rl_strindex PARAMS((const char *, const char *));
+extern int _rl_qsort_string_compare PARAMS((char **, char **));
+extern int (_rl_uppercase_p) PARAMS((int));
+extern int (_rl_lowercase_p) PARAMS((int));
+extern int (_rl_pure_alphabetic) PARAMS((int));
+extern int (_rl_digit_p) PARAMS((int));
+extern int (_rl_to_lower) PARAMS((int));
+extern int (_rl_to_upper) PARAMS((int));
+extern int (_rl_digit_value) PARAMS((int));
 
 /* vi_mode.c */
-extern void _rl_vi_initialize_line __P((void));
-extern void _rl_vi_reset_last __P((void));
-extern void _rl_vi_set_last __P((int, int, int));
-extern int _rl_vi_textmod_command __P((int));
-extern void _rl_vi_done_inserting __P((void));
+extern void _rl_vi_initialize_line PARAMS((void));
+extern void _rl_vi_reset_last PARAMS((void));
+extern void _rl_vi_set_last PARAMS((int, int, int));
+extern int _rl_vi_textmod_command PARAMS((int));
+extern void _rl_vi_done_inserting PARAMS((void));
 
 /*************************************************************************
  * Undocumented private variables                                       *
@@ -213,6 +209,7 @@ extern int _rl_complete_show_all;
 extern int _rl_complete_mark_directories;
 extern int _rl_print_completions_horizontally;
 extern int _rl_completion_case_fold;
+extern int _rl_match_hidden_files;
 
 /* display.c */
 extern int _rl_vis_botlin;
@@ -221,7 +218,7 @@ extern int _rl_suppress_redisplay;
 extern char *rl_display_prompt;
 
 /* isearch.c */
-extern unsigned char *_rl_isearch_terminators;
+extern char *_rl_isearch_terminators;
 
 /* macro.c */
 extern int _rl_defining_kbd_macro;
@@ -234,6 +231,7 @@ extern int _rl_bell_preference;
 extern int _rl_meta_flag;
 extern int _rl_convert_meta_chars_to_ascii;
 extern int _rl_output_meta_chars;
+extern int _rl_history_preserve_point;
 extern char *_rl_comment_begin;
 extern unsigned char _rl_parsing_conditionalized_out;
 extern Keymap _rl_keymap;
index 60322755c27a73dacfe5a5a35519279aab9e80c8..3c03fbad5765e8e8ebabf64c7f88bdaca86c64b4 100644 (file)
--- a/rlshell.h
+++ b/rlshell.h
 
 #include "rlstdc.h"
 
-extern char *sh_single_quote __P((char *));
-extern void sh_set_lines_and_columns __P((int, int));
-extern char *sh_get_env_value __P((const char *));
-extern char *sh_get_home_dir __P((void));
-extern int sh_unset_nodelay_mode __P((int));
+extern char *sh_single_quote PARAMS((char *));
+extern void sh_set_lines_and_columns PARAMS((int, int));
+extern char *sh_get_env_value PARAMS((const char *));
+extern char *sh_get_home_dir PARAMS((void));
+extern int sh_unset_nodelay_mode PARAMS((int));
 
 #endif /* _RL_SHELL_H_ */
index a1ca208b76bc0d2e395b417a0c47b2290983a2b0..d6a22b3742c0af87f23f061b1ffef41f93d76664 100644 (file)
--- a/rlstdc.h
+++ b/rlstdc.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)); */
+       extern char *func PARAMS((char *, char *, int)); */
 
-#if !defined (__P)
+#if !defined (PARAMS)
 #  if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus)
-#    define __P(protos) protos
+#    define PARAMS(protos) protos
 #  else
-#    define __P(protos) ()
+#    define PARAMS(protos) ()
 #  endif
 #endif
 
-#if !defined (__STDC__) && !defined (__cplusplus)
-#  if defined (__GNUC__)       /* gcc with -traditional */
-#    if !defined (const)
-#      define const __const
-#    endif /* !const */
-#  else /* !__GNUC__ */
-#    if !defined (const)
-#      define const
-#    endif /* !const */
-#  endif /* !__GNUC__ */
-#endif /* !__STDC__ && !__cplusplus */
+#ifndef __attribute__
+#  if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__
+#    define __attribute__(x)
+#  endif
+#endif
 
 #endif /* !_RL_STDC_H_ */
diff --git a/rltty.c b/rltty.c
index 636e7f79e681110b24d17c175afc15b1ca252d14..cc0dc0301181b0edefa06b5a614787d910110dd9 100644 (file)
--- a/rltty.c
+++ b/rltty.c
@@ -52,6 +52,11 @@ extern int errno;
 rl_vintfunc_t *rl_prep_term_function = rl_prep_terminal;
 rl_voidfunc_t *rl_deprep_term_function = rl_deprep_terminal;
 
+static void block_sigint PARAMS((void));
+static void release_sigint PARAMS((void));
+
+static void set_winsize PARAMS((int));
+
 /* **************************************************************** */
 /*                                                                 */
 /*                        Signal Management                        */
@@ -173,6 +178,14 @@ struct bsdtty {
 
 static TIOTYPE otio;
 
+static void save_tty_chars PARAMS((TIOTYPE *));
+static int _get_tty_settings PARAMS((int, TIOTYPE *));
+static int get_tty_settings PARAMS((int, TIOTYPE *));
+static int _set_tty_settings PARAMS((int, TIOTYPE *));
+static int set_tty_settings PARAMS((int, TIOTYPE *));
+
+static void prepare_terminal_settings PARAMS((int, TIOTYPE, TIOTYPE *));
+
 static void
 save_tty_chars (tiop)
      TIOTYPE *tiop;
@@ -379,6 +392,14 @@ prepare_terminal_settings (meta_flag, oldtio, tiop)
 
 static TIOTYPE otio;
 
+static void save_tty_chars PARAMS((TIOTYPE *));
+static int _get_tty_settings PARAMS((int, TIOTYPE *));
+static int get_tty_settings PARAMS((int, TIOTYPE *));
+static int _set_tty_settings PARAMS((int, TIOTYPE *));
+static int set_tty_settings PARAMS((int, TIOTYPE *));
+
+static void prepare_terminal_settings PARAMS((int, TIOTYPE, TIOTYPE *));
+
 #if defined (FLUSHO)
 #  define OUTPUT_BEING_FLUSHED(tp)  (tp->c_lflag & FLUSHO)
 #else
@@ -626,6 +647,7 @@ rl_prep_terminal (meta_flag)
   if (get_tty_settings (tty, &tio) < 0)
     {
       release_sigint ();
+fprintf(stderr, "readline: warning: rl_prep_terminal: cannot get terminal settings");
       return;
     }
 
@@ -771,8 +793,8 @@ rltty_set_default_bindings (kmap)
     { \
       int ic; \
       ic = sc; \
-      if (ic != -1 && kmap[ic].type == ISFUNC) \
-       kmap[ic].function = func; \
+      if (ic != -1 && kmap[(unsigned char)ic].type == ISFUNC) \
+       kmap[(unsigned char)ic].function = func; \
     } \
   while (0)
 
@@ -861,6 +883,7 @@ _rl_disable_tty_signals ()
   nosigstty = sigstty;
 
   nosigstty.c_lflag &= ~ISIG;
+  nosigstty.c_iflag &= ~IXON;
 
   if (_set_tty_settings (fileno (rl_instream), &nosigstty) < 0)
     return (_set_tty_settings (fileno (rl_instream), &sigstty));
@@ -872,10 +895,17 @@ _rl_disable_tty_signals ()
 int
 _rl_restore_tty_signals ()
 {
+  int r;
+
   if (tty_sigs_disabled == 0)
     return 0;
 
-  return (_set_tty_settings (fileno (rl_instream), &sigstty));
+  r = _set_tty_settings (fileno (rl_instream), &sigstty);
+
+  if (r == 0)
+    tty_sigs_disabled = 0;
+
+  return r;
 }
 #endif /* !NEW_TTY_DRIVER */
 
index b6f9b429b5354a17be46bc46ee2fcce0c77a41a7..f3280e9fce079e2d388a70d5b7ffb1ebf7727880 100644 (file)
@@ -45,40 +45,40 @@ typedef char **CPPFunction ();
 #  define _RL_FUNCTION_TYPEDEF
 
 /* Bindable functions */
-typedef int rl_command_func_t __P((int, int));
+typedef int rl_command_func_t PARAMS((int, int));
 
 /* Typedefs for the completion system */
-typedef char *rl_compentry_func_t __P((const char *, int));
-typedef char **rl_completion_func_t __P((const char *, int, int));
+typedef char *rl_compentry_func_t PARAMS((const char *, int));
+typedef char **rl_completion_func_t PARAMS((const char *, int, int));
 
-typedef char *rl_quote_func_t __P((char *, int, char *));
-typedef char *rl_dequote_func_t __P((char *, int));
+typedef char *rl_quote_func_t PARAMS((char *, int, char *));
+typedef char *rl_dequote_func_t PARAMS((char *, int));
 
-typedef int rl_compignore_func_t __P((char **));
+typedef int rl_compignore_func_t PARAMS((char **));
 
-typedef void rl_compdisp_func_t __P((char **, int, int));
+typedef void rl_compdisp_func_t PARAMS((char **, int, int));
 
 /* Type for input and pre-read hook functions like rl_event_hook */
-typedef int rl_hook_func_t __P((void));
+typedef int rl_hook_func_t PARAMS((void));
 
 /* Input function type */
-typedef int rl_getc_func_t __P((FILE *));
+typedef int rl_getc_func_t PARAMS((FILE *));
 
 /* Generic function that takes a character buffer (which could be the readline
    line buffer) and an index into it (which could be rl_point) and returns
    an int. */
-typedef int rl_linebuf_func_t __P((char *, int));
+typedef int rl_linebuf_func_t PARAMS((char *, int));
 
 /* `Generic' function pointer typedefs */
-typedef int rl_intfunc_t __P((int));
+typedef int rl_intfunc_t PARAMS((int));
 #define rl_ivoidfunc_t rl_hook_func_t
-typedef int rl_icpfunc_t __P((char *));
-typedef int rl_icppfunc_t __P((char **));
+typedef int rl_icpfunc_t PARAMS((char *));
+typedef int rl_icppfunc_t PARAMS((char **));
 
-typedef void rl_voidfunc_t __P((void));
-typedef void rl_vintfunc_t __P((int));
-typedef void rl_vcpfunc_t __P((char *));
-typedef void rl_vcppfunc_t __P((char **));
+typedef void rl_voidfunc_t PARAMS((void));
+typedef void rl_vintfunc_t PARAMS((int));
+typedef void rl_vcpfunc_t PARAMS((char *));
+typedef void rl_vcppfunc_t PARAMS((char **));
 #endif /* _RL_FUNCTION_TYPEDEF */
 
 #ifdef __cplusplus
index 74141750fa1a15ef7f6196328c56ed2e8d41c078..c7ebeb1e55275e282da885fd43cf33d75c9028ac 100644 (file)
    have a copy of the license, write to the Free Software Foundation,
    59 Temple Place, Suite 330, Boston, MA 02111 USA. */
 
-extern char *strcpy ();
-extern char *xmalloc ();
+#include <config.h>
+#ifdef HAVE_STRING_H
+#  include <string.h>
+#endif
+#include "xmalloc.h"
 
 /* Backwards compatibility, now that savestring has been removed from
    all `public' readline header files. */
@@ -29,5 +32,5 @@ char *
 savestring (s)
      const char *s;
 {
-  return ((char *)strcpy (xmalloc (1 + (int)strlen (s)), (s)));
+  return ((char *)strcpy ((char *)xmalloc (1 + strlen (s)), (s)));
 }
index 45d7f13044f491536618bcb014730cc44025fe25..9c2feb1728f2017a9d4e8dfc185b00af08003889 100644 (file)
--- a/search.c
+++ b/search.c
@@ -54,7 +54,7 @@
 extern HIST_ENTRY *_rl_saved_line_for_history;
 
 /* Functions imported from the rest of the library. */
-extern int _rl_free_history_entry __P((HIST_ENTRY *));
+extern int _rl_free_history_entry PARAMS((HIST_ENTRY *));
 
 static char *noninc_search_string = (char *) NULL;
 static int noninc_history_pos;
@@ -66,6 +66,13 @@ static int rl_history_search_pos;
 static char *history_search_string;
 static int history_string_size;
 
+static void make_history_line_current PARAMS((HIST_ENTRY *));
+static int noninc_search_from_pos PARAMS((char *, int, int));
+static void noninc_dosearch PARAMS((char *, int));
+static void noninc_search PARAMS((int, int));
+static int rl_history_search_internal PARAMS((int, int));
+static void rl_history_search_reinit PARAMS((void));
+
 /* Make the data from the history entry ENTRY be the contents of the
    current line.  This doesn't do anything with rl_point; the caller
    must set it. */
@@ -391,7 +398,7 @@ rl_history_search_reinit ()
       if (rl_history_search_len >= history_string_size - 2)
        {
          history_string_size = rl_history_search_len + 2;
-         history_search_string = xrealloc (history_search_string, history_string_size);
+         history_search_string = (char *)xrealloc (history_search_string, history_string_size);
        }
       history_search_string[0] = '^';
       strncpy (history_search_string + 1, rl_line_buffer, rl_point);
diff --git a/shell.c b/shell.c
index 3727f7c16ff7f1eb6fc259562022f89bcb037c56..ad27cc14884b8fbb09404705fff9761a53366ab8 100644 (file)
--- a/shell.c
+++ b/shell.c
 #  include <strings.h>
 #endif /* !HAVE_STRING_H */
 
+#if defined (HAVE_LIMITS_H)
+#  include <limits.h>
+#endif
+
 #include <fcntl.h>
 #include <pwd.h>
 
 #include "xmalloc.h"
 
 #if !defined (HAVE_GETPW_DECLS)
-extern struct passwd *getpwuid __P((uid_t));
+extern struct passwd *getpwuid PARAMS((uid_t));
 #endif /* !HAVE_GETPW_DECLS */
 
 #ifndef NULL
 #  define NULL 0
 #endif
 
+#ifndef CHAR_BIT
+#  define CHAR_BIT 8
+#endif
+
+/* Nonzero if the integer type T is signed.  */
+#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
+
+/* Bound on length of the string representing an integer value of type T.
+   Subtract one for the sign bit if T is signed;
+   302 / 1000 is log10 (2) rounded up;
+   add one for integer division truncation;
+   add one more for a minus sign if t is signed.  */
+#define INT_STRLEN_BOUND(t) \
+  ((sizeof (t) * CHAR_BIT - TYPE_SIGNED (t)) * 302 / 1000 \
+   + 1 + TYPE_SIGNED (t))
+
 /* All of these functions are resolved from bash if we are linking readline
    as part of bash. */
 
@@ -103,18 +123,18 @@ sh_set_lines_and_columns (lines, cols)
   char *b;
 
 #if defined (HAVE_PUTENV)
-  b = xmalloc (24);
+  b = (char *)xmalloc (INT_STRLEN_BOUND (int) + sizeof ("LINES=") + 1);
   sprintf (b, "LINES=%d", lines);
   putenv (b);
-  b = xmalloc (24);
+  b = (char *)xmalloc (INT_STRLEN_BOUND (int) + sizeof ("COLUMNS=") + 1);
   sprintf (b, "COLUMNS=%d", cols);
   putenv (b);
 #else /* !HAVE_PUTENV */
 #  if defined (HAVE_SETENV)
-  b = xmalloc (8);
+  b = (char *)xmalloc (INT_STRLEN_BOUND (int) + 1);
   sprintf (b, "%d", lines);
   setenv ("LINES", b, 1);
-  b = xmalloc (8);
+  b = (char *)xmalloc (INT_STRLEN_BOUND (int) + 1);
   sprintf (b, "%d", cols);
   setenv ("COLUMNS", b, 1);
 #  endif /* HAVE_SETENV */
index 9eaa5f5b925bc0fb85856bf44bb9e58df590923a..11d704717931df2074192bf7113fc0c45ca1001a 100644 (file)
@@ -47,6 +47,9 @@ exec_prefix = @exec_prefix@
 includedir = @includedir@
 libdir = @libdir@
 
+# Support an alternate destination root directory for package building
+DESTDIR =
+
 CFLAGS = @CFLAGS@
 LOCAL_CFLAGS = @LOCAL_CFLAGS@ -DRL_LIBRARY_VERSION='"$(RL_LIBRARY_VERSION)"'
 CPPFLAGS = @CPPFLAGS@
@@ -83,7 +86,7 @@ SHLIB_MAJOR=          @SHLIB_MAJOR@
 SHLIB_MINOR=           .@SHLIB_MINOR@
 
 # For libraries which include headers from other libraries.
-INCLUDES = -I. -I.. -I$(topdir) -I$(includedir)
+INCLUDES = -I. -I.. -I$(topdir)
 
 CCFLAGS = $(DEFS) $(LOCAL_DEFS) $(CPPFLAGS) $(INCLUDES) $(LOCAL_CFLAGS) $(CFLAGS)
 
@@ -147,17 +150,24 @@ $(SHARED_HISTORY):        $(SHARED_HISTOBJ) xmalloc.so
        $(RM) $@
        $(SHOBJ_LD) ${SHOBJ_LDFLAGS} ${SHLIB_XLDFLAGS} -o $@ $(SHARED_HISTOBJ) xmalloc.so $(SHLIB_LIBS)
 
+# Since tilde.c is shared between readline and bash, make sure we compile 
+# it with the right flags when it's built as part of readline
+tilde.so:        tilde.c
+       ${RM} $@
+       $(SHOBJ_CC) -c $(CCFLAGS) $(SHOBJ_CFLAGS) -DREADLINE_LIBRARY -c -o tilde.o $(topdir)/tilde.c
+       $(MV) tilde.o $@
+
 installdirs: $(topdir)/support/mkdirs
-       -$(SHELL) $(topdir)/support/mkdirs $(libdir)
+       -$(SHELL) $(topdir)/support/mkdirs $(DESTDIR)$(libdir)
 
 install: installdirs $(SHLIB_STATUS)
-       $(SHELL) $(topdir)/support/shlib-install -O $(host_os) -d $(libdir) -i "$(INSTALL_DATA)" $(SHARED_HISTORY)
-       $(SHELL) $(topdir)/support/shlib-install -O $(host_os) -d $(libdir) -i "$(INSTALL_DATA)" $(SHARED_READLINE)
+       $(SHELL) $(topdir)/support/shlib-install -O $(host_os) -d $(DESTDIR)$(libdir) -i "$(INSTALL_DATA)" $(SHARED_HISTORY)
+       $(SHELL) $(topdir)/support/shlib-install -O $(host_os) -d $(DESTDIR)$(libdir) -i "$(INSTALL_DATA)" $(SHARED_READLINE)
        @echo install: you may need to run ldconfig
 
 uninstall:
-       $(SHELL) $(topdir)/support/shlib-install -O $(host_os) -d $(libdir) -U $(SHARED_HISTORY)
-       $(SHELL) $(topdir)/support/shlib-install -O $(host_os) -d $(libdir) -U $(SHARED_READLINE)
+       $(SHELL) $(topdir)/support/shlib-install -O $(host_os) -d $(DESTDIR)$(libdir) -U $(SHARED_HISTORY)
+       $(SHELL) $(topdir)/support/shlib-install -O $(host_os) -d $(DESTDIR)$(libdir) -U $(SHARED_READLINE)
        @echo uninstall: you may need to run ldconfig
 
 clean mostlyclean:     force
index ddc65638a2f89820d8e7fee63acfa7e69a3d356f..a1912691b66ac0817afe074fb16a63a24f557e53 100644 (file)
--- a/signals.c
+++ b/signals.c
@@ -73,7 +73,7 @@ typedef struct { SigHandler *sa_handler; int sa_mask, sa_flags; } sighandler_cxt
 #  define sigemptyset(m)
 #endif /* !HAVE_POSIX_SIGNALS */
 
-static SigHandler *rl_set_sighandler __P((int, SigHandler *, sighandler_cxt *));
+static SigHandler *rl_set_sighandler PARAMS((int, SigHandler *, sighandler_cxt *));
 
 /* Exported variables for use by applications. */
 
index 6a2c9ffe977e456ade1937cd78d64d31f79ca416..cd219563c7fe4522cf6e7c682eed7a61277f72da 100755 (executable)
@@ -695,12 +695,12 @@ EOF
         echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
         exit 0 ;;
     *:FreeBSD:*:*)
-       if test -x /usr/bin/objformat; then
-           if test "elf" = "`/usr/bin/objformat`"; then
-               echo ${UNAME_MACHINE}-unknown-freebsdelf`echo ${UNAME_RELEASE}|sed -e 's/[-_].*//'`
-               exit 0
-           fi
-       fi
+#      if test -x /usr/bin/objformat; then
+#          if test "elf" = "`/usr/bin/objformat`"; then
+#              echo ${UNAME_MACHINE}-unknown-freebsdelf`echo ${UNAME_RELEASE}|sed -e 's/[-_].*//'`
+#              exit 0
+#          fi
+#      fi
        echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-=(].*//'`
        exit 0 ;;
     *:NetBSD:*:*)
index a1e4eb16fed2ce147de8a9bd216b0475ef665f23..9de6dbf59f35bbf6801d073df52d237149b51fef 100755 (executable)
@@ -68,6 +68,8 @@ do
        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
 
index 6d45d0f053f5dac736b74cec4a37b2fb7403394a..654cfa9dd53ecf86b13637d53ec7a1760cab4a67 100755 (executable)
@@ -63,9 +63,10 @@ fi
 
 # post-install/uninstall
 
-# HP-UX requires that a shared library have execute permission
+# HP-UX and Darwin/MacOS X require that a shared library have execute permission
 case "$host_os" in
-hpux*) if [ -z "$uninstall" ]; then
+hpux*|darwin*|macosx*)
+       if [ -z "$uninstall" ]; then
                chmod 555 ${INSTALLDIR}/${LIBNAME}
        fi ;;
 *)     ;;
@@ -82,6 +83,9 @@ case "$LIBNAME" in
 *.[0-9])               # libname.M
        LINK1=`echo $LIBNAME | sed 's:\(.*\)\.[0-9]:\1:'`               # libname
        ;;
+*.[0-9].[0-9].dylib)   # libname.M.N.dylib
+       LINK2=`echo $LIBNAME | sed 's:\(.*\.[0-9]\)\.[0-9]:\1:'`        # libname.M.dylib
+       LINK1=`echo $LIBNAME | sed 's:\(.*\)\.[0-9]\.[0-9]:\1:'`        # libname.dylib
 esac
 
 INSTALL_LINK1='cd $INSTALLDIR ; ln -s $LIBNAME $LINK1'
@@ -91,7 +95,7 @@ INSTALL_LINK2='cd $INSTALLDIR ; ln -s $LIBNAME $LINK2'
 # Create symlinks to the installed library.  This section is incomplete.
 #
 case "$host_os" in
-*linux*|bsdi4*)
+*linux*|bsdi4*|*gnu*|darwin*|macosx*)
        # libname.so.M -> libname.so.M.N
        ${echo} ${RM} ${INSTALLDIR}/$LINK2
        if [ -z "$uninstall" ]; then
@@ -105,7 +109,7 @@ case "$host_os" in
        fi
        ;;
 
-solaris2*|aix4.[2-9]*|osf*|irix[56]*)
+solaris2*|aix4.[2-9]*|osf*|irix[56]*|sysv[45]*|dgux*)
        # libname.so -> libname.so.M
        ${echo} ${RM} ${INSTALLDIR}/$LINK1
        if [ -z "$uninstall" ]; then
@@ -114,8 +118,8 @@ solaris2*|aix4.[2-9]*|osf*|irix[56]*)
        ;;
 
 
-# FreeBSD 3.x can have either a.out or ELF shared libraries
-freebsd3*)
+# FreeBSD 3.x and above can have either a.out or ELF shared libraries
+freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*)
        if [ -x /usr/bin/objformat ] && [ "`/usr/bin/objformat`" = "elf" ]; then
                # libname.so -> libname.so.M
                ${echo} ${RM} ${INSTALLDIR}/$LINK1
index 5abef8a3bee1ed7af0e6cf04207abc8a1cdd14c7..a7c58104b96b155816b7d9e20dcfd61c54ea9563 100755 (executable)
@@ -77,7 +77,17 @@ sunos5*|solaris2*)
        SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
        ;;
 
-freebsd2* | netbsd* | openbsd*)
+# All versions of Linux or the semi-mythical GNU Hurd.
+linux*|gnu*)
+       SHOBJ_CFLAGS=-fPIC
+       SHOBJ_LD='${CC}'
+       SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
+
+       SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir) -Wl,-soname,`basename $@ $(SHLIB_MINOR)`'
+       SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
+       ;;
+
+freebsd2* | netbsd*)
        SHOBJ_CFLAGS=-fpic
        SHOBJ_LD=ld
        SHOBJ_LDFLAGS='-x -Bshareable'
@@ -86,16 +96,6 @@ freebsd2* | netbsd* | openbsd*)
        SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
        ;;
 
-# FreeBSD-3.x can have either a.out or ELF object files
-#freebsd3*)
-#      SHOBJ_CFLAGS=-fpic
-#      SHOBJ_LD='${CC}'
-#      SHOBJ_LDFLAGS='-shared'
-#
-#      SHLIB_XLDFLAGS='-R$(libdir)'
-#      SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
-#      ;;
-
 # FreeBSD-3.x ELF
 freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*)
        SHOBJ_CFLAGS=-fpic
@@ -113,13 +113,31 @@ freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*)
                SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
        fi
        ;;
-# All versions of Linux or the semi-mythical GNU Hurd.
-linux*|gnu*)
+
+# Darwin/MacOS X
+darwin*|macosx*)
+       SHOBJ_STATUS=unsupported
+       SHLIB_STATUS=supported
+
+       SHOBJ_CFLAGS='-dynamic -fno-common'
+
+       SHOBJ_LD=/usr/bin/libtool
+
+       SHLIB_LIBVERSION='$(SHLIB_MAJOR)$(SHLIB_MINOR).$(SHLIB_LIBSUFF)'
+       SHLIB_LIBSUFF='dylib'
+
+       SHOBJ_LDFLAGS='-dynamic'
+       SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
+
+       SHLIB_LIBS='-lSystem'
+       ;;
+
+openbsd*)
        SHOBJ_CFLAGS=-fPIC
        SHOBJ_LD='${CC}'
-       SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
+       SHOBJ_LDFLAGS='-shared'
 
-       SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir) -Wl,-soname,`basename $@ $(SHLIB_MINOR)`'
+       SHLIB_XLDFLAGS='-R$(libdir)'
        SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
        ;;
 
@@ -239,6 +257,20 @@ hpux9*-*gcc*)
 hpux9*)
        SHOBJ_STATUS=unsupported
        SHLIB_STATUS=unsupported
+
+       # If you are using the HP ANSI C compiler, you can uncomment and use
+       # this code (I have not tested it)
+#      SHOBJ_STATUS=supported
+#      SHLIB_STATUS=supported
+#
+#      SHOBJ_CFLAGS='+z'
+#      SHOBJ_LD='ld'
+#      SHOBJ_LDFLAGS='-b +s'
+#
+#      SHLIB_XLDFLAGS='+b $(libdir)'
+#      SHLIB_LIBSUFF='sl'
+#      SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'      
+
        ;;
 
 hpux10*-*gcc*)
@@ -257,17 +289,18 @@ hpux10*)
        SHLIB_STATUS=unsupported
 
        # If you are using the HP ANSI C compiler, you can uncomment and use
-       # this code
-#      SHOBJ_STATUS=unsupported
-#      SHLIB_STATUS=unsupported
+       # this code (I have not tested it)
+#      SHOBJ_STATUS=supported
+#      SHLIB_STATUS=supported
 #
 #      SHOBJ_CFLAGS='+z'
 #      SHOBJ_LD='ld'
-#      SHOBJ_LDFLAGS='-b'
+#      SHOBJ_LDFLAGS='-b +s +h $@'
 #
-#      SHLIB_XLDFLAGS=''
+#      SHLIB_XLDFLAGS='+b $(libdir)'
 #      SHLIB_LIBSUFF='sl'
 #      SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'      
+
        ;;
 
 hpux11*-*gcc*)
@@ -287,15 +320,15 @@ hpux11*)
        SHLIB_STATUS=unsupported
 
        # If you are using the HP ANSI C compiler, you can uncomment and use
-       # this code
-#      SHOBJ_STATUS=unsupported
-#      SHLIB_STATUS=unsupported
+       # this code (I have not tested it)
+#      SHOBJ_STATUS=supported
+#      SHLIB_STATUS=supported
 #
 #      SHOBJ_CFLAGS='+z'
 #      SHOBJ_LD='ld'
-#      SHOBJ_LDFLAGS='-b'
+#      SHOBJ_LDFLAGS='-b +s +h $@'
 #
-#      SHLIB_XLDFLAGS=''
+#      SHLIB_XLDFLAGS='+b $(libdir)'
 #      SHLIB_LIBSUFF='sl'
 #      SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'      
 
index 64256b4cd3214531abc3352146b5df9c8dac1213..4d2268c0612ebaf079fad3d24c6507a4909b66b3 100644 (file)
@@ -64,6 +64,7 @@
 
 #include "rlprivate.h"
 #include "rlshell.h"
+#include "xmalloc.h"
 
 /* **************************************************************** */
 /*                                                                 */
@@ -326,7 +327,11 @@ get_term_capabilities (bp)
   register int i;
 
   for (i = 0; i < NUM_TC_STRINGS; i++)
+#  ifdef __LCC__
+    *(tc_strings[i].tc_value) = tgetstr ((char *)tc_strings[i].tc_var, bp);
+#  else
     *(tc_strings[i].tc_value) = tgetstr (tc_strings[i].tc_var, bp);
+#  endif
 #endif
   tcap_initialized = 1;
 }
@@ -361,10 +366,10 @@ _rl_init_terminal_io (terminal_name)
   else
     {
       if (term_string_buffer == 0)
-       term_string_buffer = xmalloc(2032);
+       term_string_buffer = (char *)xmalloc(2032);
 
       if (term_buffer == 0)
-       term_buffer = xmalloc(4080);
+       term_buffer = (char *)xmalloc(4080);
 
       buffer = term_string_buffer;
 
diff --git a/tilde.c b/tilde.c
index 7f33db4db96bf8a6dee73a90d8332f58fd845b7e..6e4f116f7573dfd83f6bb440c2f41f2b6c87419b 100644 (file)
--- a/tilde.c
+++ b/tilde.c
 #include "tilde.h"
 
 #if defined (TEST) || defined (STATIC_MALLOC)
-static char *xmalloc (), *xrealloc ();
+static void *xmalloc (), *xrealloc ();
 #else
-extern char *xmalloc __P((int));
-extern char *xrealloc __P((void *, int));
+#  include "xmalloc.h"
 #endif /* TEST || STATIC_MALLOC */
 
 #if !defined (HAVE_GETPW_DECLS)
-extern struct passwd *getpwuid __P((uid_t));
-extern struct passwd *getpwnam __P((const char *));
+extern struct passwd *getpwuid PARAMS((uid_t));
+extern struct passwd *getpwnam PARAMS((const char *));
 #endif /* !HAVE_GETPW_DECLS */
 
 #if !defined (savestring)
 #  ifndef strcpy
 extern char *strcpy ();
 #  endif
-#define savestring(x) strcpy (xmalloc (1 + strlen (x)), (x))
+#define savestring(x) strcpy ((char *)xmalloc (1 + strlen (x)), (x))
 #endif /* !savestring */
 
 #if !defined (NULL)
@@ -77,8 +76,8 @@ extern char *strcpy ();
 /* If being compiled as part of bash, these will be satisfied from
    variables.o.  If being compiled as part of readline, they will
    be satisfied from shell.o. */
-extern char *sh_get_home_dir __P((void));
-extern char *sh_get_env_value __P((const char *));
+extern char *sh_get_home_dir PARAMS((void));
+extern char *sh_get_env_value PARAMS((const char *));
 
 /* The default value of tilde_additional_prefixes.  This is set to
    whitespace preceding a tilde so that simple programs which do not
@@ -114,12 +113,17 @@ char **tilde_additional_prefixes = (char **)default_prefixes;
    `:' and `=~'. */
 char **tilde_additional_suffixes = (char **)default_suffixes;
 
+static int tilde_find_prefix PARAMS((const char *, int *));
+static int tilde_find_suffix PARAMS((const char *));
+static char *isolate_tilde_prefix PARAMS((const char *, int *));
+static char *glue_prefix_and_suffix PARAMS((char *, const char *, int));
+
 /* Find the start of a tilde expansion in STRING, and return the index of
    the tilde which starts the expansion.  Place the length of the text
    which identified this tilde starter in LEN, excluding the tilde itself. */
 static int
 tilde_find_prefix (string, len)
-     char *string;
+     const char *string;
      int *len;
 {
   register int i, j, string_len;
@@ -154,7 +158,7 @@ tilde_find_prefix (string, len)
    the character which ends the tilde definition.  */
 static int
 tilde_find_suffix (string)
-     char *string;
+     const char *string;
 {
   register int i, j, string_len;
   register char **suffixes;
@@ -190,9 +194,9 @@ tilde_expand (string)
 
   result_index = result_size = 0;
   if (result = strchr (string, '~'))
-    result = xmalloc (result_size = (strlen (string) + 16));
+    result = (char *)xmalloc (result_size = (strlen (string) + 16));
   else
-    result = xmalloc (result_size = (strlen (string) + 1));
+    result = (char *)xmalloc (result_size = (strlen (string) + 1));
 
   /* Scan through STRING expanding tildes as we come to them. */
   while (1)
@@ -206,7 +210,7 @@ tilde_expand (string)
 
       /* Copy the skipped text into the result. */
       if ((result_index + start + 1) > result_size)
-       result = xrealloc (result, 1 + (result_size += (start + 20)));
+       result = (char *)xrealloc (result, 1 + (result_size += (start + 20)));
 
       strncpy (result + result_index, string, start);
       result_index += start;
@@ -223,7 +227,7 @@ tilde_expand (string)
        break;
 
       /* Expand the entire tilde word, and copy it into RESULT. */
-      tilde_word = xmalloc (1 + end);
+      tilde_word = (char *)xmalloc (1 + end);
       strncpy (tilde_word, string, end);
       tilde_word[end] = '\0';
       string += end;
@@ -239,7 +243,7 @@ tilde_expand (string)
 #endif
        {
          if ((result_index + len + 1) > result_size)
-           result = xrealloc (result, 1 + (result_size += (len + 20)));
+           result = (char *)xrealloc (result, 1 + (result_size += (len + 20)));
 
          strcpy (result + result_index, expansion);
          result_index += len;
@@ -257,13 +261,13 @@ tilde_expand (string)
    the location it points to. */
 static char *
 isolate_tilde_prefix (fname, lenp)
-     char *fname;
+     const char *fname;
      int *lenp;
 {
   char *ret;
   int i;
 
-  ret = xmalloc (strlen (fname));
+  ret = (char *)xmalloc (strlen (fname));
 #if defined (__MSDOS__)
   for (i = 1; fname[i] && fname[i] != '/' && fname[i] != '\\'; i++)
 #else
@@ -280,7 +284,8 @@ isolate_tilde_prefix (fname, lenp)
    SUFFIND. */
 static char *
 glue_prefix_and_suffix (prefix, suffix, suffind)
-     char *prefix, *suffix;
+     char *prefix;
+     const char *suffix;
      int suffind;
 {
   char *ret;
@@ -288,7 +293,7 @@ glue_prefix_and_suffix (prefix, suffix, suffind)
 
   plen = (prefix && *prefix) ? strlen (prefix) : 0;
   slen = strlen (suffix + suffind);
-  ret = xmalloc (plen + slen + 1);
+  ret = (char *)xmalloc (plen + slen + 1);
   if (plen)
     strcpy (ret, prefix);
   strcpy (ret + plen, suffix + suffind);
@@ -412,28 +417,28 @@ main (argc, argv)
 
 static void memory_error_and_abort ();
 
-static char *
+static void *
 xmalloc (bytes)
-     int bytes;
+     size_t bytes;
 {
-  char *temp = (char *)malloc (bytes);
+  void *temp = (char *)malloc (bytes);
 
   if (!temp)
     memory_error_and_abort ();
   return (temp);
 }
 
-static char *
+static void *
 xrealloc (pointer, bytes)
-     char *pointer;
+     void *pointer;
      int bytes;
 {
-  char *temp;
+  void *temp;
 
   if (!pointer)
-    temp = (char *)malloc (bytes);
+    temp = malloc (bytes);
   else
-    temp = (char *)realloc (pointer, bytes);
+    temp = realloc (pointer, bytes);
 
   if (!temp)
     memory_error_and_abort ();
diff --git a/tilde.h b/tilde.h
index d3966a634eb6c7a475b5027f2f741df622d8fc24..0df608b3458441c2899a49df570557f06de103b7 100644 (file)
--- a/tilde.h
+++ b/tilde.h
 #if !defined (_TILDE_H_)
 #  define _TILDE_H_
 
+#if defined (HAVE_CONFIG_H)
+#  include <config.h>
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 /* 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)); */
+       extern char *func PARAMS((char *, char *, int)); */
 
-#if !defined (__P)
+#if !defined (PARAMS)
 #  if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus)
-#    define __P(protos) protos
+#    define PARAMS(protos) protos
 #  else
-#    define __P(protos) ()
+#    define PARAMS(protos) ()
 #  endif
 #endif
 
-#if !defined (__STDC__) && !defined (__cplusplus)
-#  if defined (__GNUC__)       /* gcc with -traditional */
-#    if !defined (const)
-#      define const __const
-#    endif /* !const */
-#  else /* !__GNUC__ */
-#    if !defined (const)
-#      define const
-#    endif /* !const */
-#  endif /* !__GNUC__ */
-#endif /* !__STDC__ && !__cplusplus */
-
-typedef char *tilde_hook_func_t __P((char *));
+typedef char *tilde_hook_func_t PARAMS((char *));
 
 /* If non-null, this contains the address of a function that the application
    wants called before trying the standard tilde expansions.  The function
@@ -77,11 +69,11 @@ extern char **tilde_additional_prefixes;
 extern char **tilde_additional_suffixes;
 
 /* Return a new string which is the result of tilde expanding STRING. */
-extern char *tilde_expand __P((const char *));
+extern char *tilde_expand PARAMS((const char *));
 
 /* Do the work of tilde expansion on FILENAME.  FILENAME starts with a
    tilde.  If there is no expansion, call tilde_expansion_failure_hook. */
-extern char *tilde_expand_word __P((const char *));
+extern char *tilde_expand_word PARAMS((const char *));
 
 #ifdef __cplusplus
 }
diff --git a/undo.c b/undo.c
index e29e94062bf727cd9a4e48f4ba3f8de07a67d91b..9be231ded236157d14a445d504b2f064e401c649 100644 (file)
--- a/undo.c
+++ b/undo.c
@@ -48,6 +48,7 @@
 #include "history.h"
 
 #include "rlprivate.h"
+#include "xmalloc.h"
 
 #define SWAP(s, e)  do { int t; t = s; s = e; e = t; } while (0)
 
diff --git a/util.c b/util.c
index 6d0a6e38d9232957429d5d2fc99e302cd01239de..bd08b38a52bb495fed55b85b2e29376a51886ae9 100644 (file)
--- a/util.c
+++ b/util.c
@@ -132,7 +132,7 @@ rl_copy_text (from, to)
     SWAP (from, to);
 
   length = to - from;
-  copy = xmalloc (1 + length);
+  copy = (char *)xmalloc (1 + length);
   strncpy (copy, rl_line_buffer + from, length);
   copy[length] = '\0';
   return (copy);
@@ -147,7 +147,7 @@ rl_extend_line_buffer (len)
   while (len >= rl_line_buffer_len)
     {
       rl_line_buffer_len += DEFAULT_BUFFER_SIZE;
-      rl_line_buffer = xrealloc (rl_line_buffer, rl_line_buffer_len);
+      rl_line_buffer = (char *)xrealloc (rl_line_buffer, rl_line_buffer_len);
     }
 
   _rl_set_the_line ();
@@ -193,7 +193,7 @@ rl_tilde_expand (ignore, key)
   if (rl_line_buffer[start] == '~')
     {
       len = end - start + 1;
-      temp = xmalloc (len + 1);
+      temp = (char *)xmalloc (len + 1);
       strncpy (temp, rl_line_buffer + start, len);
       temp[len] = '\0';
       homedir = tilde_expand (temp);
@@ -225,6 +225,7 @@ _rl_strindex (s1, s2)
   return ((char *)NULL);
 }
 
+#ifndef HAVE_STRPBRK
 /* Find the first occurrence in STRING1 of any character from STRING2.
    Return a pointer to the character in STRING1. */
 char *
@@ -243,6 +244,7 @@ _rl_strpbrk (string1, string2)
     }
   return ((char *)NULL);
 }
+#endif
 
 #if !defined (HAVE_STRCASECMP)
 /* Compare at most COUNT characters from string1 to string2.  Case
@@ -302,62 +304,16 @@ _rl_qsort_string_compare (s1, s2)
 #endif
 }
 
-/* Function equivalents for the macros defined in chartypes.h. */
-#undef _rl_uppercase_p
-int
-_rl_uppercase_p (c)
-     int c;
-{
-  return (isupper (c));
-}
-
-#undef _rl_lowercase_p
-int
-_rl_lowercase_p (c)
-     int c;
-{
-  return (islower (c));
-}
-
-#undef _rl_pure_alphabetic
-int
-_rl_pure_alphabetic (c)
-     int c;
-{
-  return (isupper (c) || islower (c));
-}
-
-#undef _rl_digit_p
-int
-_rl_digit_p (c)
-     int c;
-{
-  return (isdigit (c));
-}
-
-#undef _rl_to_lower
-int
-_rl_to_lower (c)
-     int c;
-{
-  return (isupper (c) ? tolower (c) : c);
-}
+/* Function equivalents for the macros defined in chardefs.h. */
+#define FUNCTION_FOR_MACRO(f)  int (f) (c) int c; { return f (c); }
 
-#undef _rl_to_upper
-int
-_rl_to_upper (c)
-     int c;
-{
-  return (islower (c) ? toupper (c) : c);
-}
-
-#undef _rl_digit_value
-int
-_rl_digit_value (c)
-     int c;
-{
-  return (isdigit (c) ? c - '0' : c);
-}
+FUNCTION_FOR_MACRO (_rl_digit_p)
+FUNCTION_FOR_MACRO (_rl_digit_value)
+FUNCTION_FOR_MACRO (_rl_lowercase_p)
+FUNCTION_FOR_MACRO (_rl_pure_alphabetic)
+FUNCTION_FOR_MACRO (_rl_to_lower)
+FUNCTION_FOR_MACRO (_rl_to_upper)
+FUNCTION_FOR_MACRO (_rl_uppercase_p)
 
 /* Backwards compatibility, now that savestring has been removed from
    all `public' readline header files. */
@@ -366,5 +322,5 @@ char *
 _rl_savestring (s)
      const char *s;
 {
-  return (strcpy (xmalloc (1 + (int)strlen (s)), (s)));
+  return (strcpy ((char *)xmalloc (1 + (int)strlen (s)), (s)));
 }
index b9c0ea8b904336258df9d4ef63f9fa3aa8f71d6b..09ccecf61cacce286f340e0f6a9f1879c60a433e 100644 (file)
--- a/vi_mode.c
+++ b/vi_mode.c
 #include "rlprivate.h"
 #include "xmalloc.h"
 
-#ifndef _rl_digit_p
-#define _rl_digit_p(c)  ((c) >= '0' && (c) <= '9')
-#endif
-
-#ifndef _rl_digit_value
-#define _rl_digit_value(c) ((c) - '0')
-#endif
-
 #ifndef member
 #define member(c, s) ((c) ? (char *)strchr ((s), (c)) != (char *)NULL : 0)
 #endif
 
-#ifndef isident
-#define isident(c) ((_rl_pure_alphabetic (c) || _rl_digit_p (c) || c == '_'))
-#endif
-
 #ifndef exchange
 #define exchange(x, y) do {int temp = x; x = y; y = temp;} while (0)
 #endif
@@ -81,7 +69,7 @@
 static int _rl_vi_doing_insert;
 
 /* Command keys which do movement for xxx_to commands. */
-static const char *vi_motion = " hl^$0ftFt;,%wbeWBE|";
+static const char *vi_motion = " hl^$0ftFT;,%wbeWBE|";
 
 /* Keymap used for vi replace characters.  Created dynamically since
    rarely used. */
@@ -112,9 +100,11 @@ static int vi_redoing;
 static const char *vi_textmod = "_*\\AaIiCcDdPpYyRrSsXx~";
 
 /* Arrays for the saved marks. */
-static int vi_mark_chars[27];
+static int vi_mark_chars['z' - 'a' + 1];
 
-static int rl_digit_loop1 __P((void));
+static void _rl_vi_stuff_insert PARAMS((int));
+static void _rl_vi_save_insert PARAMS((UNDO_LIST *));
+static int rl_digit_loop1 PARAMS((void));
 
 void
 _rl_vi_initialize_line ()
@@ -460,14 +450,14 @@ rl_vi_fword (count, ignore)
   while (count-- && rl_point < (rl_end - 1))
     {
       /* Move to white space (really non-identifer). */
-      if (isident (rl_line_buffer[rl_point]))
+      if (_rl_isident (rl_line_buffer[rl_point]))
        {
-         while (isident (rl_line_buffer[rl_point]) && rl_point < rl_end)
+         while (_rl_isident (rl_line_buffer[rl_point]) && rl_point < rl_end)
            rl_point++;
        }
       else /* if (!whitespace (rl_line_buffer[rl_point])) */
        {
-         while (!isident (rl_line_buffer[rl_point]) &&
+         while (!_rl_isident (rl_line_buffer[rl_point]) &&
                 !whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end)
            rl_point++;
        }
@@ -497,9 +487,9 @@ rl_vi_bword (count, ignore)
         back so we don't get messed up by the rl_point++ down there in
         the while loop.  Without this code, words like `l;' screw up the
         function. */
-      last_is_ident = isident (rl_line_buffer[rl_point - 1]);
-      if ((isident (rl_line_buffer[rl_point]) && !last_is_ident) ||
-         (!isident (rl_line_buffer[rl_point]) && last_is_ident))
+      last_is_ident = _rl_isident (rl_line_buffer[rl_point - 1]);
+      if ((_rl_isident (rl_line_buffer[rl_point]) && !last_is_ident) ||
+         (!_rl_isident (rl_line_buffer[rl_point]) && last_is_ident))
        rl_point--;
 
       while (rl_point > 0 && whitespace (rl_line_buffer[rl_point]))
@@ -507,10 +497,10 @@ rl_vi_bword (count, ignore)
 
       if (rl_point > 0)
        {
-         if (isident (rl_line_buffer[rl_point]))
-           while (--rl_point >= 0 && isident (rl_line_buffer[rl_point]));
+         if (_rl_isident (rl_line_buffer[rl_point]))
+           while (--rl_point >= 0 && _rl_isident (rl_line_buffer[rl_point]));
          else
-           while (--rl_point >= 0 && !isident (rl_line_buffer[rl_point]) &&
+           while (--rl_point >= 0 && !_rl_isident (rl_line_buffer[rl_point]) &&
                   !whitespace (rl_line_buffer[rl_point]));
          rl_point++;
        }
@@ -532,10 +522,10 @@ rl_vi_eword (count, ignore)
 
       if (rl_point < rl_end)
        {
-         if (isident (rl_line_buffer[rl_point]))
-           while (++rl_point < rl_end && isident (rl_line_buffer[rl_point]));
+         if (_rl_isident (rl_line_buffer[rl_point]))
+           while (++rl_point < rl_end && _rl_isident (rl_line_buffer[rl_point]));
          else
-           while (++rl_point < rl_end && !isident (rl_line_buffer[rl_point])
+           while (++rl_point < rl_end && !_rl_isident (rl_line_buffer[rl_point])
                   && !whitespace (rl_line_buffer[rl_point]));
        }
       rl_point--;
@@ -611,7 +601,7 @@ _rl_vi_save_insert (up)
   if (len >= vi_insert_buffer_size)
     {
       vi_insert_buffer_size += (len + 32) - (len % 32);
-      vi_insert_buffer = xrealloc (vi_insert_buffer, vi_insert_buffer_size);
+      vi_insert_buffer = (char *)xrealloc (vi_insert_buffer, vi_insert_buffer_size);
     }
   strncpy (vi_insert_buffer, rl_line_buffer + start, len - 1);
   vi_insert_buffer[len-1] = '\0';
@@ -847,12 +837,12 @@ rl_digit_loop1 ()
          RL_UNSETSTATE(RL_STATE_NUMERICARG);
          return 1;
        }
-      rl_message ("(arg: %d) ", rl_arg_sign * rl_numeric_arg, 0);
+      rl_message ("(arg: %d) ", rl_arg_sign * rl_numeric_arg);
       RL_SETSTATE(RL_STATE_MOREINPUT);
       key = c = rl_read_key ();
       RL_UNSETSTATE(RL_STATE_MOREINPUT);
 
-      if (_rl_keymap[c].type == ISFUNC &&
+      if (c >= 0 && _rl_keymap[c].type == ISFUNC &&
          _rl_keymap[c].function == rl_universal_argument)
        {
          rl_numeric_arg *= 4;
@@ -1356,7 +1346,7 @@ rl_vi_set_mark (count, key)
   ch = rl_read_key ();
   RL_UNSETSTATE(RL_STATE_MOREINPUT);
 
-  if (_rl_lowercase_p (ch) == 0)
+  if (ch < 'a' || ch > 'z')
     {
       rl_ding ();
       return -1;
@@ -1381,7 +1371,7 @@ rl_vi_goto_mark (count, key)
       rl_point = rl_mark;
       return 0;
     }
-  else if (_rl_lowercase_p (ch) == 0)
+  else if (ch < 'a' || ch > 'z')
     {
       rl_ding ();
       return -1;
index c0d06403a3c44467c5ead6ef5983dffae02b024f..8985d340d398cd28f5278c8c275cad0faed4a592 100644 (file)
--- a/xmalloc.c
+++ b/xmalloc.c
@@ -51,26 +51,26 @@ memory_error_and_abort (fname)
 /* Return a pointer to free()able block of memory large enough
    to hold BYTES number of bytes.  If the memory cannot be allocated,
    print an error message and abort. */
-char *
+PTR_T
 xmalloc (bytes)
-     int bytes;
+     size_t bytes;
 {
-  char *temp;
+  PTR_T temp;
 
-  temp = (char *)malloc (bytes);
+  temp = malloc (bytes);
   if (temp == 0)
     memory_error_and_abort ("xmalloc");
   return (temp);
 }
 
-char *
+PTR_T
 xrealloc (pointer, bytes)
      PTR_T pointer;
-     int bytes;
+     size_t bytes;
 {
-  char *temp;
+  PTR_T temp;
 
-  temp = pointer ? (char *)realloc (pointer, bytes) : (char *)malloc (bytes);
+  temp = pointer ? realloc (pointer, bytes) : malloc (bytes);
 
   if (temp == 0)
     memory_error_and_abort ("xrealloc");
index bdf251b070a391f9a8c8f76507de16d708509183..9cb08ba21f111caabc5849683438eb529ad14ef3 100644 (file)
--- a/xmalloc.h
+++ b/xmalloc.h
@@ -39,8 +39,8 @@
 
 #endif /* !PTR_T */
 
-extern char *xmalloc __P((int));
-extern char *xrealloc __P((void *, int));
-extern void xfree __P((void *));
+extern PTR_T xmalloc PARAMS((size_t));
+extern PTR_T xrealloc PARAMS((void *, size_t));
+extern void xfree PARAMS((void *));
 
 #endif /* _XMALLOC_H_ */