diff -Nrc2 readline-4.2/CHANGELOG readline-4.2a/CHANGELOG
*** readline-4.2/CHANGELOG Fri Apr 6 15:15:12 2001
--- readline-4.2a/CHANGELOG Fri Nov 2 11:42:09 2001
***************
*** 464,465 ****
--- 464,610 ----
---
[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 , 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
+
+ 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 , define HAVE_MEMORY_H if found
+ - check for , 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 -Nrc2 readline-4.2/CHANGES readline-4.2a/CHANGES
*** readline-4.2/CHANGES Tue Apr 3 10:34:07 2001
--- readline-4.2a/CHANGES Wed Nov 7 17:00:32 2001
***************
*** 1,2 ****
--- 1,81 ----
+ 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
+ .
+
+ 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 -Nrc2 readline-4.2/INSTALL readline-4.2a/INSTALL
*** readline-4.2/INSTALL Tue Apr 11 14:44:59 1995
--- readline-4.2a/INSTALL Wed Aug 22 13:43:01 2001
***************
*** 2,66 ****
==================
! These are generic installation instructions.
! The `configure' shell script attempts to guess correct values for
! various system-dependent variables used during compilation. It uses
! those values to create a `Makefile' in each directory of the package.
! It may also create one or more `.h' files containing system-dependent
! definitions. Finally, it creates a shell script `config.status' that
! you can run in the future to recreate the current configuration, a file
! `config.cache' that saves the results of its tests to speed up
! reconfiguring, and a file `config.log' containing compiler output
! (useful mainly for debugging `configure').
!
! If you need to do unusual things to compile the package, please try
! to figure out how `configure' could check whether to do them, and mail
! diffs or instructions to the address given in the `README' so they can
! be considered for the next release. If at some point `config.cache'
! contains results you don't want to keep, you may remove or edit it.
!
! The file `configure.in' is used to create `configure' by a program
! called `autoconf'. You only need `configure.in' if you want to change
! it or regenerate `configure' using a newer version of `autoconf'.
! The simplest way to compile this package is:
!
! 1. `cd' to the directory containing the package's source code and type
! `./configure' to configure the package for your system. If you're
using `csh' on an old version of System V, you might need to type
`sh ./configure' instead to prevent `csh' from trying to execute
`configure' itself.
! Running `configure' takes awhile. While running, it prints some
messages telling which features it is checking for.
! 2. Type `make' to compile the package.
!
! 3. Optionally, type `make check' to run any self-tests that come with
! the package.
!
! 4. Type `make install' to install the programs and any data files and
! documentation.
!
! 5. You can remove the program binaries and object files from the
! source code directory by typing `make clean'. To also remove the
! files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
also a `make maintainer-clean' target, but that is intended mainly
! for the package's developers. If you use it, you may have to get
! all sorts of other programs in order to regenerate files that came
! with the distribution.
Compilers and Options
=====================
! Some systems require unusual options for compilation or linking that
the `configure' script does not know about. You can give `configure'
initial values for variables by setting them in the environment. Using
a Bourne-compatible shell, you can do that on the command line like
this:
CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
Or on systems that have the `env' program, you can do it like this:
env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
--- 2,71 ----
==================
! 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 some time. While running, it prints some
messages telling which features it is checking for.
! 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.
!
! 3. Type `make install' to install the static libreadline and libhistory
! libraries, the readline include files, and the documentation.
!
! 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 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 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
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
***************
*** 68,72 ****
====================================
! You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you must use a version of `make' that
--- 73,77 ----
====================================
! 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
***************
*** 76,142 ****
source code in the directory that `configure' is in and in `..'.
! If you have to use a `make' that does not supports the `VPATH'
! variable, you have to compile the package for one architecture at a time
! in the source code directory. After you have installed the package for
! one architecture, use `make distclean' before reconfiguring for another
! architecture.
Installation Names
==================
! By default, `make install' will install the package's files in
! `/usr/local/bin', `/usr/local/man', etc. You can specify an
! installation prefix other than `/usr/local' by giving `configure' the
! option `--prefix=PATH'.
!
! You can specify separate installation prefixes for
! architecture-specific files and architecture-independent files. If you
! give `configure' the option `--exec-prefix=PATH', the package will use
! PATH as the prefix for installing programs and libraries.
! Documentation and other data files will still use the regular prefix.
!
! If the package supports it, you can cause programs to be installed
! with an extra prefix or suffix on their names by giving `configure' the
! option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
!
! Optional Features
! =================
!
! Some packages pay attention to `--enable-FEATURE' options to
! `configure', where FEATURE indicates an optional part of the package.
! They may also pay attention to `--with-PACKAGE' options, where PACKAGE
! is something like `gnu-as' or `x' (for the X Window System). The
! `README' should mention any `--enable-' and `--with-' options that the
! package recognizes.
!
! For packages that use the X Window System, `configure' can usually
! find the X include and library files automatically, but if it doesn't,
! you can use the `configure' options `--x-includes=DIR' and
! `--x-libraries=DIR' to specify their locations.
Specifying the System Type
==========================
! There may be some features `configure' can not figure out
! automatically, but needs to determine by the type of host the package
! will run on. Usually `configure' can figure that out, but if it prints
! a message saying it can not guess the host type, give it the
! `--host=TYPE' option. TYPE can either be a short name for the system
! type, such as `sun4', or a canonical name with three fields:
! CPU-COMPANY-SYSTEM
!
! See the file `config.sub' for the possible values of each field. If
! `config.sub' isn't included in this package, then this package doesn't
! need to know the host type.
!
! If you are building compiler tools for cross-compiling, you can also
! use the `--target=TYPE' option to select the type of system they will
! produce code for and the `--build=TYPE' option to select the type of
! system on which you are compiling the package.
Sharing Defaults
================
! If you want to set default values for `configure' scripts to share,
you can create a site shell script called `config.site' that gives
default values for variables like `CC', `cache_file', and `prefix'.
--- 81,125 ----
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 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 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 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.
Sharing Defaults
================
! If you want to set default values for `configure' scripts to share,
you can create a site shell script called `config.site' that gives
default values for variables like `CC', `cache_file', and `prefix'.
***************
*** 144,153 ****
`PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
! A warning: not all `configure' scripts look for a site script.
Operation Controls
==================
! `configure' recognizes the following options to control how it
operates.
--- 127,137 ----
`PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
! A warning: the readline `configure' looks for a site script, but not
! all `configure' scripts do.
Operation Controls
==================
! `configure' recognizes the following options to control how it
operates.
***************
*** 175,176 ****
--- 159,256 ----
`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.
diff -Nrc2 readline-4.2/MANIFEST readline-4.2a/MANIFEST
*** readline-4.2/MANIFEST Mon Mar 5 14:34:36 2001
--- readline-4.2a/MANIFEST Mon Sep 24 08:40:53 2001
***************
*** 95,98 ****
--- 95,99 ----
examples/fileman.c f
examples/manexamp.c f
+ examples/readlinebuf.h f
examples/rlfe.c f
examples/rltest.c f
diff -Nrc2 readline-4.2/Makefile.in readline-4.2a/Makefile.in
*** readline-4.2/Makefile.in Mon Nov 27 11:57:09 2000
--- readline-4.2a/Makefile.in Fri Nov 2 11:41:09 2001
***************
*** 51,54 ****
--- 51,57 ----
man3dir = $(mandir)/man3
+ # Support an alternate destination root directory for package building
+ DESTDIR =
+
# Programs to make tags files.
ETAGS = etags -tw
***************
*** 65,69 ****
# For libraries which include headers from other libraries.
! INCLUDES = -I. -I$(srcdir) -I$(includedir)
XCCFLAGS = $(DEFS) $(LOCAL_DEFS) $(CPPFLAGS) $(INCLUDES)
--- 68,72 ----
# For libraries which include headers from other libraries.
! INCLUDES = -I. -I$(srcdir)
XCCFLAGS = $(DEFS) $(LOCAL_DEFS) $(CPPFLAGS) $(INCLUDES)
***************
*** 73,77 ****
GCC_LINT_FLAGS = -ansi -Wall -Wshadow -Wpointer-arith -Wcast-qual \
-Wwrite-strings -Wstrict-prototypes \
! -Wmissing-prototypes -Wno-implicit
GCC_LINT_CFLAGS = $(XCCFLAGS) $(GCC_LINT_FLAGS) @CFLAGS@ @LOCAL_CFLAGS@
--- 76,80 ----
GCC_LINT_FLAGS = -ansi -Wall -Wshadow -Wpointer-arith -Wcast-qual \
-Wwrite-strings -Wstrict-prototypes \
! -Wmissing-prototypes -Wno-implicit -pedantic
GCC_LINT_CFLAGS = $(XCCFLAGS) $(GCC_LINT_FLAGS) @CFLAGS@ @LOCAL_CFLAGS@
***************
*** 142,145 ****
--- 145,154 ----
-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}
***************
*** 185,193 ****
install-headers: installdirs ${INSTALLED_HEADERS}
for f in ${INSTALLED_HEADERS}; do \
! $(INSTALL_DATA) $(srcdir)/$$f $(includedir)/readline ; \
done
uninstall-headers:
! -test -n "$(includedir)" && cd $(includedir)/readline && \
${RM} ${INSTALLED_HEADERS}
--- 194,202 ----
install-headers: installdirs ${INSTALLED_HEADERS}
for f in ${INSTALLED_HEADERS}; do \
! $(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(includedir)/readline ; \
done
uninstall-headers:
! -test -n "$(includedir)" && cd $(DESTDIR)$(includedir)/readline && \
${RM} ${INSTALLED_HEADERS}
***************
*** 195,222 ****
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
-( if test -d doc ; then \
cd doc && \
! ${MAKE} ${MFLAGS} infodir=$(infodir) $@; \
fi )
installdirs: $(srcdir)/support/mkdirs
! -$(SHELL) $(srcdir)/support/mkdirs $(includedir) \
! $(includedir)/readline $(libdir) $(infodir) $(man3dir)
uninstall: uninstall-headers
! -test -n "$(libdir)" && cd $(libdir) && \
${RM} libreadline.a libreadline.old libhistory.a libhistory.old $(SHARED_LIBS)
install-shared: installdirs install-headers shared
! -( cd shlib ; ${MAKE} ${MFLAGS} install )
uninstall-shared: maybe-uninstall-headers
! -( cd shlib; ${MAKE} ${MFLAGS} uninstall )
TAGS: force
--- 204,238 ----
install: installdirs $(STATIC_LIBS) install-headers
! -$(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) DESTDIR=${DESTDIR} $@; \
fi )
+ -( cd shlib ; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} install )
installdirs: $(srcdir)/support/mkdirs
! -$(SHELL) $(srcdir)/support/mkdirs $(DESTDIR)$(includedir) \
! $(DESTDIR)$(includedir)/readline $(DESTDIR)$(libdir) \
! $(DESTDIR)$(infodir) $(DESTDIR)$(man3dir)
uninstall: uninstall-headers
! -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} DESTDIR=${DESTDIR} install )
uninstall-shared: maybe-uninstall-headers
! -( cd shlib; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} uninstall )
TAGS: force
diff -Nrc2 readline-4.2/README readline-4.2a/README
*** readline-4.2/README Wed Apr 4 14:32:26 2001
--- readline-4.2a/README Wed Aug 22 13:47:43 2001
***************
*** 2,6 ****
============
! This is the Gnu Readline library, version 4.2.
The Readline library provides a set of functions for use by applications
--- 2,6 ----
============
! This is the Gnu Readline library, version 4.2a.
The Readline library provides a set of functions for use by applications
***************
*** 17,22 ****
The Readline library is free software, distributed under the terms of
! the GNU Public License, version 2. For more information, see the file
! COPYING.
To build the library, try typing `./configure', then `make'. The
--- 17,22 ----
The Readline library is free software, distributed under the terms of
! the [GNU] General Public License, version 2. For more information, see
! the file COPYING.
To build the library, try typing `./configure', then `make'. The
***************
*** 68,73 ****
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*'.
In the stanza for your operating system-compiler pair, you will need to
--- 68,73 ----
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
diff -Nrc2 readline-4.2/aclocal.m4 readline-4.2a/aclocal.m4
*** readline-4.2/aclocal.m4 Tue Nov 21 10:42:10 2000
--- readline-4.2a/aclocal.m4 Wed Nov 7 10:59:37 2001
***************
*** 4,143 ****
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
! #include
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
! ])
!
! 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 ],[
! 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 ], [
! int mask = sigmask(SIGINT);
! sigsetmask(mask); sigblock(mask); sigpause(mask);
! ], bash_cv_signal_vintage=4.2bsd,
! [
! AC_TRY_LINK([
! #include
! 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_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
! #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
])
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
--- 4,66 ----
dnl Some derived from PDKSH 5.1.3 autoconf tests
dnl
!
! 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()
{
! long long foo = 0;
! exit(sizeof(long long) < sizeof(long));
}
! ], 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
! 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()
{
! /* 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));
}
! ], 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 . 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
***************
*** 145,149 ****
dnl BASH_CHECK_TYPE(TYPE, HEADERS, DEFAULT[, VALUE-IF-FOUND])
AC_DEFUN(BASH_CHECK_TYPE,
! [AC_REQUIRE([AC_HEADER_STDC])dnl
AC_MSG_CHECKING(for $1)
AC_CACHE_VAL(bash_cv_type_$1,
--- 68,74 ----
dnl BASH_CHECK_TYPE(TYPE, HEADERS, DEFAULT[, VALUE-IF-FOUND])
AC_DEFUN(BASH_CHECK_TYPE,
! [
! AC_REQUIRE([AC_HEADER_STDC])dnl
! AC_REQUIRE([BASH_HEADER_INTTYPES])
AC_MSG_CHECKING(for $1)
AC_CACHE_VAL(bash_cv_type_$1,
***************
*** 151,154 ****
--- 76,83 ----
#if STDC_HEADERS
#include
+ #include
+ #endif
+ #if HAVE_INTTYPES_H
+ #include
#endif
$2
***************
*** 159,199 ****
fi])
if test $bash_cv_type_$1 = no; then
! AC_DEFINE($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
! 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
! #include ],
! [rlim_t xxx;], bash_cv_type_rlimit=rlim_t,[
! AC_TRY_RUN([
! #include
! #include
! #include
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
])
--- 88,159 ----
fi])
if test $bash_cv_type_$1 = no; then
! AC_DEFINE_UNQUOTED($1, $3)
fi
])
dnl
! dnl BASH_CHECK_DECL(FUNC)
dnl
! 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
! #endif
! #if HAVE_INTTYPES_H
! # include
! #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 )
! AC_CACHE_VAL(bash_cv_printf_declared,
! [AC_TRY_RUN([
! #include
! #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_DECL_SBRK,
! [AC_MSG_CHECKING(for declaration of sbrk in )
! 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
])
***************
*** 273,276 ****
--- 233,250 ----
])
+ 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,
***************
*** 288,291 ****
--- 262,310 ----
])
+ 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
+ #include
+ 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
+ #include ],
+ [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,
***************
*** 423,426 ****
--- 442,447 ----
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)
***************
*** 433,440 ****
AC_DEFUN(BASH_TYPE_BITS64_T,
[
! if test "$ac_sv_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 "$ac_cv_sizeof_long" = 8; then
AC_CHECK_TYPE(bits64_t, long)
--- 454,463 ----
AC_DEFUN(BASH_TYPE_BITS64_T,
[
! 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)
***************
*** 444,457 ****
])
! AC_DEFUN(BASH_FUNC_STRSIGNAL,
! [AC_MSG_CHECKING([for the existence of strsignal])
! AC_CACHE_VAL(bash_cv_have_strsignal,
! [AC_TRY_LINK([#include
! #include ],
! [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
])
--- 467,532 ----
])
! 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
! #include ],
! [rlim_t xxx;], bash_cv_type_rlimit=rlim_t,[
! AC_TRY_RUN([
! #include
! #include
! #include
! 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
])
***************
*** 482,509 ****
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
! #include ],[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
! #include ],[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)
fi
])
--- 557,562 ----
if test $bash_cv_func_inet_aton = yes; then
AC_DEFINE(HAVE_INET_ATON)
! else
! AC_LIBOBJ(inet_aton)
fi
])
***************
*** 553,582 ****
])
- AC_DEFUN(BASH_FUNC_PRINTF,
- [AC_MSG_CHECKING(for declaration of printf in )
- AC_CACHE_VAL(bash_cv_printf_declared,
- [AC_TRY_RUN([
- #include
- #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)
--- 606,609 ----
***************
*** 598,634 ****
])
- 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()])
--- 625,628 ----
***************
*** 692,695 ****
--- 686,1000 ----
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 ],
+ [ 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
+
+ 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
+ #endif
+ #include
+ #include
+ #include
+
+ 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
+ #if defined (HAVE_LOCALE_H)
+ #include
+ #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
+ #include
+
+ 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
+ #include
+ ])
+ ])
+
+ AC_DEFUN(BASH_STRUCT_TERMIO_LDISC,
+ [
+ AC_CHECK_MEMBER(struct termio.c_line, AC_DEFINE(TERMIO_LDISC), ,[
+ #include
+ #include
+ ])
+ ])
+
+ 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
+ #include
+ ],
+ [
+ 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
])
***************
*** 761,767 ****
])
! AC_DEFUN(BASH_REINSTALL_SIGHANDLERS,
[AC_REQUIRE([AC_TYPE_SIGNAL])
! AC_REQUIRE([BASH_SIGNAL_CHECK])
AC_MSG_CHECKING([if signal handlers must be reinstalled when invoked])
AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers,
--- 1066,1212 ----
])
! 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
! #include ], [struct winsize x;],
! bash_cv_struct_winsize_header=ioctl_h,
! [AC_TRY_COMPILE([#include
! #include ], [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 ],[
! 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 ], [
! int mask = sigmask(SIGINT);
! sigsetmask(mask); sigblock(mask); sigpause(mask);
! ], bash_cv_signal_vintage=4.2bsd,
! [
! AC_TRY_LINK([
! #include
! 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
! #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_SYS_SIGNAL_VINTAGE])
AC_MSG_CHECKING([if signal handlers must be reinstalled when invoked])
AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers,
***************
*** 819,836 ****
])
- AC_DEFUN(BASH_FUNC_SBRK_DECLARED,
- [AC_MSG_CHECKING(for declaration of sbrk in )
- 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_MSG_CHECKING(for presence of necessary job control definitions)
AC_CACHE_VAL(bash_cv_job_control_missing,
--- 1264,1270 ----
])
dnl check that some necessary job control definitions are present
! 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,
***************
*** 940,991 ****
])
! 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
! #endif
! #include
! #include
! #include
!
! 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
])
--- 1374,1403 ----
])
! 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
])
***************
*** 1003,1027 ****
])
- 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
- #include ], [struct winsize x;],
- bash_cv_struct_winsize_header=ioctl_h,
- [AC_TRY_COMPILE([#include
- #include ], [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)
--- 1415,1418 ----
***************
*** 1054,1058 ****
dnl versions) or (on others).
dnl
! AC_DEFUN(BASH_MISC_SPEED_T,
[AC_MSG_CHECKING(for speed_t in sys/types.h)
AC_CACHE_VAL(bash_cv_speed_t_in_sys_types,
--- 1445,1449 ----
dnl versions) or (on others).
dnl
! 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,
***************
*** 1122,1233 ****
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 ],
- [ 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_MSG_CHECKING([whether $host_os needs _KERNEL for RLIMIT defines])
AC_CACHE_VAL(bash_cv_kernel_rlimit,
--- 1513,1519 ----
dnl
dnl Check if HPUX needs _KERNEL defined for RLIMIT_* definitions
dnl
! AC_DEFUN(BASH_CHECK_KERNEL_RLIMIT,
[AC_MSG_CHECKING([whether $host_os needs _KERNEL for RLIMIT defines])
AC_CACHE_VAL(bash_cv_kernel_rlimit,
***************
*** 1257,1399 ****
])
- 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
- #if defined (HAVE_LOCALE_H)
- #include
- #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 (
- 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
- #endif
- #include
- #include
- 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
--- 1543,1546 ----
***************
*** 1416,1435 ****
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)
--- 1563,1566 ----
***************
*** 1460,1463 ****
--- 1591,1706 ----
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
+ #include
+
+ 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
])
diff -Nrc2 readline-4.2/ansi_stdlib.h readline-4.2a/ansi_stdlib.h
*** readline-4.2/ansi_stdlib.h Thu Sep 7 12:07:49 2000
--- readline-4.2a/ansi_stdlib.h Wed Oct 17 16:08:40 2001
***************
*** 26,30 ****
/* String conversion functions. */
extern int atoi ();
- extern long int atol ();
extern double atof ();
--- 26,29 ----
***************
*** 32,37 ****
/* Memory allocation functions. */
! extern char *malloc ();
! extern char *realloc ();
extern void free ();
--- 31,47 ----
/* Memory allocation functions. */
! /* 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 ();
diff -Nrc2 readline-4.2/bind.c readline-4.2a/bind.c
*** readline-4.2/bind.c Mon Mar 5 10:10:07 2001
--- readline-4.2a/bind.c Mon Oct 15 14:30:43 2001
***************
*** 69,75 ****
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 currently_reading_init_file;
--- 69,75 ----
Keymap rl_binding_keymap;
! 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;
***************
*** 256,260 ****
}
! keys = xmalloc (1 + (2 * strlen (keyseq)));
/* Translate the ASCII representation of KEYSEQ into an array of
--- 256,260 ----
}
! keys = (char *)xmalloc (1 + (2 * strlen (keyseq)));
/* Translate the ASCII representation of KEYSEQ into an array of
***************
*** 270,274 ****
for (i = 0; i < keys_len; i++)
{
! int ic = (int) ((unsigned char)keys[i]);
if (_rl_convert_meta_chars_to_ascii && META_CHAR (ic))
--- 270,274 ----
for (i = 0; i < keys_len; i++)
{
! unsigned char ic = keys[i];
if (_rl_convert_meta_chars_to_ascii && META_CHAR (ic))
***************
*** 394,407 ****
c = (c * 8) + OCTVALUE (seq[i]);
i--; /* auto-increment in for loop */
! array[l++] = c % (largest_char + 1);
break;
case 'x':
i++;
! for (temp = 3, c = 0; isxdigit (seq[i]) && temp--; i++)
c = (c * 16) + HEXVALUE (seq[i]);
! if (temp == 3)
c = 'x';
i--; /* auto-increment in for loop */
! array[l++] = c % (largest_char + 1);
break;
default: /* backslashes before non-special chars just add the char */
--- 394,407 ----
c = (c * 8) + OCTVALUE (seq[i]);
i--; /* auto-increment in for loop */
! array[l++] = c & largest_char;
break;
case 'x':
i++;
! for (temp = 2, c = 0; ISXDIGIT ((unsigned char)seq[i]) && temp--; i++)
c = (c * 16) + HEXVALUE (seq[i]);
! if (temp == 2)
c = 'x';
i--; /* auto-increment in for loop */
! array[l++] = c & largest_char;
break;
default: /* backslashes before non-special chars just add the char */
***************
*** 473,477 ****
int c;
! r = ret = xmalloc (7 * strlen (seq) + 1);
for (s = seq; *s; s++)
{
--- 473,477 ----
int c;
! r = ret = (char *)xmalloc (7 * strlen (seq) + 1);
for (s = seq; *s; s++)
{
***************
*** 548,552 ****
for (i = 0; keyseq && keyseq[i]; i++)
{
! int ic = keyseq[i];
if (META_CHAR (ic) && _rl_convert_meta_chars_to_ascii)
--- 548,552 ----
for (i = 0; keyseq && keyseq[i]; i++)
{
! unsigned char ic = keyseq[i];
if (META_CHAR (ic) && _rl_convert_meta_chars_to_ascii)
***************
*** 783,787 ****
/* **************************************************************** */
! typedef int _rl_parser_func_t __P((char *));
/* Things that mean `Control'. */
--- 783,787 ----
/* **************************************************************** */
! typedef int _rl_parser_func_t PARAMS((char *));
/* Things that mean `Control'. */
***************
*** 1146,1150 ****
register int j, k, passc;
! seq = xmalloc (1 + strlen (string));
for (j = 1, k = passc = 0; string[j]; j++)
{
--- 1146,1150 ----
register int j, k, passc;
! seq = (char *)xmalloc (1 + strlen (string));
for (j = 1, k = passc = 0; string[j]; j++)
{
***************
*** 1204,1208 ****
if (*funname == '\'' || *funname == '"')
{
! unsigned char useq[2];
int fl = strlen (funname);
--- 1204,1208 ----
if (*funname == '\'' || *funname == '"')
{
! char useq[2];
int fl = strlen (funname);
***************
*** 1246,1253 ****
--- 1246,1255 ----
{ "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 },
***************
*** 1295,1299 ****
}
! typedef int _rl_sv_func_t __P((const char *));
/* These *must* correspond to the array indices for the appropriate
--- 1297,1301 ----
}
! typedef int _rl_sv_func_t PARAMS((const char *));
/* These *must* correspond to the array indices for the appropriate
***************
*** 1309,1318 ****
/* 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 struct {
--- 1311,1320 ----
/* Forward declarations */
! 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 {
***************
*** 1447,1452 ****
}
- #define _SET_BELL(v) do { _rl_bell_preference = v; return 0; } while (0)
-
static int
sv_bell_style (value)
--- 1449,1452 ----
***************
*** 1454,1468 ****
{
if (value == 0 || *value == '\0')
! _SET_BELL (AUDIBLE_BELL);
else if (_rl_stricmp (value, "none") == 0 || _rl_stricmp (value, "off") == 0)
! _SET_BELL (NO_BELL);
else if (_rl_stricmp (value, "audible") == 0 || _rl_stricmp (value, "on") == 0)
! _SET_BELL (AUDIBLE_BELL);
else if (_rl_stricmp (value, "visible") == 0)
! _SET_BELL (VISIBLE_BELL);
else
return 1;
}
- #undef _SET_BELL
static int
--- 1454,1468 ----
{
if (value == 0 || *value == '\0')
! _rl_bell_preference = AUDIBLE_BELL;
else if (_rl_stricmp (value, "none") == 0 || _rl_stricmp (value, "off") == 0)
! _rl_bell_preference = NO_BELL;
else if (_rl_stricmp (value, "audible") == 0 || _rl_stricmp (value, "on") == 0)
! _rl_bell_preference = AUDIBLE_BELL;
else if (_rl_stricmp (value, "visible") == 0)
! _rl_bell_preference = VISIBLE_BELL;
else
return 1;
+ return 0;
}
static int
***************
*** 1494,1498 ****
/* The value starts at v + beg. Translate it into a character string. */
! _rl_isearch_terminators = (unsigned char *)xmalloc (2 * strlen (v) + 1);
rl_translate_keyseq (v + beg, _rl_isearch_terminators, &end);
_rl_isearch_terminators[end] = '\0';
--- 1494,1498 ----
/* The value starts at v + beg. Translate it into a character string. */
! _rl_isearch_terminators = (char *)xmalloc (2 * strlen (v) + 1);
rl_translate_keyseq (v + beg, _rl_isearch_terminators, &end);
_rl_isearch_terminators[end] = '\0';
***************
*** 1752,1756 ****
{
result_size += 10;
! result = (char **) xrealloc (result, result_size * sizeof (char *));
}
--- 1752,1756 ----
{
result_size += 10;
! result = (char **)xrealloc (result, result_size * sizeof (char *));
}
***************
*** 1804,1808 ****
{
result_size += 10;
! result = (char **) xrealloc (result, result_size * sizeof (char *));
}
--- 1804,1808 ----
{
result_size += 10;
! result = (char **)xrealloc (result, result_size * sizeof (char *));
}
***************
*** 1952,1956 ****
if (key == ESC)
{
! keyname = xmalloc (3 + prefix_len);
if (prefix)
strcpy (keyname, prefix);
--- 1952,1956 ----
if (key == ESC)
{
! keyname = (char *)xmalloc (3 + prefix_len);
if (prefix)
strcpy (keyname, prefix);
***************
*** 1964,1968 ****
if (prefix)
{
! out = xmalloc (strlen (keyname) + prefix_len + 1);
strcpy (out, prefix);
strcpy (out + prefix_len, keyname);
--- 1964,1968 ----
if (prefix)
{
! out = (char *)xmalloc (strlen (keyname) + prefix_len + 1);
strcpy (out, prefix);
strcpy (out + prefix_len, keyname);
diff -Nrc2 readline-4.2/callback.c readline-4.2a/callback.c
*** readline-4.2/callback.c Tue Dec 12 14:48:21 2000
--- readline-4.2a/callback.c Mon Sep 10 10:05:28 2001
***************
*** 31,34 ****
--- 31,41 ----
#include
+
+ #ifdef HAVE_STDLIB_H
+ # include
+ #else
+ # include "ansi_stdlib.h"
+ #endif
+
#include
diff -Nrc2 readline-4.2/chardefs.h readline-4.2a/chardefs.h
*** readline-4.2/chardefs.h Wed Sep 13 17:20:15 2000
--- readline-4.2a/chardefs.h Thu Nov 8 08:17:21 2001
***************
*** 28,35 ****
#if defined (HAVE_CONFIG_H)
# if defined (HAVE_STRING_H)
# include
- # else
- # include
# endif /* HAVE_STRING_H */
#else
# include
--- 28,39 ----
#if defined (HAVE_CONFIG_H)
# if defined (HAVE_STRING_H)
+ # if ! defined (STDC_HEADERS) && defined (HAVE_MEMORY_H)
+ # include
+ # endif
# include
# endif /* HAVE_STRING_H */
+ # if defined (HAVE_STRINGS_H)
+ # include
+ # endif /* HAVE_STRINGS_H */
#else
# include
***************
*** 61,91 ****
#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')
! */
!
! #define _rl_lowercase_p(c) (islower(c))
! #define _rl_uppercase_p(c) (isupper(c))
! #define _rl_digit_p(x) (isdigit (x))
!
! #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))
!
! /* 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))
! */
#ifndef _rl_to_upper
! # define _rl_to_upper(c) (islower(c) ? toupper(c) : (c))
! # define _rl_to_lower(c) (isupper(c) ? tolower(c) : (c))
#endif
#ifndef _rl_digit_value
! #define _rl_digit_value(x) ((x) - '0')
#endif
#ifndef NEWLINE
#define NEWLINE '\n'
--- 65,118 ----
#define UNCTRL(c) _rl_to_upper(((c)|control_character_bit))
! #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 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_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')
!
! #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) (_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')
! #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'
***************
*** 123,140 ****
#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_ */
--- 150,153 ----
diff -Nrc2 readline-4.2/compat.c readline-4.2a/compat.c
*** readline-4.2/compat.c Tue Feb 6 14:15:13 2001
--- readline-4.2a/compat.c Wed Aug 22 09:38:45 2001
***************
*** 31,46 ****
#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));
/* Provide backwards-compatible entry points for old function names. */
--- 31,46 ----
#include "rltypedefs.h"
! 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. */
diff -Nrc2 readline-4.2/complete.c readline-4.2a/complete.c
*** readline-4.2/complete.c Wed Feb 14 07:47:18 2001
--- readline-4.2a/complete.c Mon Oct 15 14:31:41 2001
***************
*** 68,75 ****
#endif
/* Most systems don't declare getpwent in if _POSIX_SOURCE is
defined. */
#if !defined (HAVE_GETPW_DECLS) || defined (_POSIX_SOURCE)
! extern struct passwd *getpwent __P((void));
#endif /* !HAVE_GETPW_DECLS || _POSIX_SOURCE */
--- 68,84 ----
#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 if _POSIX_SOURCE is
defined. */
#if !defined (HAVE_GETPW_DECLS) || defined (_POSIX_SOURCE)
! extern struct passwd *getpwent PARAMS((void));
#endif /* !HAVE_GETPW_DECLS || _POSIX_SOURCE */
***************
*** 87,101 ****
# define X_OK 1
# endif
! static int stat_char __P((char *));
#endif
! static char *rl_quote_filename __P((char *, int, char *));
! 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 *));
/* **************************************************************** */
--- 96,121 ----
# define X_OK 1
# endif
! static int stat_char PARAMS((char *));
#endif
! 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 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 **));
/* **************************************************************** */
***************
*** 124,127 ****
--- 144,151 ----
#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. */
***************
*** 388,392 ****
temp = rl_filename_completion_desired ? strrchr (pathname, '/') : (char *)NULL;
#if defined (__MSDOS__)
! if (rl_filename_completion_desired && temp == 0 && isalpha (pathname[0]) && pathname[1] == ':')
temp = pathname + 1;
#endif
--- 412,416 ----
temp = rl_filename_completion_desired ? strrchr (pathname, '/') : (char *)NULL;
#if defined (__MSDOS__)
! if (rl_filename_completion_desired && temp == 0 && ISALPHA ((unsigned char)pathname[0]) && pathname[1] == ':')
temp = pathname + 1;
#endif
***************
*** 462,466 ****
slen = strlen (s);
tlen = strlen (to_print);
! new_full_pathname = xmalloc (slen + tlen + 2);
strcpy (new_full_pathname, s);
new_full_pathname[slen] = '/';
--- 486,490 ----
slen = strlen (s);
tlen = strlen (to_print);
! new_full_pathname = (char *)xmalloc (slen + tlen + 2);
strcpy (new_full_pathname, s);
new_full_pathname[slen] = '/';
***************
*** 497,501 ****
char *r;
! r = xmalloc (strlen (s) + 2);
*r = *rl_completer_quote_characters;
strcpy (r + 1, s);
--- 521,525 ----
char *r;
! r = (char *)xmalloc (strlen (s) + 2);
*r = *rl_completer_quote_characters;
strcpy (r + 1, s);
***************
*** 508,512 ****
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
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.
--- 532,536 ----
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
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.
***************
*** 798,808 ****
if (low == 0 && text && *text)
{
! match_list[0] = 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][low] = '\0';
}
--- 822,859 ----
if (low == 0 && text && *text)
{
! match_list[0] = (char *)xmalloc (strlen (text) + 1);
strcpy (match_list[0], text);
}
else
{
! 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';
}
***************
*** 1103,1114 ****
should be marked by a trailing `/', append one of those instead. The
default trailing character is a space. Returns the number of characters
! appended. */
static int
! append_to_match (text, delimiter, quote_char)
char *text;
! int delimiter, quote_char;
{
char temp_string[4], *filename;
! int temp_string_index;
struct stat finfo;
--- 1154,1167 ----
should be marked by a trailing `/', append one of those instead. The
default trailing character is a space. Returns the number of characters
! 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, nontrivial_match)
char *text;
! int delimiter, quote_char, nontrivial_match;
{
char temp_string[4], *filename;
! int temp_string_index, s;
struct stat finfo;
***************
*** 1127,1135 ****
{
filename = tilde_expand (text);
! if (stat (filename, &finfo) == 0 && S_ISDIR (finfo.st_mode))
{
if (_rl_complete_mark_directories && rl_line_buffer[rl_point] != '/')
rl_insert_text ("/");
}
else
{
--- 1180,1196 ----
{
filename = tilde_expand (text);
! 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
{
***************
*** 1211,1215 ****
char **matches;
rl_compentry_func_t *our_func;
! int start, end, delimiter, found_quote, i;
char *text, *saved_line_buffer;
char quote_char;
--- 1272,1276 ----
char **matches;
rl_compentry_func_t *our_func;
! int start, end, delimiter, found_quote, i, nontrivial_lcd;
char *text, *saved_line_buffer;
char quote_char;
***************
*** 1241,1244 ****
--- 1302,1308 ----
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);
***************
*** 1292,1296 ****
}
else
! append_to_match (matches[0], delimiter, quote_char);
break;
--- 1356,1360 ----
}
else
! append_to_match (matches[0], delimiter, quote_char, nontrivial_lcd);
break;
***************
*** 1429,1433 ****
else
{
! value = xmalloc (2 + strlen (entry->pw_name));
*value = *text;
--- 1493,1497 ----
else
{
! value = (char *)xmalloc (2 + strlen (entry->pw_name));
*value = *text;
***************
*** 1484,1488 ****
#if defined (__MSDOS__)
/* special hack for //X/... */
! if (dirname[0] == '/' && dirname[1] == '/' && isalpha (dirname[2]) && dirname[3] == '/')
temp = strrchr (dirname + 3, '/');
#endif
--- 1548,1552 ----
#if defined (__MSDOS__)
/* special hack for //X/... */
! if (dirname[0] == '/' && dirname[1] == '/' && ISALPHA ((unsigned char)dirname[2]) && dirname[3] == '/')
temp = strrchr (dirname + 3, '/');
#endif
***************
*** 1495,1499 ****
#if defined (__MSDOS__)
/* searches from current directory on the drive */
! else if (isalpha (dirname[0]) && dirname[1] == ':')
{
strcpy (filename, dirname + 2);
--- 1559,1563 ----
#if defined (__MSDOS__)
/* searches from current directory on the drive */
! else if (ISALPHA ((unsigned char)dirname[0]) && dirname[1] == ':')
{
strcpy (filename, dirname + 2);
***************
*** 1545,1552 ****
while (directory && (entry = readdir (directory)))
{
! /* Special case for no filename.
! All entries except "." and ".." match. */
if (filename_len == 0)
{
if (entry->d_name[0] != '.' ||
(entry->d_name[1] &&
--- 1609,1620 ----
while (directory && (entry = readdir (directory)))
{
! /* 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] &&
***************
*** 1608,1612 ****
{
dirlen = strlen (dirname);
! temp = xmalloc (2 + dirlen + D_NAMLEN (entry));
strcpy (temp, dirname);
/* Canonicalization cuts off any final slash present. We
--- 1676,1680 ----
{
dirlen = strlen (dirname);
! temp = (char *)xmalloc (2 + dirlen + D_NAMLEN (entry));
strcpy (temp, dirname);
/* Canonicalization cuts off any final slash present. We
***************
*** 1621,1625 ****
{
dirlen = strlen (users_dirname);
! temp = xmalloc (2 + dirlen + D_NAMLEN (entry));
strcpy (temp, users_dirname);
/* Make sure that temp has a trailing slash here. */
--- 1689,1693 ----
{
dirlen = strlen (users_dirname);
! temp = (char *)xmalloc (2 + dirlen + D_NAMLEN (entry));
strcpy (temp, users_dirname);
/* Make sure that temp has a trailing slash here. */
***************
*** 1746,1750 ****
{
insert_match (matches[match_list_index], orig_start, SINGLE_MATCH, "e_char);
! append_to_match (matches[match_list_index], delimiter, quote_char);
}
--- 1814,1819 ----
{
insert_match (matches[match_list_index], orig_start, SINGLE_MATCH, "e_char);
! append_to_match (matches[match_list_index], delimiter, quote_char,
! strcmp (orig_text, matches[match_list_index]));
}
diff -Nrc2 readline-4.2/config.h.in readline-4.2a/config.h.in
*** readline-4.2/config.h.in Wed Feb 7 13:31:08 2001
--- readline-4.2a/config.h.in Mon Oct 29 10:21:04 2001
***************
*** 7,10 ****
--- 7,17 ----
#undef RETSIGTYPE
+ /* Characteristics of the compiler. */
+ #undef const
+
+ #undef size_t
+
+ #undef ssize_t
+
/* Define if the `S_IS*' macros in do not work properly. */
#undef STAT_MACROS_BROKEN
***************
*** 12,15 ****
--- 19,28 ----
#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
***************
*** 27,39 ****
#undef HAVE_SETENV
/* 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 tcgetattr function. */
#undef HAVE_TCGETATTR
/* Define if you have the strcoll function. */
#undef HAVE_STRCOLL
--- 40,58 ----
#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 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
***************
*** 53,56 ****
--- 72,78 ----
#undef HAVE_STRING_H
+ /* Define if you have the header file. */
+ #undef HAVE_STRINGS_H
+
/* Define if you have the header file. */
#undef HAVE_SYS_DIR_H
***************
*** 93,96 ****
--- 115,122 ----
#undef HAVE_LOCALE_H
+
+ #undef HAVE_LIMITS_H
+
+ #undef HAVE_MEMORY_H
/* Definitions pulled in from aclocal.m4. */
diff -Nrc2 readline-4.2/configure readline-4.2a/configure
*** readline-4.2/configure Mon Apr 2 15:56:02 2001
--- readline-4.2a/configure Mon Nov 12 11:49:27 2001
***************
*** 1,132 ****
#! /bin/sh
! # From configure.in for Readline 4.2, version 2.26, from autoconf version 2.13
! LIBVERSION=4.2
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
- # 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=
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"
# Initialize some variables set by options.
# The variables have the same names as the options, with
# dashes changed to underlines.
! build=NONE
! cache_file=./config.cache
exec_prefix=NONE
- host=NONE
no_create=
- nonopt=NONE
no_recursion=
prefix=NONE
--- 1,157 ----
#! /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 .
+ #
+ # 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.
! # 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
#
! # Initializations.
! #
ac_default_prefix=/usr/local
! 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
! #if HAVE_SYS_TYPES_H
! # include
! #endif
! #if HAVE_SYS_STAT_H
! # include
! #endif
! #if STDC_HEADERS
! # include
! # include
! #else
! # if HAVE_STDLIB_H
! # include
! # endif
! #endif
! #if HAVE_STRING_H
! # if !STDC_HEADERS && HAVE_MEMORY_H
! # include
! # endif
! # include
! #endif
! #if HAVE_STRINGS_H
! # include
! #endif
! #if HAVE_INTTYPES_H
! # include
! #else
! # if HAVE_STDINT_H
! # include
! # endif
! #endif
! #if HAVE_UNISTD_H
! # include
! #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.
! cache_file=/dev/null
exec_prefix=NONE
no_create=
no_recursion=
prefix=NONE
***************
*** 137,144 ****
site=
srcdir=
- target=NONE
verbose=
x_includes=NONE
x_libraries=NONE
bindir='${exec_prefix}/bin'
sbindir='${exec_prefix}/sbin'
--- 162,174 ----
site=
srcdir=
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'
***************
*** 154,168 ****
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
ac_prev=
for ac_option
do
-
# If the previous option needs an argument, assign it.
if test -n "$ac_prev"; then
--- 184,197 ----
mandir='${prefix}/man'
! # 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
***************
*** 172,193 ****
fi
! case "$ac_option" in
! -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
! *) ac_optarg= ;;
! esac
# Accept the important Cygnus configure options, so we can diagnose typos.
! case "$ac_option" in
-bindir | --bindir | --bindi | --bind | --bin | --bi)
ac_prev=bindir ;;
-bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
! bindir="$ac_optarg" ;;
-build | --build | --buil | --bui | --bu)
! ac_prev=build ;;
-build=* | --build=* | --buil=* | --bui=* | --bu=*)
! build="$ac_optarg" ;;
-cache-file | --cache-file | --cache-fil | --cache-fi \
--- 201,219 ----
fi
! ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
# Accept the important Cygnus configure options, so we can diagnose typos.
! case $ac_option in
-bindir | --bindir | --bindi | --bind | --bin | --bi)
ac_prev=bindir ;;
-bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
! bindir=$ac_optarg ;;
-build | --build | --buil | --bui | --bu)
! ac_prev=build_alias ;;
-build=* | --build=* | --buil=* | --bui=* | --bu=*)
! build_alias=$ac_optarg ;;
-cache-file | --cache-file | --cache-fil | --cache-fi \
***************
*** 196,200 ****
-cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
| --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
! cache_file="$ac_optarg" ;;
-datadir | --datadir | --datadi | --datad | --data | --dat | --da)
--- 222,229 ----
-cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
| --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
! cache_file=$ac_optarg ;;
!
! --config-cache | -C)
! cache_file=config.cache ;;
-datadir | --datadir | --datadi | --datad | --data | --dat | --da)
***************
*** 202,228 ****
-datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
| --da=*)
! datadir="$ac_optarg" ;;
-disable-* | --disable-*)
! ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
# Reject names that are not valid shell variable names.
! if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
! { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
! fi
! ac_feature=`echo $ac_feature| sed 's/-/_/g'`
! eval "enable_${ac_feature}=no" ;;
-enable-* | --enable-*)
! ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
# Reject names that are not valid shell variable names.
! if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
! { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
! fi
! ac_feature=`echo $ac_feature| sed 's/-/_/g'`
! case "$ac_option" in
! *=*) ;;
*) ac_optarg=yes ;;
esac
! eval "enable_${ac_feature}='$ac_optarg'" ;;
-exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
--- 231,257 ----
-datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
| --da=*)
! datadir=$ac_optarg ;;
-disable-* | --disable-*)
! ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
# Reject names that are not valid shell variable names.
! 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=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
# Reject names that are not valid shell variable names.
! 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'" ;;
-exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
***************
*** 233,237 ****
| --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
| --exec=* | --exe=* | --ex=*)
! exec_prefix="$ac_optarg" ;;
-gas | --gas | --ga | --g)
--- 262,266 ----
| --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
| --exec=* | --exe=* | --ex=*)
! exec_prefix=$ac_optarg ;;
-gas | --gas | --ga | --g)
***************
*** 239,301 ****
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 ;;
-host | --host | --hos | --ho)
! ac_prev=host ;;
-host=* | --host=* | --hos=* | --ho=*)
! host="$ac_optarg" ;;
-includedir | --includedir | --includedi | --included | --include \
--- 268,282 ----
with_gas=yes ;;
! -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_alias ;;
-host=* | --host=* | --hos=* | --ho=*)
! host_alias=$ac_optarg ;;
-includedir | --includedir | --includedi | --included | --include \
***************
*** 304,318 ****
-includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
| --includ=* | --inclu=* | --incl=* | --inc=*)
! includedir="$ac_optarg" ;;
-infodir | --infodir | --infodi | --infod | --info | --inf)
ac_prev=infodir ;;
-infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
! infodir="$ac_optarg" ;;
-libdir | --libdir | --libdi | --libd)
ac_prev=libdir ;;
-libdir=* | --libdir=* | --libdi=* | --libd=*)
! libdir="$ac_optarg" ;;
-libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
--- 285,299 ----
-includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
| --includ=* | --inclu=* | --incl=* | --inc=*)
! includedir=$ac_optarg ;;
-infodir | --infodir | --infodi | --infod | --info | --inf)
ac_prev=infodir ;;
-infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
! infodir=$ac_optarg ;;
-libdir | --libdir | --libdi | --libd)
ac_prev=libdir ;;
-libdir=* | --libdir=* | --libdi=* | --libd=*)
! libdir=$ac_optarg ;;
-libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
***************
*** 321,325 ****
-libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
| --libexe=* | --libex=* | --libe=*)
! libexecdir="$ac_optarg" ;;
-localstatedir | --localstatedir | --localstatedi | --localstated \
--- 302,306 ----
-libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
| --libexe=* | --libex=* | --libe=*)
! libexecdir=$ac_optarg ;;
-localstatedir | --localstatedir | --localstatedi | --localstated \
***************
*** 330,339 ****
| --localstate=* | --localstat=* | --localsta=* | --localst=* \
| --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
! localstatedir="$ac_optarg" ;;
-mandir | --mandir | --mandi | --mand | --man | --ma | --m)
ac_prev=mandir ;;
-mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
! mandir="$ac_optarg" ;;
-nfp | --nfp | --nf)
--- 311,320 ----
| --localstate=* | --localstat=* | --localsta=* | --localst=* \
| --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
! localstatedir=$ac_optarg ;;
-mandir | --mandir | --mandi | --mand | --man | --ma | --m)
ac_prev=mandir ;;
-mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
! mandir=$ac_optarg ;;
-nfp | --nfp | --nf)
***************
*** 356,365 ****
| --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
| --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
! oldincludedir="$ac_optarg" ;;
-prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
ac_prev=prefix ;;
-prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
! prefix="$ac_optarg" ;;
-program-prefix | --program-prefix | --program-prefi | --program-pref \
--- 337,346 ----
| --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
| --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
! oldincludedir=$ac_optarg ;;
-prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
ac_prev=prefix ;;
-prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
! prefix=$ac_optarg ;;
-program-prefix | --program-prefix | --program-prefi | --program-pref \
***************
*** 368,372 ****
-program-prefix=* | --program-prefix=* | --program-prefi=* \
| --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
! program_prefix="$ac_optarg" ;;
-program-suffix | --program-suffix | --program-suffi | --program-suff \
--- 349,353 ----
-program-prefix=* | --program-prefix=* | --program-prefi=* \
| --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
! program_prefix=$ac_optarg ;;
-program-suffix | --program-suffix | --program-suffi | --program-suff \
***************
*** 375,379 ****
-program-suffix=* | --program-suffix=* | --program-suffi=* \
| --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
! program_suffix="$ac_optarg" ;;
-program-transform-name | --program-transform-name \
--- 356,360 ----
-program-suffix=* | --program-suffix=* | --program-suffi=* \
| --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
! program_suffix=$ac_optarg ;;
-program-transform-name | --program-transform-name \
***************
*** 392,396 ****
| --program-trans=* | --program-tran=* \
| --progr-tra=* | --program-tr=* | --program-t=*)
! program_transform_name="$ac_optarg" ;;
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
--- 373,377 ----
| --program-trans=* | --program-tran=* \
| --progr-tra=* | --program-tr=* | --program-t=*)
! program_transform_name=$ac_optarg ;;
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
***************
*** 402,406 ****
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
| --sbi=* | --sb=*)
! sbindir="$ac_optarg" ;;
-sharedstatedir | --sharedstatedir | --sharedstatedi \
--- 383,387 ----
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
| --sbi=* | --sb=*)
! sbindir=$ac_optarg ;;
-sharedstatedir | --sharedstatedir | --sharedstatedi \
***************
*** 413,427 ****
| --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
| --sha=* | --sh=*)
! sharedstatedir="$ac_optarg" ;;
-site | --site | --sit)
ac_prev=site ;;
-site=* | --site=* | --sit=*)
! site="$ac_optarg" ;;
-srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
ac_prev=srcdir ;;
-srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
! srcdir="$ac_optarg" ;;
-sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
--- 394,408 ----
| --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
| --sha=* | --sh=*)
! sharedstatedir=$ac_optarg ;;
-site | --site | --sit)
ac_prev=site ;;
-site=* | --site=* | --sit=*)
! site=$ac_optarg ;;
-srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
ac_prev=srcdir ;;
-srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
! srcdir=$ac_optarg ;;
-sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
***************
*** 430,468 ****
-sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
| --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
! sysconfdir="$ac_optarg" ;;
-target | --target | --targe | --targ | --tar | --ta | --t)
! ac_prev=target ;;
-target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
! target="$ac_optarg" ;;
-v | -verbose | --verbose | --verbos | --verbo | --verb)
verbose=yes ;;
! -version | --version | --versio | --versi | --vers)
! echo "configure generated by autoconf version 2.13"
! exit 0 ;;
-with-* | --with-*)
! ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
# Reject names that are not valid shell variable names.
! if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
! { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
! fi
ac_package=`echo $ac_package| sed 's/-/_/g'`
! case "$ac_option" in
! *=*) ;;
*) ac_optarg=yes ;;
esac
! eval "with_${ac_package}='$ac_optarg'" ;;
-without-* | --without-*)
! ac_package=`echo $ac_option|sed -e 's/-*without-//'`
# Reject names that are not valid shell variable names.
! if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
! { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
! fi
! ac_package=`echo $ac_package| sed 's/-/_/g'`
! eval "with_${ac_package}=no" ;;
--x)
--- 411,448 ----
-sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
| --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
! sysconfdir=$ac_optarg ;;
-target | --target | --targe | --targ | --tar | --ta | --t)
! ac_prev=target_alias ;;
-target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
! target_alias=$ac_optarg ;;
-v | -verbose | --verbose | --verbos | --verbo | --verb)
verbose=yes ;;
! -version | --version | --versio | --versi | --vers | -V)
! ac_init_version=: ;;
-with-* | --with-*)
! ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
# Reject names that are not valid shell variable names.
! 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
! *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
*) ac_optarg=yes ;;
esac
! eval "with_$ac_package='$ac_optarg'" ;;
-without-* | --without-*)
! ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
# Reject names that are not valid shell variable names.
! 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)
***************
*** 475,479 ****
-x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
| --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
! x_includes="$ac_optarg" ;;
-x-libraries | --x-libraries | --x-librarie | --x-librari \
--- 455,459 ----
-x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
| --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
! x_includes=$ac_optarg ;;
-x-libraries | --x-libraries | --x-librarie | --x-librari \
***************
*** 482,498 ****
-x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
| --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
! x_libraries="$ac_optarg" ;;
! -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
;;
*)
! if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
! echo "configure: warning: $ac_option: invalid host type" 1>&2
! fi
! if test "x$nonopt" != xNONE; then
! { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
! fi
! nonopt="$ac_option"
;;
--- 462,488 ----
-x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
| --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
! x_libraries=$ac_optarg ;;
! -*) { echo "$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 ;;
+
*)
! # 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}
;;
***************
*** 501,563 ****
if test -n "$ac_prev"; then
! { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
! fi
!
! trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
!
! # File descriptor usage:
! # 0 standard input
! # 1 file creation
! # 2 errors and warnings
! # 3 some systems may open it to /dev/tty
! # 4 used on the Kubota Titan
! # 6 checking for... messages and results
! # 5 compiler messages saved in config.log
! if test "$silent" = yes; then
! exec 6>/dev/null
! else
! exec 6>&1
fi
- exec 5>./config.log
! echo "\
! This file contains any messages produced by compilers while
! running configure, to aid debugging if configure makes a mistake.
! " 1>&5
! # Strip out --no-create and --no-recursion so they do not pile up.
! # Also quote any args containing shell metacharacters.
! ac_configure_args=
! for ac_arg
do
! case "$ac_arg" in
! -no-create | --no-create | --no-creat | --no-crea | --no-cre \
! | --no-cr | --no-c) ;;
! -no-recursion | --no-recursion | --no-recursio | --no-recursi \
! | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
! *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
! ac_configure_args="$ac_configure_args '$ac_arg'" ;;
! *) ac_configure_args="$ac_configure_args $ac_arg" ;;
esac
done
! # NLS nuisances.
! # Only set 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
! # confdefs.h avoids OS command line length limits that DEFS can exceed.
! rm -rf conftest* confdefs.h
! # AIX cpp loses on an empty file, so make sure it contains at least a newline.
! echo > confdefs.h
! # A filename unique to this package, relative to the directory that
! # configure is in, which we can look for to find out if srcdir is correct.
! ac_unique_file=readline.h
# Find the source files, if location was not specified.
--- 491,543 ----
if test -n "$ac_prev"; then
! ac_option=--`echo $ac_prev | sed 's/_/-/g'`
! { echo "$as_me: error: missing argument to $ac_option" >&2
! { (exit 1); exit 1; }; }
fi
! # 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
! # Be sure to have absolute paths.
! for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
! localstatedir libdir includedir oldincludedir infodir mandir
do
! 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
! # 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
! ac_tool_prefix=
! test -n "$host_alias" && ac_tool_prefix=$host_alias-
! test "$silent" = yes && exec 6>/dev/null
# Find the source files, if location was not specified.
***************
*** 566,570 ****
# Try the directory containing this script, then its parent.
ac_prog=$0
! ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
srcdir=$ac_confdir
--- 546,550 ----
# Try the directory containing this script, then its parent.
ac_prog=$0
! ac_confdir=`echo "$ac_prog" | sed 's%[\\/][^\\/][^\\/]*$%%'`
test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
srcdir=$ac_confdir
***************
*** 577,793 ****
if test ! -r $srcdir/$ac_unique_file; then
if test "$ac_srcdir_defaulted" = yes; then
! { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
else
! { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
fi
fi
! srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
! # Prefer explicitly selected file to automatically selected ones.
! if test -z "$CONFIG_SITE"; then
! if test "x$prefix" != xNONE; then
! CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
! else
! CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
! fi
! fi
! for ac_site_file in $CONFIG_SITE; do
! if test -r "$ac_site_file"; then
! echo "loading site script $ac_site_file"
! . "$ac_site_file"
! fi
! done
! if test -r "$cache_file"; then
! echo "loading cache $cache_file"
! . $cache_file
! else
! echo "creating cache $cache_file"
! > $cache_file
! fi
! ac_ext=c
! # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
! ac_cpp='$CPP $CPPFLAGS'
! ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
! 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
! 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; }
! 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.
! # 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
! 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
! 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
! # We want these before the checks, so the checks can modify their values.
! test -z "$CFLAGS" && CFLAGS=-g auto_cflags=1
- 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
fi
! rm -f conftestmake
fi
if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
! echo "$ac_t""yes" 1>&6
SET_MAKE=
else
! echo "$ac_t""no" 1>&6
SET_MAKE="MAKE=${MAKE-make}"
fi
! # Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
! echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
! 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
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"
fi
fi
! CC="$ac_cv_prog_CC"
if test -n "$CC"; then
! echo "$ac_t""$CC" 1>&6
else
! echo "$ac_t""no" 1>&6
fi
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
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"
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
# 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" "$@"
shift
ac_cv_prog_CC="$@"
--- 557,1295 ----
if test ! -r $srcdir/$ac_unique_file; then
if test "$ac_srcdir_defaulted" = yes; then
! { echo "$as_me: error: cannot find sources in $ac_confdir or .." >&2
! { (exit 1); exit 1; }; }
else
! { echo "$as_me: error: cannot find sources in $srcdir" >&2
! { (exit 1); exit 1; }; }
fi
fi
! 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
! #
! # 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 < if you have libraries in a
+ nonstandard directory
+ CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have
+ headers in a nonstandard directory
+ CPP C preprocessor
+
+ 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 .
+ EOF
+ fi
! 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 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
!
! 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 </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 <\?\"\']*)
! 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
!
! 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 "$as_me:1095: result: yes" >&5
! echo "${ECHO_T}yes" >&6
SET_MAKE=
else
! echo "$as_me:1099: result: no" >&5
! echo "${ECHO_T}no" >&6
SET_MAKE="MAKE=${MAKE-make}"
fi
! 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 "$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
! 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
if test -n "$CC"; then
! 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
! 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 "$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
ac_prog_rejected=no
! 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 $# != 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" ${1+"$@"}
shift
ac_cv_prog_CC="$@"
***************
*** 796,936 ****
fi
fi
! CC="$ac_cv_prog_CC"
if test -n "$CC"; then
! echo "$ac_t""$CC" 1>&6
else
! echo "$ac_t""no" 1>&6
fi
! 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
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"
fi
fi
! CC="$ac_cv_prog_CC"
if test -n "$CC"; then
! echo "$ac_t""$CC" 1>&6
else
! echo "$ac_t""no" 1>&6
fi
! ;;
! esac
! fi
! test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
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
! 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
! cat > conftest.$ac_ext << EOF
! #line 855 "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
else
! ac_cv_prog_cc_cross=yes
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 <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
! ac_cv_prog_gcc=yes
else
! ac_cv_prog_gcc=no
! fi
! fi
! echo "$ac_t""$ac_cv_prog_gcc" 1>&6
! if test $ac_cv_prog_gcc = yes; then
! GCC=yes
else
! GCC=
! fi
! 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
else
! echo 'void f(){}' > conftest.c
! if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
ac_cv_prog_cc_g=yes
else
! ac_cv_prog_cc_g=no
fi
! rm -f conftest*
!
fi
!
! echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
if test "$ac_test_CFLAGS" = set; then
! CFLAGS="$ac_save_CFLAGS"
elif test $ac_cv_prog_cc_g = yes; then
if test "$GCC" = yes; then
--- 1298,1677 ----
fi
fi
! CC=$ac_cv_prog_CC
if test -n "$CC"; then
! echo "$as_me:1302: result: $CC" >&5
! echo "${ECHO_T}$CC" >&6
else
! echo "$as_me:1305: result: no" >&5
! echo "${ECHO_T}no" >&6
fi
! 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
! 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
if test -n "$CC"; then
! echo "$as_me:1339: result: $CC" >&5
! echo "${ECHO_T}$CC" >&6
else
! echo "$as_me:1342: result: no" >&5
! echo "${ECHO_T}no" >&6
fi
!
! 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
! 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
! test -n "$ac_ct_CC" && break
! done
!
! 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 &5\"") >&5
! (eval $ac_compiler --version &5) 2>&5
! ac_status=$?
! echo "$as_me:1404: \$? = $ac_status" >&5
! (exit $ac_status); }
! { (eval echo "$as_me:1406: \"$ac_compiler -v &5\"") >&5
! (eval $ac_compiler -v &5) 2>&5
! ac_status=$?
! echo "$as_me:1409: \$? = $ac_status" >&5
! (exit $ac_status); }
! { (eval echo "$as_me:1411: \"$ac_compiler -V &5\"") >&5
! (eval $ac_compiler -V &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"
! 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
! 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
fi
! 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
! { { 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"
! int
! main ()
! {
! ;
! 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
! 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
!
! ;
! 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
! 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
! echo "$as_me: failed program was:" >&5
! cat conftest.$ac_ext >&5
! ac_cv_prog_cc_g=no
fi
! rm -f conftest.$ac_objext conftest.$ac_ext
fi
! 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
elif test $ac_cv_prog_cc_g = yes; then
if test "$GCC" = yes; then
***************
*** 946,952 ****
fi
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
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
--- 1687,1808 ----
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 ' \
+ '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
+ $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
! 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
***************
*** 954,1074 ****
fi
if test -z "$CPP"; then
! if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
! echo $ac_n "(cached) $ac_c" 1>&6
else
! # This must be in double quotes, not single quotes, because CPP may get
! # substituted into the Makefile and "${CC-cc}" will confuse make.
! CPP="${CC-cc} -E"
# On the NeXT, cc -E runs the code through the compiler's parser,
! # not just through cpp.
! cat > conftest.$ac_ext <
! 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
:
else
! echo "$ac_err" >&5
! echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
! rm -rf conftest*
! CPP="${CC-cc} -E -traditional-cpp"
! cat > conftest.$ac_ext <
! 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
! :
else
! echo "$ac_err" >&5
! echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
! rm -rf conftest*
! CPP="${CC-cc} -nologo -E"
! cat > conftest.$ac_ext <
! 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
:
else
! echo "$ac_err" >&5
! echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
! rm -rf conftest*
! CPP=/lib/cpp
! fi
! rm -f conftest*
fi
! rm -f conftest*
fi
! rm -f conftest*
! ac_cv_prog_CPP="$CPP"
fi
! CPP="$ac_cv_prog_CPP"
else
! ac_cv_prog_CPP="$CPP"
fi
- echo "$ac_t""$CPP" 1>&6
! 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
else
! cat > conftest.$ac_ext <
! 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
cat conftest.$ac_ext >&5
! rm -rf conftest*
! eval "ac_cv_header_$ac_safe=no"
fi
! rm -f conftest*
fi
! if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
! echo "$ac_t""yes" 1>&6
MINIX=yes
else
! echo "$ac_t""no" 1>&6
! MINIX=
fi
if test "$MINIX" = yes; then
! cat >> confdefs.h <<\EOF
#define _POSIX_SOURCE 1
EOF
! cat >> confdefs.h <<\EOF
#define _POSIX_1_SOURCE 2
EOF
! cat >> confdefs.h <<\EOF
#define _MINIX 1
EOF
--- 1810,2055 ----
fi
if test -z "$CPP"; then
! if test "${ac_cv_prog_CPP+set}" = set; then
! echo $ECHO_N "(cached) $ECHO_C" >&6
else
! # 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. "Syntax error" is here to catch this case.
! cat >conftest.$ac_ext <<_ACEOF
! #line 1826 "configure"
#include "confdefs.h"
#include
! 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 "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
! # 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
! _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 "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
! # 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
! 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 "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
! # 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 1951 "configure"
! #include "confdefs.h"
! #include
! _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
! 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
! 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
! { { 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
! 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 <<_ACEOF
! #line 2006 "configure"
#include "confdefs.h"
#include
! _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
! ac_cv_header_minix_config_h=no
fi
! rm -f conftest.err conftest.$ac_ext
fi
! 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
! MINIX=
fi
if test "$MINIX" = yes; then
!
! cat >>confdefs.h <<\EOF
#define _POSIX_SOURCE 1
EOF
! cat >>confdefs.h <<\EOF
#define _POSIX_1_SOURCE 2
EOF
! cat >>confdefs.h <<\EOF
#define _MINIX 1
EOF
***************
*** 1076,1117 ****
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
else
ac_pattern="Autoconf.*'x'"
! cat > conftest.$ac_ext <
Autoconf TIOCGETP
! EOF
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 <
Autoconf TCGETA
! EOF
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
--- 2057,2093 ----
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_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 <<_ACEOF
! #line 2070 "configure"
#include "confdefs.h"
#include
Autoconf TIOCGETP
! _ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
egrep "$ac_pattern" >/dev/null 2>&1; then
ac_cv_prog_gcc_traditional=yes
else
ac_cv_prog_gcc_traditional=no
fi
rm -f conftest*
if test $ac_cv_prog_gcc_traditional = no; then
! cat >conftest.$ac_ext <<_ACEOF
! #line 2085 "configure"
#include "confdefs.h"
#include
Autoconf TCGETA
! _ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
egrep "$ac_pattern" >/dev/null 2>&1; then
ac_cv_prog_gcc_traditional=yes
fi
***************
*** 1120,1125 ****
fi
fi
!
! echo "$ac_t""$ac_cv_prog_gcc_traditional" 1>&6
if test $ac_cv_prog_gcc_traditional = yes; then
CC="$CC -traditional"
--- 2096,2101 ----
fi
fi
! 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"
***************
*** 1134,1152 ****
# IRIX /sbin/install
# AIX /bin/install
# 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
if test -z "$INSTALL"; then
! if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
! echo $ac_n "(cached) $ac_c" 1>&6
else
! IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":"
for ac_dir in $PATH; do
# Account for people who put trailing slashes in PATH elements.
! case "$ac_dir/" in
! /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
*)
# OSF1 and SCO ODT 3.0 have their own names for install.
--- 2110,2132 ----
# 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 "$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 test "${ac_cv_path_install+set}" = set; then
! echo $ECHO_N "(cached) $ECHO_C" >&6
else
! 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
! / | ./ | .// | /cC/* \
! | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \
! | /usr/ucb/* ) ;;
*)
# OSF1 and SCO ODT 3.0 have their own names for install.
***************
*** 1154,1162 ****
# by default.
for ac_prog in ginstall scoinst install; do
! if test -f $ac_dir/$ac_prog; then
if test $ac_prog = install &&
! grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
# AIX install. It has an incompatible calling convention.
:
else
ac_cv_path_install="$ac_dir/$ac_prog -c"
--- 2134,2146 ----
# by default.
for ac_prog in ginstall scoinst install; do
! 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
# 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"
***************
*** 1168,1176 ****
esac
done
- IFS="$ac_save_IFS"
fi
if test "${ac_cv_path_install+set}" = set; then
! INSTALL="$ac_cv_path_install"
else
# As a last resort, use the slow shell script. We don't cache a
--- 2152,2159 ----
esac
done
fi
if test "${ac_cv_path_install+set}" = set; then
! INSTALL=$ac_cv_path_install
else
# As a last resort, use the slow shell script. We don't cache a
***************
*** 1178,1185 ****
# break other packages using the cache if that directory is
# removed, or if the path is relative.
! INSTALL="$ac_install_sh"
fi
fi
! echo "$ac_t""$INSTALL" 1>&6
# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
--- 2161,2169 ----
# break other packages using the cache if that directory is
# removed, or if the path is relative.
! INSTALL=$ac_install_sh
fi
fi
! echo "$as_me:2166: result: $INSTALL" >&5
! echo "${ECHO_T}$INSTALL" >&6
# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
***************
*** 1187,1191 ****
test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
! test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
--- 2171,2175 ----
test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
! test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
***************
*** 1193,1270 ****
# 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
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"
fi
fi
! AR="$ac_cv_prog_AR"
if test -n "$AR"; then
! echo "$ac_t""$AR" 1>&6
else
! echo "$ac_t""no" 1>&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
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=":"
fi
fi
! RANLIB="$ac_cv_prog_RANLIB"
if test -n "$RANLIB"; then
! echo "$ac_t""$RANLIB" 1>&6
else
! echo "$ac_t""no" 1>&6
fi
MAKE_SHELL=/bin/sh
! 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
else
! cat > conftest.$ac_ext <
#include
#ifdef signal
! #undef signal
#endif
#ifdef __cplusplus
--- 2177,2499 ----
# Extract the first word of "ar", so it can be a program name with args.
set dummy ar; ac_word=$2
! 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
! 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
if test -n "$AR"; then
! echo "$as_me:2203: result: $AR" >&5
! echo "${ECHO_T}$AR" >&6
else
! echo "$as_me:2206: result: no" >&5
! echo "${ECHO_T}no" >&6
fi
test -n "$ARFLAGS" || ARFLAGS="cr"
! 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
! 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
if test -n "$RANLIB"; then
! echo "$as_me:2237: result: $RANLIB" >&5
! echo "${ECHO_T}$RANLIB" >&6
! else
! 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
+ #include
+ #include
+ #include
+ /* 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 "$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 <<_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
#include
#ifdef signal
! # undef signal
#endif
#ifdef __cplusplus
***************
*** 1274,1307 ****
#endif
! 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*
ac_cv_type_signal=void
else
! echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
! rm -rf conftest*
! ac_cv_type_signal=int
fi
rm -f conftest*
fi
! echo "$ac_t""$ac_cv_type_signal" 1>&6
! cat >> confdefs.h <&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
else
! cat > conftest.$ac_ext <
--- 2503,2837 ----
#endif
! int
! main ()
! {
int i;
! ;
! 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 "$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 <&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
! #include
! #include
! #include
!
! _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
! 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
!
! _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
! 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
!
! _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
! #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 <&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 <&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 <&5
! echo $ECHO_N "checking whether stat file-mode macros are broken... $ECHO_C" >&6
! if test "${ac_cv_header_stat_broken+set}" = set; then
! echo $ECHO_N "(cached) $ECHO_C" >&6
else
! cat >conftest.$ac_ext <<_ACEOF
! #line 2835 "configure"
#include "confdefs.h"
#include
***************
*** 1332,1342 ****
#endif
! EOF
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
--- 2862,2870 ----
#endif
! _ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
egrep "You lose" >/dev/null 2>&1; then
ac_cv_header_stat_broken=yes
else
ac_cv_header_stat_broken=no
fi
***************
*** 1344,1351 ****
fi
!
! echo "$ac_t""$ac_cv_header_stat_broken" 1>&6
if test $ac_cv_header_stat_broken = yes; then
! cat >> confdefs.h <<\EOF
#define STAT_MACROS_BROKEN 1
EOF
--- 2872,2880 ----
fi
! 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
#define STAT_MACROS_BROKEN 1
EOF
***************
*** 1354,1503 ****
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 <
#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"
! else
! echo "configure: failed program was:" >&5
! cat conftest.$ac_ext >&5
! rm -rf conftest*
! eval "ac_cv_header_dirent_$ac_safe=no"
! fi
! rm -f conftest*
! 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 <&6
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
else
! ac_save_LIBS="$LIBS"
LIBS="-ldir $LIBS"
! cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
! rm -rf conftest*
! eval "ac_cv_lib_$ac_lib_var=yes"
! else
! echo "configure: failed program was:" >&5
! cat conftest.$ac_ext >&5
! rm -rf conftest*
! eval "ac_cv_lib_$ac_lib_var=no"
! fi
! rm -f conftest*
! LIBS="$ac_save_LIBS"
!
! fi
! if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
! echo "$ac_t""yes" 1>&6
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
else
! ac_save_LIBS="$LIBS"
LIBS="-lx $LIBS"
! cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
! rm -rf conftest*
! eval "ac_cv_lib_$ac_lib_var=yes"
! else
! echo "configure: failed program was:" >&5
! cat conftest.$ac_ext >&5
! rm -rf conftest*
! eval "ac_cv_lib_$ac_lib_var=no"
! fi
! rm -f conftest*
! LIBS="$ac_save_LIBS"
!
! fi
! if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
! echo "$ac_t""yes" 1>&6
LIBS="$LIBS -lx"
- else
- echo "$ac_t""no" 1>&6
fi
fi
-
for ac_func in lstat memmove putenv select setenv setlocale \
! strcasecmp tcgetattr
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
else
! cat > conftest.$ac_ext <
/* Override any gcc2 internal prototype to avoid an error. */
/* 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() {
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
--- 2883,3077 ----
ac_header_dirent=no
! 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
#include <$ac_hdr>
!
! 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 "$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: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 <&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_check_lib_save_LIBS=$LIBS
LIBS="-ldir $LIBS"
! 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;
! }
! _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 "$as_me: failed program was:" >&5
! cat conftest.$ac_ext >&5
! ac_cv_lib_dir_opendir=no
! fi
! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
! LIBS=$ac_check_lib_save_LIBS
! fi
! 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"
fi
else
! 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_check_lib_save_LIBS=$LIBS
LIBS="-lx $LIBS"
! 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;
! }
! _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 "$as_me: failed program was:" >&5
! cat conftest.$ac_ext >&5
! ac_cv_lib_x_opendir=no
! fi
! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
! LIBS=$ac_check_lib_save_LIBS
! fi
! 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"
fi
fi
for ac_func in lstat memmove putenv select setenv setlocale \
! strcasecmp strpbrk tcgetattr vsnprintf isascii isxdigit
do
! 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 <<_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. */
#include
/* 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 ();
! 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
***************
*** 1506,1575 ****
choke me
#else
! $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"
- else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=no"
- fi
- rm -f conftest*
- 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 <&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
else
if test "$cross_compiling" = yes; then
ac_cv_func_strcoll_works=no
else
! cat > conftest.$ac_ext <
main ()
{
! exit (strcoll ("abc", "def") >= 0 ||
! strcoll ("ABC", "DEF") >= 0 ||
! strcoll ("123", "456") >= 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
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
fi
! rm -fr conftest*
fi
-
fi
!
! echo "$ac_t""$ac_cv_func_strcoll_works" 1>&6
if test $ac_cv_func_strcoll_works = yes; then
! cat >> confdefs.h <<\EOF
#define HAVE_STRCOLL 1
EOF
--- 3080,3168 ----
choke me
#else
! f = $ac_func;
#endif
! ;
! 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 "$as_me: failed program was:" >&5
! cat conftest.$ac_ext >&5
! eval "$as_ac_var=no"
! fi
! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
! fi
! 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 <&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 <<_ACEOF
! #line 3128 "configure"
#include "confdefs.h"
! $ac_includes_default
! int
main ()
{
! exit (strcoll ("abc", "def") >= 0 ||
! strcoll ("ABC", "DEF") >= 0 ||
! strcoll ("123", "456") >= 0)
! ;
! return 0;
}
! _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 "$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 -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
! 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
#define HAVE_STRCOLL 1
EOF
***************
*** 1577,1636 ****
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
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
! 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
cat conftest.$ac_ext >&5
! rm -rf conftest*
! eval "ac_cv_header_$ac_safe=no"
fi
! rm -f conftest*
fi
! if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
! echo "$ac_t""yes" 1>&6
! ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
! cat >> confdefs.h <&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
else
!
! cat > conftest.$ac_ext <
! int main() {
sigset_t ss;
--- 3170,3236 ----
fi
! 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
! 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_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
! eval "$as_ac_Header=no"
fi
! rm -f conftest.err conftest.$ac_ext
fi
! 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 <&5
! echo $ECHO_N "checking for type of signal functions... $ECHO_C" >&6
! if test "${bash_cv_signal_vintage+set}" = set; then
! echo $ECHO_N "(cached) $ECHO_C" >&6
else
!
! cat >conftest.$ac_ext <<_ACEOF
! #line 3229 "configure"
#include "confdefs.h"
#include
! int
! main ()
! {
sigset_t ss;
***************
*** 1639,1719 ****
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*
bash_cv_signal_vintage=posix
else
! echo "configure: failed program was:" >&5
! cat conftest.$ac_ext >&5
! rm -rf conftest*
!
! cat > conftest.$ac_ext <
! 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*
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 <
RETSIGTYPE foo() { }
! 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*
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
!
fi
! rm -f conftest*
!
fi
! rm -f conftest*
fi
! rm -f conftest*
fi
! echo "$ac_t""$bash_cv_signal_vintage" 1>&6
if test "$bash_cv_signal_vintage" = posix; then
! cat >> confdefs.h <<\EOF
#define HAVE_POSIX_SIGNALS 1
EOF
elif test "$bash_cv_signal_vintage" = "4.2bsd"; then
! cat >> confdefs.h <<\EOF
#define HAVE_BSD_SIGNALS 1
EOF
elif test "$bash_cv_signal_vintage" = svr3; then
! cat >> confdefs.h <<\EOF
#define HAVE_USG_SIGHOLD 1
EOF
--- 3239,3357 ----
sigaction(SIGINT, &sa, (struct sigaction *) 0);
sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0);
!
! ;
! 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 "$as_me: failed program was:" >&5
! cat conftest.$ac_ext >&5
!
! cat >conftest.$ac_ext <<_ACEOF
! #line 3264 "configure"
#include "confdefs.h"
#include
! int
! main ()
! {
int mask = sigmask(SIGINT);
sigsetmask(mask); sigblock(mask); sigpause(mask);
!
! ;
! return 0;
! }
! _ACEOF
! rm -f conftest.$ac_objext conftest$ac_exeext
! if { (eval echo "$as_me: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 "$as_me: failed program was:" >&5
! cat conftest.$ac_ext >&5
!
! cat >conftest.$ac_ext <<_ACEOF
! #line 3296 "configure"
#include "confdefs.h"
#include
RETSIGTYPE foo() { }
! int
! main ()
! {
int mask = sigmask(SIGINT);
sigset(SIGINT, foo); sigrelse(SIGINT);
sighold(SIGINT); sigpause(SIGINT);
!
! ;
! return 0;
! }
! _ACEOF
! rm -f conftest.$ac_objext conftest$ac_exeext
! if { (eval echo "$as_me: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 "$as_me: failed program was:" >&5
! cat conftest.$ac_ext >&5
! bash_cv_signal_vintage=v7
!
fi
! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
!
fi
! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
! 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
#define HAVE_POSIX_SIGNALS 1
EOF
elif test "$bash_cv_signal_vintage" = "4.2bsd"; then
! cat >>confdefs.h <<\EOF
#define HAVE_BSD_SIGNALS 1
EOF
elif test "$bash_cv_signal_vintage" = svr3; then
! cat >>confdefs.h <<\EOF
#define HAVE_USG_SIGHOLD 1
EOF
***************
*** 1721,1738 ****
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
else
if test "$cross_compiling" = yes; then
! echo "configure: warning: cannot check signal handling if cross compiling -- defaulting to no" 1>&2
bash_cv_must_reinstall_sighandlers=no
else
! cat > conftest.$ac_ext <&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 "$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 <<_ACEOF
! #line 3373 "configure"
#include "confdefs.h"
***************
*** 1780,1801 ****
}
! 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
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
fi
! rm -fr conftest*
fi
-
fi
! echo "$ac_t""$bash_cv_must_reinstall_sighandlers" 1>&6
if test $bash_cv_must_reinstall_sighandlers = yes; then
! cat >> confdefs.h <<\EOF
#define MUST_REINSTALL_SIGHANDLERS 1
EOF
--- 3417,3447 ----
}
! _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 "$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 -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
! 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
#define MUST_REINSTALL_SIGHANDLERS 1
EOF
***************
*** 1803,1820 ****
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
else
if test "$cross_compiling" = yes; then
! echo "configure: warning: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing" 1>&2
bash_cv_func_sigsetjmp=missing
else
! cat > conftest.$ac_ext <&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 "$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 <<_ACEOF
! #line 3463 "configure"
#include "confdefs.h"
***************
*** 1856,1877 ****
#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
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
fi
! rm -fr conftest*
fi
-
fi
! echo "$ac_t""$bash_cv_func_sigsetjmp" 1>&6
if test $bash_cv_func_sigsetjmp = present; then
! cat >> confdefs.h <<\EOF
#define HAVE_POSIX_SIGSETJMP 1
EOF
--- 3501,3531 ----
#endif
}
! _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 "$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 -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
! 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
#define HAVE_POSIX_SIGSETJMP 1
EOF
***************
*** 1879,1889 ****
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
else
! cat > conftest.$ac_ext <&5
! echo $ECHO_N "checking for lstat... $ECHO_C" >&6
! if test "${bash_cv_func_lstat+set}" = set; then
! echo $ECHO_N "(cached) $ECHO_C" >&6
else
! cat >conftest.$ac_ext <<_ACEOF
! #line 3541 "configure"
#include "confdefs.h"
***************
*** 1891,1913 ****
#include
! 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*
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
fi
! rm -f conftest*
fi
!
! echo "$ac_t""$bash_cv_func_lstat" 1>&6
if test $bash_cv_func_lstat = yes; then
! cat >> confdefs.h <<\EOF
#define HAVE_LSTAT 1
EOF
--- 3545,3580 ----
#include
! 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 "$as_me: failed program was:" >&5
! cat conftest.$ac_ext >&5
! bash_cv_func_lstat=no
fi
! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
! 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
#define HAVE_LSTAT 1
EOF
***************
*** 1915,1967 ****
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 <
! #ifdef HAVE_UNISTD_H
! # include
! #endif
! #include
!
! 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
else
if test "$cross_compiling" = yes; then
! echo "configure: warning: cannot check strcoll if cross compiling -- defaulting to no" 1>&2
bash_cv_func_strcoll_broken=no
else
! cat > conftest.$ac_ext <&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 "$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 <<_ACEOF
! #line 3596 "configure"
#include "confdefs.h"
***************
*** 2001,2022 ****
}
! 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
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
fi
! rm -fr conftest*
fi
-
fi
! echo "$ac_t""$bash_cv_func_strcoll_broken" 1>&6
if test $bash_cv_func_strcoll_broken = yes; then
! cat >> confdefs.h <<\EOF
#define STRCOLL_BROKEN 1
EOF
--- 3632,3662 ----
}
! _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 "$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 -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
! 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
#define STRCOLL_BROKEN 1
EOF
***************
*** 2024,2131 ****
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
else
! cat > conftest.$ac_ext <
! #include
! #ifdef signal
! #undef signal
! #endif
! #ifdef __cplusplus
! extern "C"
#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
else
! echo "configure: failed program was:" >&5
! cat conftest.$ac_ext >&5
! rm -rf conftest*
! bash_cv_void_sighandler=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
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
else
! cat > conftest.$ac_ext <
#include
! 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
else
! echo "configure: failed program was:" >&5
! cat conftest.$ac_ext >&5
! rm -rf conftest*
! bash_cv_tiocgwinsz_in_ioctl=no
fi
rm -f conftest*
fi
! echo "$ac_t""$bash_cv_tiocgwinsz_in_ioctl" 1>&6
! if test $bash_cv_tiocgwinsz_in_ioctl = yes; then
! cat >> confdefs.h <<\EOF
#define GWINSZ_IN_SYS_IOCTL 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
else
! cat > conftest.$ac_ext <
#include
! 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*
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
fi
! rm -f conftest*
fi
! echo "$ac_t""$bash_cv_tiocstat_in_ioctl" 1>&6
! if test $bash_cv_tiocstat_in_ioctl = yes; then
! cat >> confdefs.h <<\EOF
#define TIOCSTAT_IN_SYS_IOCTL 1
EOF
--- 3664,3908 ----
fi
! 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 <<_ACEOF
! #line 3672 "configure"
#include "confdefs.h"
+
#include
! #ifdef HAVE_UNISTD_H
! # include
#endif
! #include
!
! _ACEOF
! if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
! egrep "getpwuid" >/dev/null 2>&1; then
! bash_cv_getpw_declared=yes
else
! bash_cv_getpw_declared=no
fi
rm -f conftest*
+
fi
!
! 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 "$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
! #include
! #include
! 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
! #include
! #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 <<_ACEOF
! #line 3780 "configure"
#include "confdefs.h"
#include
#include
! #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
! 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
! 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
+ #include
+ #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 "$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 <<_ACEOF
! #line 3870 "configure"
#include "confdefs.h"
#include
#include
! int
! main ()
! {
int x = TIOCSTAT;
! ;
! 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 "$as_me: failed program was:" >&5
! cat conftest.$ac_ext >&5
! bash_cv_tiocstat_in_ioctl=no
fi
! rm -f conftest.$ac_objext conftest.$ac_ext
fi
! 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
***************
*** 2133,2165 ****
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
else
! cat > conftest.$ac_ext <
#include
! 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*
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
fi
! rm -f conftest*
fi
! echo "$ac_t""$bash_cv_fionread_in_ioctl" 1>&6
! if test $bash_cv_fionread_in_ioctl = yes; then
! cat >> confdefs.h <<\EOF
#define FIONREAD_IN_SYS_IOCTL 1
EOF
--- 3910,3956 ----
fi
! 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 <<_ACEOF
! #line 3918 "configure"
#include "confdefs.h"
#include
#include
! int
! main ()
! {
int x = FIONREAD;
! ;
! 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 "$as_me: failed program was:" >&5
! cat conftest.$ac_ext >&5
! bash_cv_fionread_in_ioctl=no
fi
! rm -f conftest.$ac_objext conftest.$ac_ext
fi
! 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
***************
*** 2167,2198 ****
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
else
! cat > conftest.$ac_ext <
! 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*
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
fi
! rm -f conftest*
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
#define SPEED_T_IN_SYS_TYPES 1
EOF
--- 3958,4003 ----
fi
! 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 <<_ACEOF
! #line 3966 "configure"
#include "confdefs.h"
#include
! int
! main ()
! {
speed_t x;
! ;
! 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 "$as_me: failed program was:" >&5
! cat conftest.$ac_ext >&5
! bash_cv_speed_t_in_sys_types=no
fi
! rm -f conftest.$ac_objext conftest.$ac_ext
fi
! 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
***************
*** 2200,2272 ****
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
else
! cat > conftest.$ac_ext <
#include
! 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*
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 <
#include
! 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*
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
fi
! rm -f conftest*
fi
! rm -f conftest*
fi
if test $bash_cv_struct_winsize_header = ioctl_h; then
! echo "$ac_t""sys/ioctl.h" 1>&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
#define STRUCT_WINSIZE_IN_TERMIOS 1
EOF
else
! echo "$ac_t""not found" 1>&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
else
! cat > conftest.$ac_ext <&5
! echo $ECHO_N "checking for struct winsize in sys/ioctl.h and termios.h... $ECHO_C" >&6
! if test "${bash_cv_struct_winsize_header+set}" = set; then
! echo $ECHO_N "(cached) $ECHO_C" >&6
else
! cat >conftest.$ac_ext <<_ACEOF
! #line 4013 "configure"
#include "confdefs.h"
#include
#include
! int
! main ()
! {
struct winsize x;
! ;
! 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 "$as_me: failed program was:" >&5
! cat conftest.$ac_ext >&5
! cat >conftest.$ac_ext <<_ACEOF
! #line 4042 "configure"
#include "confdefs.h"
#include
#include
! int
! main ()
! {
struct winsize x;
! ;
! 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 "$as_me: failed program was:" >&5
! cat conftest.$ac_ext >&5
! bash_cv_struct_winsize_header=other
fi
! rm -f conftest.$ac_objext conftest.$ac_ext
fi
! rm -f conftest.$ac_objext conftest.$ac_ext
fi
if test $bash_cv_struct_winsize_header = ioctl_h; then
! 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 "$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 "$as_me:4093: result: not found" >&5
! echo "${ECHO_T}not found" >&6
fi
! 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 <<_ACEOF
! #line 4103 "configure"
#include "confdefs.h"
***************
*** 2291,2315 ****
#endif /* HAVE_DIRENT_H */
! 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*
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
fi
! rm -f conftest*
fi
! echo "$ac_t""$bash_cv_dirent_has_dino" 1>&6
if test $bash_cv_dirent_has_dino = yes; then
! cat >> confdefs.h <<\EOF
#define STRUCT_DIRENT_HAS_D_INO 1
EOF
--- 4124,4162 ----
#endif /* HAVE_DIRENT_H */
! int
! main ()
! {
struct dirent d; int z; z = d.d_ino;
! ;
! 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 "$as_me: failed program was:" >&5
! cat conftest.$ac_ext >&5
! bash_cv_dirent_has_dino=no
fi
! rm -f conftest.$ac_objext conftest.$ac_ext
fi
! 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
#define STRUCT_DIRENT_HAS_D_INO 1
EOF
***************
*** 2317,2328 ****
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
else
! cat > conftest.$ac_ext <&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 <<_ACEOF
! #line 4172 "configure"
#include "confdefs.h"
***************
*** 2347,2371 ****
#endif /* HAVE_DIRENT_H */
! 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*
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
fi
! rm -f conftest*
fi
! echo "$ac_t""$bash_cv_dirent_has_d_fileno" 1>&6
if test $bash_cv_dirent_has_d_fileno = yes; then
! cat >> confdefs.h <<\EOF
#define STRUCT_DIRENT_HAS_D_FILENO 1
EOF
--- 4193,4231 ----
#endif /* HAVE_DIRENT_H */
! int
! main ()
! {
struct dirent d; int z; z = d.d_fileno;
! ;
! 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 "$as_me: failed program was:" >&5
! cat conftest.$ac_ext >&5
! bash_cv_dirent_has_d_fileno=no
fi
! rm -f conftest.$ac_objext conftest.$ac_ext
fi
! 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
#define STRUCT_DIRENT_HAS_D_FILENO 1
EOF
***************
*** 2373,2377 ****
fi
-
case "$host_os" in
aix*) prefer_curses=yes ;;
--- 4233,4236 ----
***************
*** 2381,2507 ****
_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
_bash_needmsg=
fi
! if eval "test \"`echo '$''{'bash_cv_termcap_lib'+set}'`\" = set"; then
! echo $ac_n "(cached) $ac_c" 1>&6
else
! echo $ac_n "checking for tgetent in -ltermcap""... $ac_c" 1>&6
! echo "configure: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
else
! ac_save_LIBS="$LIBS"
LIBS="-ltermcap $LIBS"
! cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
! rm -rf conftest*
! eval "ac_cv_lib_$ac_lib_var=yes"
! else
! echo "configure: failed program was:" >&5
! cat conftest.$ac_ext >&5
! rm -rf conftest*
! eval "ac_cv_lib_$ac_lib_var=no"
! fi
! rm -f conftest*
! LIBS="$ac_save_LIBS"
!
! fi
! if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
! echo "$ac_t""yes" 1>&6
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
! else
! ac_save_LIBS="$LIBS"
! LIBS="-lcurses $LIBS"
! cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
! rm -rf conftest*
! eval "ac_cv_lib_$ac_lib_var=yes"
else
! echo "configure: failed program was:" >&5
! cat conftest.$ac_ext >&5
! rm -rf conftest*
! eval "ac_cv_lib_$ac_lib_var=no"
! fi
! rm -f conftest*
! LIBS="$ac_save_LIBS"
! fi
! if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
! echo "$ac_t""yes" 1>&6
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
else
! ac_save_LIBS="$LIBS"
LIBS="-lncurses $LIBS"
! cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
! rm -rf conftest*
! eval "ac_cv_lib_$ac_lib_var=yes"
else
! echo "configure: failed program was:" >&5
! cat conftest.$ac_ext >&5
! rm -rf conftest*
! eval "ac_cv_lib_$ac_lib_var=no"
fi
- rm -f conftest*
- LIBS="$ac_save_LIBS"
fi
- if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- bash_cv_termcap_lib=libncurses
- else
- echo "$ac_t""no" 1>&6
- bash_cv_termcap_lib=gnutermcap
- fi
fi
--- 4240,4462 ----
_bash_needmsg=yes
else
! 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 test "${bash_cv_termcap_lib+set}" = set; then
! echo $ECHO_N "(cached) $ECHO_C" >&6
else
! 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_check_lib_save_LIBS=$LIBS
LIBS="-ltermcap $LIBS"
! 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;
! }
! _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 "$as_me: failed program was:" >&5
! cat conftest.$ac_ext >&5
! ac_cv_lib_termcap_tgetent=no
! fi
! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
! LIBS=$ac_check_lib_save_LIBS
! fi
! 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 "$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_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;
! }
! _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 "$as_me: failed program was:" >&5
! cat conftest.$ac_ext >&5
! ac_cv_lib_tinfo_tgetent=no
! fi
! 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
! 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 "$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_check_lib_save_LIBS=$LIBS
LIBS="-lncurses $LIBS"
! 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;
! }
! _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 "$as_me: failed program was:" >&5
! cat conftest.$ac_ext >&5
! ac_cv_lib_ncurses_tgetent=no
! fi
! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
! LIBS=$ac_check_lib_save_LIBS
! fi
! 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
! bash_cv_termcap_lib=gnutermcap
fi
fi
fi
***************
*** 2512,2519 ****
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
fi
! echo "$ac_t""using $bash_cv_termcap_lib" 1>&6
if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then
LDFLAGS="$LDFLAGS -L./lib/termcap"
--- 4467,4475 ----
if test "X$_bash_needmsg" = "Xyes"; then
! 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 "$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"
***************
*** 2523,2526 ****
--- 4479,4485 ----
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
***************
*** 2550,2569 ****
#
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
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
# shared library versioning
--- 4509,4518 ----
#
if test -f ${srcdir}/support/shobj-conf; then
! 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 "$as_me:4515: result: $SHLIB_STATUS" >&5
! echo "${ECHO_T}$SHLIB_STATUS" >&6
# shared library versioning
***************
*** 2571,2576 ****
SHLIB_MAJOR=`expr "$LIBVERSION" : '\([0-9]\)\..*'`
SHLIB_MINOR=`expr "$LIBVERSION" : '[0-9]\.\([0-9]\).*'`
!
!
fi
--- 4520,4524 ----
SHLIB_MAJOR=`expr "$LIBVERSION" : '\([0-9]\)\..*'`
SHLIB_MINOR=`expr "$LIBVERSION" : '[0-9]\.\([0-9]\).*'`
!
fi
***************
*** 2580,2617 ****
esac
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
! trap '' 1 2 15
! cat > confcache <<\EOF
# This file is a shell script that caches the results of configure
# tests run on this system so they can be shared between configure
! # scripts and configure runs. It is not useful on other systems.
! # If it contains results you don't want to keep, you may remove or edit it.
#
! # By default, configure uses ./config.cache as the cache file,
! # creating it if it does not exist already. You can give configure
! # the --cache-file=FILE option to use a different cache file; that is
! # what configure does when it calls configure scripts in
! # subdirectories, so they share the cache.
! # Giving --cache-file=/dev/null disables caching, for debugging configure.
! # config.status only pays attention to the cache file if you give it the
! # --recheck option to rerun configure.
#
! EOF
# The following way of writing the cache mishandles newlines in values,
# but we know of no workaround that is simple, portable, and efficient.
--- 4528,4549 ----
esac
! 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, 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.
#
! # config.status only pays attention to the cache file if you give it
! # the --recheck option to rerun configure.
#
! # `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.
***************
*** 2619,2642 ****
# 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
if test -w $cache_file; then
! echo "updating cache $cache_file"
! cat confcache > $cache_file
else
echo "not updating unwritable cache $cache_file"
--- 4551,4582 ----
# 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 \
! "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
! test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
! cat confcache >$cache_file
else
echo "not updating unwritable cache $cache_file"
***************
*** 2645,2867 ****
rm -f confcache
- trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
test "x$prefix" = xNONE && prefix=$ac_default_prefix
# Let make expand exec_prefix.
test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
! # Any assignment to VPATH causes Sun make to only execute
! # the first set of double-colon rules, so remove it if not needed.
! # If there is a colon in the path, we need to keep it.
if test "x$srcdir" = x.; then
! ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'
fi
- trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
-
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 </dev/null | sed 1q`:
- #
- # $0 $ac_configure_args
- #
# Compiler output produced by configure, useful for debugging
! # configure, is in ./config.log if it exists.
! ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
! for ac_option
do
! case "\$ac_option" in
-recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
! echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
! exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
! -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
! echo "$CONFIG_STATUS generated by autoconf version 2.13"
! exit 0 ;;
! -help | --help | --hel | --he | --h)
! echo "\$ac_cs_usage"; exit 0 ;;
! *) echo "\$ac_cs_usage"; exit 1 ;;
esac
done
! ac_given_srcdir=$srcdir
! ac_given_INSTALL="$INSTALL"
! trap 'rm -fr `echo "Makefile doc/Makefile examples/Makefile shlib/Makefile config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
EOF
- cat >> $CONFIG_STATUS < 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
- 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"
else
! ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
fi
! ac_file=`expr $ac_file + 1`
! ac_beg=$ac_end
! ac_end=`expr $ac_end + $ac_max_sed_cmds`
fi
! done
! if test -z "$ac_sed_cmds"; then
! ac_sed_cmds=cat
! fi
! EOF
- cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF
! for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
# 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" ;;
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%/[^/][^/]*$%%'`
if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
! # The file is in a subdirectory.
! test ! -d "$ac_dir" && mkdir "$ac_dir"
! ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
# A "../" for each directory in $ac_dir_suffix.
! ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
else
ac_dir_suffix= ac_dots=
fi
! case "$ac_given_srcdir" in
! .) srcdir=.
! if test -z "$ac_dots"; then top_srcdir=.
! else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
! /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
*) # Relative path.
! srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
! top_srcdir="$ac_dots$ac_given_srcdir" ;;
esac
! case "$ac_given_INSTALL" in
! [/$]*) INSTALL="$ac_given_INSTALL" ;;
! *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
esac
! echo creating "$ac_file"
! rm -f "$ac_file"
! configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
! case "$ac_file" in
! *Makefile*) ac_comsub="1i\\
! # $configure_input" ;;
! *) ac_comsub= ;;
! esac
! 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*
# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
--- 4585,5154 ----
rm -f confcache
test "x$prefix" = xNONE && prefix=$ac_default_prefix
# Let make expand exec_prefix.
test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
! # 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[ ]*=/{
! s/:*\$(srcdir):*/:/;
! s/:*\${srcdir}:*/:/;
! s/:*@srcdir@:*/:/;
! s/^\([^=]*=[ ]*\):*/\1/;
! s/:*$//;
! s/^[^=]*=[ ]*$//;
! }'
fi
DEFS=-DHAVE_CONFIG_H
: ${CONFIG_STATUS=./config.status}
! 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.
# Compiler output produced by configure, useful for debugging
! # configure, is in config.log if it exists.
! 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 ."
! EOF
!
! cat >>$CONFIG_STATUS <>$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 $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 <>$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
! 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`
! _ACEOF
EOF
! 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 <\$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_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
! sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
! fi
! 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
! fi # test -n "$CONFIG_FILES"
EOF
! 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
! - | *:- | *:-:* ) # 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
! # 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
! { 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'`
else
ac_dir_suffix= ac_dots=
fi
! 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.
! ac_srcdir=$ac_dots$srcdir$ac_dir_suffix
! ac_top_srcdir=$ac_dots$srcdir ;;
esac
! case $INSTALL in
! [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
! *) ac_INSTALL=$ac_dots$INSTALL ;;
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 <>$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
! #
! # CONFIG_HEADER section.
! #
# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
***************
*** 2869,2988 ****
#
# 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_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 <> $CONFIG_STATUS <<\EOF
! fi
! for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
# 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" ;;
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
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
! EOF
! sed -n -f conftest.hdr confdefs.h > conftest.vals
! rm -f conftest.hdr
# 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]*%/* & */%
EOF
! # Break up conftest.vals because some shells have a limit on
! # the size of here documents, and old seds have small limits too.
!
rm -f conftest.tail
! while :
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 <> $CONFIG_STATUS
! sed ${ac_max_here_lines}q conftest.vals >> $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
! 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
else
! # Remove last slash and all that follows it. Not all systems have dirname.
! ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
! # The file is in a subdirectory.
! test ! -d "$ac_dir" && mkdir "$ac_dir"
fi
! rm -f $ac_file
! mv conftest.h $ac_file
fi
! fi; done
!
EOF
! cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF
# Makefile uses this timestamp file to record whether config.h is up to date.
echo > stamp-h
! 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
--- 5156,5404 ----
#
# ac_d sets the value in "#define NAME VALUE" lines.
! 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=',;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
! - | *:- | *:-:* ) # 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
! 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 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
! # 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.undefs <<\EOF
! s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
EOF
! # 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 <>$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 grep . conftest.undefs >/dev/null
do
! # Write a limited-size here document to $tmp/undefs.sed.
! echo ' cat >$tmp/undefs.sed <>$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 $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.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
! 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
! { 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
! else
! cat $tmp/config.h
! rm -f $tmp/config.h
fi
! done
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
+
+ cat >>$CONFIG_STATUS <<\EOF
! { (exit 0); exit 0; }
EOF
chmod +x $CONFIG_STATUS
! 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
diff -Nrc2 readline-4.2/configure.in readline-4.2a/configure.in
*** readline-4.2/configure.in Mon Apr 2 15:55:12 2001
--- readline-4.2a/configure.in Mon Oct 29 10:20:33 2001
***************
*** 5,18 ****
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_INIT(readline.h)
! AC_CONFIG_HEADER(config.h)
dnl make sure we are using a recent autoconf version
! AC_PREREQ(2.10)
AC_CONFIG_AUX_DIR(./support)
AC_CANONICAL_HOST
--- 5,21 ----
dnl
dnl Process this file with autoconf to produce a configure script.
! AC_REVISION([for Readline 4.2a, version 2.40, from autoconf version] AC_ACVERSION)
! AC_INIT(readline, 4.2a, bug-readline@gnu.org)
dnl make sure we are using a recent autoconf version
! 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
***************
*** 29,32 ****
--- 32,39 ----
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
***************
*** 42,46 ****
AC_PROG_GCC_TRADITIONAL
AC_PROG_INSTALL
! 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
--- 49,53 ----
AC_PROG_GCC_TRADITIONAL
AC_PROG_INSTALL
! 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
***************
*** 51,55 ****
AC_SUBST(MAKE_SHELL)
! AC_RETSIGTYPE
AC_HEADER_STAT
--- 58,68 ----
AC_SUBST(MAKE_SHELL)
! AC_C_CONST
! AC_C_PROTOTYPES
!
! AC_TYPE_SIGNAL
!
! AC_TYPE_SIZE_T
! AC_CHECK_TYPE(ssize_t, int)
AC_HEADER_STAT
***************
*** 57,81 ****
AC_CHECK_FUNCS(lstat memmove putenv select setenv setlocale \
! strcasecmp tcgetattr)
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)
! BASH_SIGNAL_CHECK
! BASH_REINSTALL_SIGHANDLERS
BASH_FUNC_POSIX_SETJMP
BASH_FUNC_LSTAT
- BASH_CHECK_GETPW_FUNCS
BASH_FUNC_STRCOLL
BASH_TYPE_SIGHANDLER
- BASH_HAVE_TIOCGWINSZ
BASH_HAVE_TIOCSTAT
BASH_HAVE_FIONREAD
! BASH_MISC_SPEED_T
BASH_STRUCT_WINSIZE
BASH_STRUCT_DIRENT_D_INO
--- 70,96 ----
AC_CHECK_FUNCS(lstat memmove putenv select setenv setlocale \
! strcasecmp strpbrk tcgetattr vsnprintf isascii isxdigit)
AC_FUNC_STRCOLL
! 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_SYS_SIGNAL_VINTAGE
! BASH_SYS_REINSTALL_SIGHANDLERS
BASH_FUNC_POSIX_SETJMP
BASH_FUNC_LSTAT
BASH_FUNC_STRCOLL
+ BASH_CHECK_GETPW_FUNCS
+
+ AC_HEADER_TIOCGWINSZ
+
BASH_TYPE_SIGHANDLER
BASH_HAVE_TIOCSTAT
BASH_HAVE_FIONREAD
! BASH_CHECK_SPEED_T
BASH_STRUCT_WINSIZE
BASH_STRUCT_DIRENT_D_INO
diff -Nrc2 readline-4.2/display.c readline-4.2a/display.c
*** readline-4.2/display.c Fri Feb 2 13:25:10 2001
--- readline-4.2a/display.c Tue Oct 30 16:11:44 2001
***************
*** 63,71 ****
#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 int *inv_lbreaks, *vis_lbreaks;
--- 63,71 ----
#endif
! 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;
***************
*** 203,207 ****
l = strlen (pmt);
! r = ret = xmalloc (l + 1);
invfl = 0; /* invisible chars in first line of prompt */
--- 203,207 ----
l = strlen (pmt);
! r = ret = (char *)xmalloc (l + 1);
invfl = 0; /* invisible chars in first line of prompt */
***************
*** 336,341 ****
if (line_size < minsize)
line_size = minsize;
! visible_line = xmalloc (line_size);
! invisible_line = xmalloc (line_size);
}
else if (line_size < minsize) /* ensure it can hold MINSIZE chars */
--- 336,341 ----
if (line_size < minsize)
line_size = minsize;
! visible_line = (char *)xmalloc (line_size);
! invisible_line = (char *)xmalloc (line_size);
}
else if (line_size < minsize) /* ensure it can hold MINSIZE chars */
***************
*** 344,349 ****
if (line_size < minsize)
line_size = minsize;
! visible_line = xrealloc (visible_line, line_size);
! invisible_line = xrealloc (invisible_line, line_size);
}
--- 344,349 ----
if (line_size < minsize)
line_size = minsize;
! visible_line = (char *)xrealloc (visible_line, line_size);
! invisible_line = (char *)xrealloc (invisible_line, line_size);
}
***************
*** 422,427 ****
{
line_size = (temp + 1024) - (temp % 1024);
! visible_line = xrealloc (visible_line, line_size);
! line = invisible_line = xrealloc (invisible_line, line_size);
}
strncpy (line + out, local_prompt, local_len);
--- 422,427 ----
{
line_size = (temp + 1024) - (temp % 1024);
! visible_line = (char *)xrealloc (visible_line, line_size);
! line = invisible_line = (char *)xrealloc (invisible_line, line_size);
}
strncpy (line + out, local_prompt, local_len);
***************
*** 456,461 ****
{
line_size = (temp + 1024) - (temp % 1024);
! visible_line = xrealloc (visible_line, line_size);
! line = invisible_line = xrealloc (invisible_line, line_size);
}
strncpy (line + out, prompt_this_line, pmtlen);
--- 456,461 ----
{
line_size = (temp + 1024) - (temp % 1024);
! visible_line = (char *)xrealloc (visible_line, line_size);
! line = invisible_line = (char *)xrealloc (invisible_line, line_size);
}
strncpy (line + out, prompt_this_line, pmtlen);
***************
*** 531,536 ****
{
line_size *= 2;
! visible_line = xrealloc (visible_line, line_size);
! invisible_line = xrealloc (invisible_line, line_size);
line = invisible_line;
}
--- 531,536 ----
{
line_size *= 2;
! visible_line = (char *)xrealloc (visible_line, line_size);
! invisible_line = (char *)xrealloc (invisible_line, line_size);
line = invisible_line;
}
***************
*** 1331,1335 ****
return (2);
! return ((isprint (uc)) ? 1 : 2);
}
--- 1331,1335 ----
return (2);
! return ((ISPRINT (uc)) ? 1 : 2);
}
***************
*** 1358,1362 ****
--- 1358,1367 ----
#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);
***************
*** 1371,1374 ****
--- 1376,1380 ----
{
sprintf (msg_buf, format, arg1, arg2);
+ msg_buf[sizeof(msg_buf) - 1] = '\0'; /* overflow? */
rl_display_prompt = msg_buf;
(*rl_redisplay_function) ();
***************
*** 1437,1441 ****
{
len = (rl_prompt && *rl_prompt) ? strlen (rl_prompt) : 0;
! pmt = xmalloc (len + 2);
if (len)
strcpy (pmt, rl_prompt);
--- 1443,1447 ----
{
len = (rl_prompt && *rl_prompt) ? strlen (rl_prompt) : 0;
! pmt = (char *)xmalloc (len + 2);
if (len)
strcpy (pmt, rl_prompt);
***************
*** 1446,1450 ****
{
len = *saved_local_prompt ? strlen (saved_local_prompt) : 0;
! pmt = xmalloc (len + 2);
if (len)
strcpy (pmt, saved_local_prompt);
--- 1452,1456 ----
{
len = *saved_local_prompt ? strlen (saved_local_prompt) : 0;
! pmt = (char *)xmalloc (len + 2);
if (len)
strcpy (pmt, saved_local_prompt);
diff -Nrc2 readline-4.2/doc/Makefile.in readline-4.2a/doc/Makefile.in
*** readline-4.2/doc/Makefile.in Tue Mar 6 09:05:46 2001
--- readline-4.2a/doc/Makefile.in Wed May 2 11:20:57 2001
***************
*** 28,35 ****
manpfx = man
! man1ext = 1
! man1dir = $(mandir)/$(manpfx)$(man1ext)
! man3ext = 3
! man3dir = $(mandir)/$(manpfx)$(man3ext)
SHELL = @MAKE_SHELL@
--- 28,41 ----
manpfx = man
! 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@
***************
*** 160,192 ****
installdirs: $(topdir)/support/mkdirs
! -$(SHELL) $(topdir)/support/mkdirs $(infodir) $(man3dir)
install: installdirs
if test -f readline.info; then \
! ${INSTALL_DATA} readline.info $(infodir)/readline.info; \
else \
! ${INSTALL_DATA} $(srcdir)/readline.info $(infodir)/readline.info; \
fi
if test -f rluserman.info; then \
! ${INSTALL_DATA} rluserman.info $(infodir)/rluserman.info; \
else \
! ${INSTALL_DATA} $(srcdir)/rluserman.info $(infodir)/rluserman.info; \
fi
if test -f history.info; then \
! ${INSTALL_DATA} history.info $(infodir)/history.info; \
else \
! ${INSTALL_DATA} $(srcdir)/history.info $(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 ; \
else true; fi
! -${INSTALL_DATA} $(srcdir)/readline.3 $(man3dir)/readline.3
! -${INSTALL_DATA} $(srcdir)/history.3 $(man3dir)/history.3
uninstall:
! $(RM) $(infodir)/readline.info
! $(RM) $(infodir)/rluserman.info
! $(RM) $(infodir)/history.info
! $(RM) $(man3dir)/readline.3
! $(RM) $(man3dir)/history.3
--- 166,227 ----
installdirs: $(topdir)/support/mkdirs
! -$(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 $(DESTDIR)$(infodir)/readline.info; \
else \
! ${INSTALL_DATA} $(srcdir)/readline.info $(DESTDIR)$(infodir)/readline.info; \
fi
if test -f rluserman.info; then \
! ${INSTALL_DATA} rluserman.info $(DESTDIR)$(infodir)/rluserman.info; \
else \
! ${INSTALL_DATA} $(srcdir)/rluserman.info $(DESTDIR)$(infodir)/rluserman.info; \
fi
if test -f history.info; then \
! ${INSTALL_DATA} history.info $(DESTDIR)$(infodir)/history.info; \
else \
! ${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=$(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 $(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) $(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
Binary files readline-4.2/doc/history.dvi and readline-4.2a/doc/history.dvi differ
diff -Nrc2 readline-4.2/doc/history.html readline-4.2a/doc/history.html
*** readline-4.2/doc/history.html Mon Apr 16 11:05:46 2001
--- readline-4.2a/doc/history.html Tue Oct 9 15:08:11 2001
***************
*** 1,124 ****
!
- GNU History Library
-
- GNU History Library
- Edition 4.2, for History Library
Version 4.2.
- Apr 2001
- Brian Fox, Free Software Foundation
- Chet Ramey, Case Western Reserve University
-
-
-
Table of Contents
-
-
!
This document describes the GNU History library, a programming tool that
provides a consistent user interface for recalling lines of previously
typed input.
!
!
! Published by the Free Software Foundation
! 59 Temple Place, Suite 330,
! Boston, MA 02111 USA
!
!
!
! Permission is granted to make and distribute verbatim copies of
! this manual provided the copyright notice and this permission notice
! are preserved on all copies.
!
!
!
! Permission is granted to copy and distribute modified versions of this
! manual under the conditions for verbatim copying, provided that the entire
! resulting derived work is distributed under the terms of a permission
! notice identical to this one.
!
!
- Permission is granted to copy and distribute translations of this manual
- into another language, under the above conditions for modified versions,
- except that this permission notice may be stated in a translation approved
- by the Free Software Foundation.
-
-
- Copyright (C) 1988-2001 Free Software Foundation, Inc.
-
-
-
-
-
-
-
-
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 Programming with GNU History.
!
!
!
!
!
!
!
-
-
-
The History library provides a history expansion feature that is similar
to the history expansion provided by csh
. This section
describes the syntax used to manipulate the history information.
-
-
History expansions introduce words from the history list into
the input stream, making it easy to repeat commands, insert the
arguments to a previous command into the current input line, or
fix errors in previous commands quickly.
-
-
History expansion takes place in two parts. The first is to determine
which line from the history list should be used during substitution.
--- 1,108 ----
+
+
+
! GNU History Library:
!
!
!
!
!
!
!
!
!
!
! GNU History Library
!
This document describes the GNU History library, a programming tool that
provides a consistent user interface for recalling lines of previously
typed input.
+
!
!
!
!
!
!
!
! 1. Using History Interactively
!
This chapter describes how to use the GNU History Library interactively,
from a user's standpoint. It should be considered a user's guide. For
information on using the GNU History Library in your own programs,
! see section 2. Programming with GNU History.
!
!
!
!
!
!
!
!
! 1.1 History Expansion
!
The History library provides a history expansion feature that is similar
to the history expansion provided by csh
. This section
describes the syntax used to manipulate the history information.
+
History expansions introduce words from the history list into
the input stream, making it easy to repeat commands, insert the
arguments to a previous command into the current input line, or
fix errors in previous commands quickly.
+
History expansion takes place in two parts. The first is to determine
which line from the history list should be used during substitution.
***************
*** 132,204 ****
History expansions are introduced by the appearance of the
history expansion character, which is `!' by default.
!
!
!
!
!
!
!
!
-
-
-
An event designator is a reference to a command line entry in the
history list.
!
-
!
! -
! Start a history substitution, except when followed by a space, tab,
the end of the line, `=' or `('.
!n
! -
! Refer to command line n.
!-n
! -
! Refer to the command n lines back.
!!
! -
! Refer to the previous command. This is a synonym for `!-1'.
!string
! -
! Refer to the most recent command starting with string.
!?string[?]
! -
! Refer to the most recent command containing string. The trailing
`?' may be omitted if the string is followed immediately by
a newline.
^string1^string2^
! -
! Quick Substitution. Repeat the last command, replacing string1
with string2. Equivalent to
!!:s/string1/string2/
.
!#
! -
! The entire command line typed so far.
!
!
!
!
Word designators are used to select desired words from the event.
A `:' separates the event specification from the word designator. It
--- 116,211 ----
History expansions are introduced by the appearance of the
history expansion character, which is `!' by default.
+
!
!
!
!
!
!
!
! 1.1.1 Event Designators
!
An event designator is a reference to a command line entry in the
history list.
!
!
!
! - Start a history substitution, except when followed by a space, tab,
the end of the line, `=' or `('.
+
!n
! - Refer to command line n.
!
!-n
! - Refer to the command n lines back.
!
!!
! - Refer to the previous command. This is a synonym for `!-1'.
!
!string
! - Refer to the most recent command starting with string.
!
!?string[?]
! - Refer to the most recent command containing string. The trailing
`?' may be omitted if the string is followed immediately by
a newline.
+
^string1^string2^
! - Quick Substitution. Repeat the last command, replacing string1
with string2. Equivalent to
!!:s/string1/string2/
.
+
!#
! - The entire command line typed so far.
!
+
!
!
!
!
! 1.1.2 Word Designators
!
+
Word designators are used to select desired words from the event.
A `:' separates the event specification from the word designator. It
***************
*** 207,235 ****
of the line, with the first word being denoted by 0 (zero). Words are
inserted into the current line separated by single spaces.
-
-
For example,
-
-
!!
! -
! designates the preceding command. When you type this, the preceding
command is repeated in toto.
!!:$
! -
! designates the last argument of the preceding command. This may be
shortened to
!$
.
!fi:2
! -
! designates the second argument of the most recent command starting with
the letters
fi
.
-
Here are the word designators:
--- 214,239 ----
of the line, with the first word being denoted by 0 (zero). Words are
inserted into the current line separated by single spaces.
+
For example,
+
!!
! - designates the preceding command. When you type this, the preceding
command is repeated in toto.
+
!!:$
! - designates the last argument of the preceding command. This may be
shortened to
!$
.
+
!fi:2
! - designates the second argument of the most recent command starting with
the letters
fi
.
+
Here are the word designators:
***************
*** 237,319 ****
0 (zero)
!
! The 0
th word. For many applications, this is the command word.
n
!
! The nth word.
^
!
! The first argument; that is, word 1.
$
!
! The last argument.
%
!
! The word matched by the most recent `?string?' search.
x-y
!
! A range of words; `-y' abbreviates `0-y'.
*
!
! All of the words, except the 0
th. This is a synonym for `1-$'.
It is not an error to use `*' if there is just one word in the event;
the empty string is returned in that case.
x*
!
! Abbreviates `x-$'
x-
!
! Abbreviates `x-$' like `x*', but omits the last word.
-
If a word designator is supplied without an event specification, the
previous command is used as the event.
!
!
!
!
!
After the optional word designator, you can add a sequence of one or more
of the following modifiers, each preceded by a `:'.
-
h
! -
! Remove a trailing pathname component, leaving only the head.
t
! -
! Remove all leading pathname components, leaving the tail.
r
! -
! Remove a trailing suffix of the form `.suffix', leaving
the basename.
e
! -
! Remove all but the trailing suffix.
p
! -
! Print the new command but do not execute it.
s/old/new/
! -
! Substitute new for the first occurrence of old in the
event line. Any delimiter may be used in place of `/'.
The delimiter may be quoted in old and new
--- 241,335 ----
0 (zero)
! - The
0
th word. For many applications, this is the command word.
!
n
! - The nth word.
!
^
! - The first argument; that is, word 1.
!
$
! - The last argument.
!
%
! - The word matched by the most recent `?string?' search.
!
x-y
! - A range of words; `-y' abbreviates `0-y'.
!
*
! - All of the words, except the
0
th. This is a synonym for `1-$'.
It is not an error to use `*' if there is just one word in the event;
the empty string is returned in that case.
+
x*
! - Abbreviates `x-$'
!
x-
! - Abbreviates `x-$' like `x*', but omits the last word.
!
+
If a word designator is supplied without an event specification, the
previous command is used as the event.
+
!
!
!
!
! 1.1.3 Modifiers
!
+
After the optional word designator, you can add a sequence of one or more
of the following modifiers, each preceded by a `:'.
+
h
! - Remove a trailing pathname component, leaving only the head.
!
t
! - Remove all leading pathname components, leaving the tail.
!
r
! - Remove a trailing suffix of the form `.suffix', leaving
the basename.
+
e
! - Remove all but the trailing suffix.
!
p
! - Print the new command but do not execute it.
!
s/old/new/
! - Substitute new for the first occurrence of old in the
event line. Any delimiter may be used in place of `/'.
The delimiter may be quoted in old and new
***************
*** 322,370 ****
the `&'. The final delimiter is optional if it is the last
character on the input line.
&
! -
! Repeat the previous substitution.
g
! -
! Cause changes to be applied over the entire event line. Used in
conjunction with `s', as in
gs/old/new/
,
or with `&'.
!
!
!
!
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 Using History Interactively.
!
!
!
!
!
!
!
!
Many programs read input from the user a line at a time. The GNU
History library is able to keep track of those lines, associate arbitrary
data with each line, and utilize information from previous lines in
composing new ones.
-
-
The programmer using the History library has available functions
for remembering lines on a history list, associating arbitrary data
--- 338,413 ----
the `&'. The final delimiter is optional if it is the last
character on the input line.
+
&
! Repeat the previous substitution.
!
g
! Cause changes to be applied over the entire event line. Used in
conjunction with `s', as in gs/old/new/
,
or with `&'.
+
+
!
!
!
!
! 2. Programming with GNU History
!
+
This chapter describes how to interface programs that you write
with the GNU History Library.
It should be considered a technical guide.
! For information on the interactive use of GNU History, see section 1. Using History Interactively.
!
+
+
+
+
+
+
+
+ 2.1 Introduction to History
+
+
Many programs read input from the user a line at a time. The GNU
History library is able to keep track of those lines, associate arbitrary
data with each line, and utilize information from previous lines in
composing new ones.
+
The programmer using the History library has available functions
for remembering lines on a history list, associating arbitrary data
***************
*** 374,380 ****
is available which provides for a consistent user interface across
different programs.
-
-
The user using programs written with the History library has the
benefit of a consistent user interface with a set of well-known
--- 417,422 ----
is available which provides for a consistent user interface across
different programs.
+
The user using programs written with the History library has the
benefit of a consistent user interface with a set of well-known
***************
*** 382,394 ****
in new commands. The basic history manipulation commands are similar to
the history substitution provided by csh
.
-
-
If the programmer desires, he can use the Readline library, which
includes some history manipulation by default, and has the added
advantage of command line editing.
-
-
Before declaring any functions using any functionality the History
library provides in other code, an application writer should include
--- 424,434 ----
in new commands. The basic history manipulation commands are similar to
the history substitution provided by csh
.
+
If the programmer desires, he can use the Readline library, which
includes some history manipulation by default, and has the added
advantage of command line editing.
+
Before declaring any functions using any functionality the History
library provides in other code, an application writer should include
***************
*** 397,414 ****
of the library's public functions and variables, and declares all of
the public data structures.
!
!
!
!
!
The history list is an array of history entries. A history entry is
declared as follows:
!
!
!
! typedef void *histdata_t;
typedef struct _hist_entry {
--- 437,465 ----
of the library's public functions and variables, and declares all of
the public data structures.
+
!
!
!
!
! 2.2 History Storage
!
+
The history list is an array of history entries. A history entry is
declared as follows:
+
!
| typedef void *histdata_t;
typedef struct _hist_entry {
***************
*** 416,437 ****
histdata_t data;
} HIST_ENTRY;
!
-
The history list itself might therefore be declared as
!
!
!
! HIST_ENTRY **the_history_list;
!
-
The state of the History library is encapsulated into a single structure:
!
!
!
! /*
* A structure used to pass around the current state of the history.
*/
--- 467,482 ----
histdata_t data;
} HIST_ENTRY;
! |
The history list itself might therefore be declared as
+
!
| HIST_ENTRY **the_history_list;
! |
The state of the History library is encapsulated into a single structure:
+
!
| /*
* A structure used to pass around the current state of the history.
*/
***************
*** 443,706 ****
int flags;
} HISTORY_STATE;
!
-
If the flags member includes HS_STIFLED , the history has been
stifled.
!
!
!
!
!
This section describes the calling sequence for the various functions
exported by the GNU History library.
!
!
!
!
!
!
!
!
This section describes functions used to initialize and manage
the state of the History library when you want to use the history
functions in your program.
!
!
- Function: void using_history (void)
!
-
! Begin a session in which the history functions might be used. This
initializes the interactive variables.
!
!
- Function: HISTORY_STATE * history_get_history_state (void)
!
-
! Return a structure describing the current state of the input history.
!
!
- Function: void history_set_history_state (HISTORY_STATE *state)
!
-
! Set the state of the history list according to state.
!
!
!
!
!
These functions manage individual entries on the history list, or set
parameters managing the list itself.
!
!
- Function: void add_history (const char *string)
!
-
! Place string at the end of the history list. The associated data
field (if any) is set to
NULL .
!
!
- Function: HIST_ENTRY * remove_history (int which)
!
-
! Remove history entry at offset which from the history. The
removed element is returned so you can free the line, data,
and containing structure.
!
!
- Function: HIST_ENTRY * replace_history_entry (int which, const char *line, histdata_t data)
!
-
! Make the history entry at offset which have line and data.
This returns the old entry so you can dispose of the data. In the case
of an invalid which, a
NULL pointer is returned.
!
!
- Function: void clear_history (void)
!
-
! Clear the history list by deleting all the entries.
!
!
- Function: void stifle_history (int max)
!
-
! Stifle the history list, remembering only the last max entries.
!
!
- Function: int unstifle_history (void)
!
-
! Stop stifling the history. This returns the previous amount the
history was stifled. The value is positive if the history was
stifled, negative if it wasn't.
!
!
- Function: int history_is_stifled (void)
!
-
! Returns non-zero if the history is stifled, zero if it is not.
!
!
!
!
!
These functions return information about the entire history list or
individual list entries.
!
!
- Function: HIST_ENTRY ** history_list (void)
!
-
! Return a
NULL terminated array of HIST_ENTRY * which is the
current input history. Element 0 of this list is the beginning of time.
If there is no history, return NULL .
!
!
- Function: int where_history (void)
!
-
! Returns the offset of the current history element.
!
!
- Function: HIST_ENTRY * current_history (void)
!
-
! Return the history entry at the current position, as determined by
where_history() . If there is no entry there, return a NULL
pointer.
!
!
- Function: HIST_ENTRY * history_get (int offset)
!
-
! Return the history entry at position offset, starting from
!
history_base (see section History Variables).
If there is no entry there, or if offset
is greater than the history length, return a NULL pointer.
!
!
- Function: int history_total_bytes (void)
!
-
! Return the number of bytes that the primary history entries are using.
This function returns the sum of the lengths of all the lines in the
history.
!
!
!
!
!
These functions allow the current index into the history list to be
set or changed.
!
!
- Function: int history_set_pos (int pos)
!
-
! Set the current history offset to pos, an absolute index
into the list.
Returns 1 on success, 0 if pos is less than zero or greater
than the number of history entries.
!
!
- Function: HIST_ENTRY * previous_history (void)
!
-
! Back up the current history offset to the previous history entry, and
return a pointer to that entry. If there is no previous entry, return
a
NULL pointer.
!
!
- Function: HIST_ENTRY * next_history (void)
!
-
! 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
NULL pointer.
!
!
!
!
-
-
-
These functions allow searching of the history list for entries containing
a specific string. Searching may be performed both forward and backward
from the current history position. The search may be anchored,
meaning that the string must match at the beginning of the history entry.
!
!
!
- Function: int history_search (const char *string, int direction)
!
-
! Search the history for string, starting at the current history offset.
If direction is less than 0, then the search is through
previous entries, otherwise through subsequent entries.
--- 488,806 ----
int flags;
} HISTORY_STATE;
!
|
If the flags member includes HS_STIFLED
, the history has been
stifled.
+
!
!
!
!
! 2.3 History Functions
!
+
This section describes the calling sequence for the various functions
exported by the GNU History library.
+
!
!
!
!
!
!
!
! 2.3.1 Initializing History and State Management
!
+
This section describes functions used to initialize and manage
the state of the History library when you want to use the history
functions in your program.
+
!
- Function: void using_history (void)
!
- Begin a session in which the history functions might be used. This
initializes the interactive variables.
+
!
- Function: HISTORY_STATE * history_get_history_state (void)
!
- Return a structure describing the current state of the input history.
+
!
- Function: void history_set_history_state (HISTORY_STATE *state)
!
- Set the state of the history list according to state.
+
!
!
!
!
! 2.3.2 History List Management
!
+
These functions manage individual entries on the history list, or set
parameters managing the list itself.
+
!
- Function: void add_history (const char *string)
!
- Place string at the end of the history list. The associated data
field (if any) is set to
NULL
.
+
!
- Function: HIST_ENTRY * remove_history (int which)
!
- Remove history entry at offset which from the history. The
removed element is returned so you can free the line, data,
and containing structure.
+
!
- Function: HIST_ENTRY * replace_history_entry (int which, const char *line, histdata_t data)
!
- Make the history entry at offset which have line and data.
This returns the old entry so you can dispose of the data. In the case
of an invalid which, a
NULL
pointer is returned.
+
!
- Function: void clear_history (void)
!
- Clear the history list by deleting all the entries.
+
!
- Function: void stifle_history (int max)
!
- Stifle the history list, remembering only the last max entries.
+
!
- Function: int unstifle_history (void)
!
- Stop stifling the history. This returns the previous amount the
history was stifled. The value is positive if the history was
stifled, negative if it wasn't.
+
!
- Function: int history_is_stifled (void)
!
- Returns non-zero if the history is stifled, zero if it is not.
+
!
!
!
!
! 2.3.3 Information About the History List
!
+
These functions return information about the entire history list or
individual list entries.
+
!
- Function: HIST_ENTRY ** history_list (void)
!
- Return a
NULL
terminated array of HIST_ENTRY *
which is the
current input history. Element 0 of this list is the beginning of time.
If there is no history, return NULL
.
+
!
- Function: int where_history (void)
!
- Returns the offset of the current history element.
+
!
- Function: HIST_ENTRY * current_history (void)
!
- Return the history entry at the current position, as determined by
where_history()
. If there is no entry there, return a NULL
pointer.
+
!
- Function: HIST_ENTRY * history_get (int offset)
!
- Return the history entry at position offset, starting from
!
history_base
(see section 2.4 History Variables).
If there is no entry there, or if offset
is greater than the history length, return a NULL
pointer.
+
!
- Function: int history_total_bytes (void)
!
- Return the number of bytes that the primary history entries are using.
This function returns the sum of the lengths of all the lines in the
history.
+
!
!
!
!
! 2.3.4 Moving Around the History List
!
+
These functions allow the current index into the history list to be
set or changed.
+
!
- Function: int history_set_pos (int pos)
!
- Set the current history offset to pos, an absolute index
into the list.
Returns 1 on success, 0 if pos is less than zero or greater
than the number of history entries.
+
!
- Function: HIST_ENTRY * previous_history (void)
!
- Back up the current history offset to the previous history entry, and
return a pointer to that entry. If there is no previous entry, return
a
NULL
pointer.
+
!
- Function: HIST_ENTRY * next_history (void)
!
- 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
NULL
pointer.
+
!
!
!
!
! 2.3.5 Searching the History List
!
These functions allow searching of the history list for entries containing
a specific string. Searching may be performed both forward and backward
from the current history position. The search may be anchored,
meaning that the string must match at the beginning of the history entry.
!
!
!
- Function: int history_search (const char *string, int direction)
!
- Search the history for string, starting at the current history offset.
If direction is less than 0, then the search is through
previous entries, otherwise through subsequent entries.
***************
*** 711,721 ****
returned.
!
!
- Function: int history_search_prefix (const char *string, int direction)
!
-
! Search the history for string, starting at the current history
offset. The search is anchored: matching lines must begin with
string. If direction is less than 0, then the search is
--- 811,820 ----
returned.
+
!
- Function: int history_search_prefix (const char *string, int direction)
!
- Search the history for string, starting at the current history
offset. The search is anchored: matching lines must begin with
string. If direction is less than 0, then the search is
***************
*** 725,765 ****
Otherwise, nothing is changed, and a -1 is returned.
!
!
- Function: int history_search_pos (const char *string, int direction, int pos)
!
-
! Search for string in the history list, starting at pos, an
absolute index into the list. If direction is negative, the search
proceeds backward from pos, otherwise forward. Returns the absolute
index of the history element where string was found, or -1 otherwise.
!
!
!
!
!
The History library can read the history from and write it to a file.
This section documents the functions for managing a history file.
!
!
- Function: int read_history (const char *filename)
!
-
! Add the contents of filename to the history list, a line at a time.
If filename is
NULL
, then read from `~/.history'.
Returns 0 if successful, or errno
if not.
!
!
- Function: int read_history_range (const char *filename, int from, int to)
!
-
! Read a range of lines from filename, adding them to the history list.
Start reading at line from and end at to.
If from is zero, start at the beginning. If to is less than
--- 824,874 ----
Otherwise, nothing is changed, and a -1 is returned.
+
!
- Function: int history_search_pos (const char *string, int direction, int pos)
!
- Search for string in the history list, starting at pos, an
absolute index into the list. If direction is negative, the search
proceeds backward from pos, otherwise forward. Returns the absolute
index of the history element where string was found, or -1 otherwise.
+
!
!
!
!
! 2.3.6 Managing the History File
!
+
The History library can read the history from and write it to a file.
This section documents the functions for managing a history file.
+
!
- Function: int read_history (const char *filename)
!
- Add the contents of filename to the history list, a line at a time.
If filename is
NULL
, then read from `~/.history'.
Returns 0 if successful, or errno
if not.
+
!
- Function: int read_history_range (const char *filename, int from, int to)
!
- Read a range of lines from filename, adding them to the history list.
Start reading at line from and end at to.
If from is zero, start at the beginning. If to is less than
***************
*** 768,778 ****
or
errno
if not.
!
!
- Function: int write_history (const char *filename)
!
-
! Write the current history to filename, overwriting filename
if necessary.
If filename is
NULL
, then write the history list to
--- 877,886 ----
or errno
if not.
+
!
- Function: int write_history (const char *filename)
!
- Write the current history to filename, overwriting filename
if necessary.
If filename is
NULL
, then write the history list to
***************
*** 780,850 ****
Returns 0 on success, or errno
on a read or write error.
!
!
- Function: int append_history (int nelements, const char *filename)
!
-
! Append the last nelements of the history list to filename.
If filename is
NULL
, then append to `~/.history'.
Returns 0 on success, or errno
on a read or write error.
!
!
- Function: int history_truncate_file (const char *filename, int nlines)
!
-
! Truncate the history file filename, leaving only the last
nlines lines.
If filename is
NULL
, then `~/.history' is truncated.
Returns 0 on success, or errno
on failure.
!
!
!
!
!
These functions implement history expansion.
!
!
- Function: int history_expand (char *string, char **output)
!
-
! Expand string, placing the result into output, a pointer
! to a string (see section History Expansion). Returns:
-
0
! -
! If no expansions took place (or, if the only change in
the text was the removal of escape characters preceding the history expansion
character);
1
! -
! if expansions did take place;
-1
! -
! if there was an error in expansion;
2
! -
! if the returned line should be displayed, but not executed,
! as with the
:p
modifier (see section Modifiers).
-
If an error ocurred in expansion, then output contains a descriptive
error message.
!
!
- Function: char * get_history_event (const char *string, int *cindex, int qchar)
!
-
! Returns the text of the history event beginning at string +
*cindex. *cindex is modified to point to after the event
specifier. At function entry, cindex points to the index into
--- 888,962 ----
Returns 0 on success, or
errno
on a read or write error.
+
!
- Function: int append_history (int nelements, const char *filename)
!
- Append the last nelements of the history list to filename.
If filename is
NULL
, then append to `~/.history'.
Returns 0 on success, or errno
on a read or write error.
+
!
- Function: int history_truncate_file (const char *filename, int nlines)
!
- Truncate the history file filename, leaving only the last
nlines lines.
If filename is
NULL
, then `~/.history' is truncated.
Returns 0 on success, or errno
on failure.
+
!
!
!
!
! 2.3.7 History Expansion
!
+
These functions implement history expansion.
+
!
- Function: int history_expand (char *string, char **output)
!
- Expand string, placing the result into output, a pointer
! to a string (see section 1.1 History Expansion). Returns:
0
! - If no expansions took place (or, if the only change in
the text was the removal of escape characters preceding the history expansion
character);
1
! - if expansions did take place;
-1
! - if there was an error in expansion;
2
! - if the returned line should be displayed, but not executed,
! as with the
:p
modifier (see section 1.1.3 Modifiers).
+
If an error ocurred in expansion, then output contains a descriptive
error message.
+
!
- Function: char * get_history_event (const char *string, int *cindex, int qchar)
!
- Returns the text of the history event beginning at string +
*cindex. *cindex is modified to point to after the event
specifier. At function entry, cindex points to the index into
***************
*** 853,985 ****
to the "normal" terminating characters.
!
!
- Function: char ** history_tokenize (const char *string)
!
-
! Return an array of tokens parsed out of string, much as the
shell might. The tokens are split on the characters in the
history_word_delimiters variable,
and shell quoting conventions are obeyed.
!
!
- Function: char * history_arg_extract (int first, int last, const char *string)
!
-
! Extract a string segment consisting of the first through last
arguments present in string. Arguments are split using
history_tokenize
.
!
!
!
!
!
This section describes the externally-visible variables exported by
the GNU History Library.
!
!
- Variable: int history_base
!
-
! The logical offset of the first entry in the history list.
!
!
- Variable: int history_length
!
-
! The number of entries currently stored in the history list.
!
!
- Variable: int history_max_entries
!
-
! The maximum number of history entries. This must be changed using
stifle_history()
.
!
!
- Variable: char history_expansion_char
!
-
! The character that introduces a history event. The default is `!'.
Setting this to 0 inhibits history expansion.
!
!
- Variable: char history_subst_char
!
-
! The character that invokes word substitution if found at the start of
a line. The default is `^'.
!
!
- Variable: char history_comment_char
!
-
! During tokenization, if this character is seen as the first character
of a word, then it and all subsequent characters up to a newline are
ignored, suppressing history expansion for the remainder of the line.
This is disabled by default.
!
!
- Variable: char * history_word_delimiters
!
-
! The characters that separate tokens for \fBhistory_tokenize()\fP.
! The default value is
" \t\n()<>;&|"
.
!
!
- Variable: char * history_no_expand_chars
!
-
! The list of characters which inhibit history expansion if found immediately
following history_expansion_char. The default is space, tab, newline,
carriage return, and `='.
!
!
- Variable: char * history_search_delimiter_chars
!
-
! The list of additional characters which can delimit a history search
string, in addition to space, TAB, `:' and `?' in the case of
a substring search. The default is empty.
!
!
- Variable: int history_quotes_inhibit_expansion
!
-
! If non-zero, single-quoted words are not scanned for the history expansion
character. The default value is 0.
!
!
- Variable: rl_linebuf_func_t * history_inhibit_expansion_function
!
-
! This should be set to the address of a function that takes two arguments:
a
char *
(string)
and an int
index into that string (i).
--- 965,1097 ----
to the "normal" terminating characters.
+
!
- Function: char ** history_tokenize (const char *string)
!
- Return an array of tokens parsed out of string, much as the
shell might. The tokens are split on the characters in the
history_word_delimiters variable,
and shell quoting conventions are obeyed.
+
!
- Function: char * history_arg_extract (int first, int last, const char *string)
!
- Extract a string segment consisting of the first through last
arguments present in string. Arguments are split using
history_tokenize
.
+
!
!
!
!
! 2.4 History Variables
!
+
This section describes the externally-visible variables exported by
the GNU History Library.
+
!
- Variable: int history_base
!
- The logical offset of the first entry in the history list.
+
!
- Variable: int history_length
!
- The number of entries currently stored in the history list.
+
!
- Variable: int history_max_entries
!
- The maximum number of history entries. This must be changed using
stifle_history()
.
+
!
- Variable: char history_expansion_char
!
- The character that introduces a history event. The default is `!'.
Setting this to 0 inhibits history expansion.
+
!
- Variable: char history_subst_char
!
- The character that invokes word substitution if found at the start of
a line. The default is `^'.
+
!
- Variable: char history_comment_char
!
- During tokenization, if this character is seen as the first character
of a word, then it and all subsequent characters up to a newline are
ignored, suppressing history expansion for the remainder of the line.
This is disabled by default.
+
!
- Variable: char * history_word_delimiters
!
- The characters that separate tokens for
history_tokenize()
.
! The default value is " \t\n()<>;&|"
.
+
!
- Variable: char * history_no_expand_chars
!
- The list of characters which inhibit history expansion if found immediately
following history_expansion_char. The default is space, tab, newline,
carriage return, and `='.
+
!
- Variable: char * history_search_delimiter_chars
!
- The list of additional characters which can delimit a history search
string, in addition to space, TAB, `:' and `?' in the case of
a substring search. The default is empty.
+
!
- Variable: int history_quotes_inhibit_expansion
!
- If non-zero, single-quoted words are not scanned for the history expansion
character. The default value is 0.
+
!
- Variable: rl_linebuf_func_t * history_inhibit_expansion_function
!
- This should be set to the address of a function that takes two arguments:
a
char *
(string)
and an int
index into that string (i).
***************
*** 991,1007 ****
By default, this variable is set to NULL
.
!
!
!
!
!
- The following program demonstrates simple use of the GNU History Library.
!
!
! #include <stdio.h>
#include <readline/history.h>
--- 1103,1130 ----
By default, this variable is set to NULL
.
+
!
!
!
!
! 2.5 History Programming Example
!
! The following program demonstrates simple use of the GNU History Library.
!
!
+
+
+
+
+ A. Concept Index
+
+ Jump to: | A
+
+ E
+
+ H
+
+ |
---|
+ Jump to: | A
+
+ E
+
+ H
+
+ |
---|
+
+
+
+
+
+ B. Function and Variable Index
+
+ Jump to: | A
+
+ C
+
+ G
+
+ H
+
+ N
+
+ P
+
+ R
+
+ S
+
+ U
+
+ W
+
+ |
---|
+ Jump to: | A
+
+ C
+
+ G
+
+ H
+
+ N
+
+ P
+
+ R
+
+ S
+
+ U
+
+ W
+
+ |
---|
+
+
+
+
+ Table of Contents
+
+
+
+
+ Short Table of Contents
+
+ 1. Using History Interactively
+
+ 2. Programming with GNU History
+
+ A. Concept Index
+
+ B. Function and Variable Index
+
+
+
+
+
+
+ About this document
+ This document was generated by Chet Ramey on October, 9 2001
+ using texi2html
+
+ The buttons in the navigation panels have the following meaning:
+
+
+
+ Button |
+ Name |
+ Go to |
+ From 1.2.3 go to |
+
+
+
+ [ < ] |
+
+ Back
+ |
+
+ previous section in reading order
+ |
+
+ 1.2.2
+ |
+
+
+
+ [ > ] |
+
+ Forward
+ |
+
+ next section in reading order
+ |
+
+ 1.2.4
+ |
+
+
+
+ [ << ] |
+
+ FastBack
+ |
+
+ previous or up-and-previous section
+ |
+
+ 1.1
+ |
+
+
+
+ [ Up ] |
+
+ Up
+ |
+
+ up section
+ |
+
+ 1.2
+ |
+
+
+
+ [ >> ] |
+
+ FastForward
+ |
+
+ next or up-and-next section
+ |
+
+ 1.3
+ |
+
+
+
+ [Top] |
+
+ Top
+ |
+
+ cover (top) of document
+ |
+
+
+ |
+
+
+
+ [Contents] |
+
+ Contents
+ |
+
+ table of contents
+ |
+
+
+ |
+
+
+
+ [Index] |
+
+ Index
+ |
+
+ concept index
+ |
+
+
+ |
+
+
+
+ [ ? ] |
+
+ About
+ |
+
+ this page
+ |
+
+
+ |
+
+
+
+ where the Example assumes that the current position
+ is at Subsubsection One-Two-Three of a document of
+ the following structure:
+
+ - 1. Section One
+
+ - 1.1 Subsection One-One
+
+ - 1.2 Subsection One-Two
+
+ - 1.2.1 Subsubsection One-Two-One
+
- 1.2.2 Subsubsection One-Two-Two
+
- 1.2.3 Subsubsection One-Two-Three
+ <== Current Position
+
- 1.2.4 Subsubsection One-Two-Four
+
+ - 1.3 Subsection One-Three
+
+ - 1.4 Subsection One-Four
+
+
+
+
+
+ This document was generated
+ by Chet Ramey on October, 9 2001
+ using texi2html
diff -Nrc2 readline-4.2/doc/history.info readline-4.2a/doc/history.info
*** readline-4.2/doc/history.info Mon Apr 16 11:05:39 2001
--- readline-4.2a/doc/history.info Tue Oct 9 15:08:02 2001
***************
*** 627,632 ****
- Variable: char * history_word_delimiters
! The characters that separate tokens for \fBhistory_tokenize()\fP.
! The default value is `" \t\n()<>;&|"'.
- Variable: char * history_no_expand_chars
--- 627,632 ----
- Variable: char * history_word_delimiters
! The characters that separate tokens for `history_tokenize()'. The
! default value is `" \t\n()<>;&|"'.
- Variable: char * history_no_expand_chars
***************
*** 833,839 ****
Node: History Expansion20260
Node: History Variables22155
! Node: History Programming Example24725
! Node: Concept Index27447
! Node: Function and Variable Index27933
End Tag Table
--- 833,839 ----
Node: History Expansion20260
Node: History Variables22155
! Node: History Programming Example24722
! Node: Concept Index27444
! Node: Function and Variable Index27930
End Tag Table
diff -Nrc2 readline-4.2/doc/history.ps readline-4.2a/doc/history.ps
*** readline-4.2/doc/history.ps Mon Apr 16 11:05:46 2001
--- readline-4.2a/doc/history.ps Tue Oct 9 15:08:12 2001
***************
*** 9,13 ****
%DVIPSCommandLine: dvips -D 300 -t letter -o history.ps history.dvi
%DVIPSParameters: dpi=300, compressed
! %DVIPSSource: TeX output 2001.04.16:1105
%%BeginProcSet: texc.pro
%!
--- 9,13 ----
%DVIPSCommandLine: dvips -D 300 -t letter -o history.ps history.dvi
%DVIPSParameters: dpi=300, compressed
! %DVIPSSource: TeX output 2001.10.09:1508
%%BeginProcSet: texc.pro
%!
***************
*** 821,830 ****
%%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
%%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
--- 821,830 ----
%%Page: 1 1
1 0 bop 75 659 a Fq(GNU)33 b(History)f(Library)p 75 709
! 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
***************
*** 1373,1381 ****
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
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
--- 1373,1380 ----
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)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
diff -Nrc2 readline-4.2/doc/hstech.texinfo readline-4.2a/doc/hstech.texinfo
*** readline-4.2/doc/hstech.texinfo Mon Mar 12 05:37:38 2001
--- readline-4.2a/doc/hstech.texinfo Tue Jul 24 16:42:23 2001
***************
*** 423,427 ****
@deftypevar {char *} history_word_delimiters
! The characters that separate tokens for \fBhistory_tokenize()\fP.
The default value is @code{" \t\n()<>;&|"}.
@end deftypevar
--- 423,427 ----
@deftypevar {char *} history_word_delimiters
! The characters that separate tokens for @code{history_tokenize()}.
The default value is @code{" \t\n()<>;&|"}.
@end deftypevar
diff -Nrc2 readline-4.2/doc/manvers.texinfo readline-4.2a/doc/manvers.texinfo
*** readline-4.2/doc/manvers.texinfo Mon Apr 16 10:54:00 2001
--- readline-4.2a/doc/manvers.texinfo Tue Oct 9 15:06:21 2001
***************
*** 1,6 ****
! @set EDITION 4.2
! @set VERSION 4.2
! @set UPDATED 2001 Apr 16
! @set UPDATE-MONTH Apr 2001
! @set LASTCHANGE Mon Apr 16 10:53:58 EDT 2001
--- 1,6 ----
! @set EDITION 4.2a
! @set VERSION 4.2a
! @set UPDATED 2001 October 9
! @set UPDATE-MONTH October 2001
! @set LASTCHANGE Tue Oct 9 15:03:34 EDT 2001
diff -Nrc2 readline-4.2/doc/readline.0 readline-4.2a/doc/readline.0
*** readline-4.2/doc/readline.0 Mon Mar 5 11:20:23 2001
--- readline-4.2a/doc/readline.0 Tue Oct 9 15:08:13 2001
***************
*** 62,66 ****
! GNU Readline 4.2 2001 Mar 5 1
--- 62,66 ----
! GNU Readline 4.2a 2001 October 9 1
***************
*** 128,132 ****
! GNU Readline 4.2 2001 Mar 5 2
--- 128,132 ----
! GNU Readline 4.2a 2001 October 9 2
***************
*** 182,198 ****
\\tt horizontal tab
\\vv vertical tab
! \\_n_n_n the character whose ASCII code is the octal
! value _n_n_n (one to three digits)
! \\xx_n_n_n the character whose ASCII code is the hex-
! adecimal value _n_n_n (one to three digits)
When entering the text of a macro, single or double quotes
! should be used to indicate a macro definition. Unquoted
text is assumed to be a function name. In the macro body,
! the backslash escapes described above are expanded.
! GNU Readline 4.2 2001 Mar 5 3
--- 182,198 ----
\\tt horizontal tab
\\vv vertical tab
! \\_n_n_n the eight-bit character whose value is the
! octal value _n_n_n (one to three digits)
! \\xx_H_H the eight-bit character whose value is the
! hexadecimal value _H_H (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
text is assumed to be a function name. In the macro body,
! the backslash escapes described above are expanded.
! GNU Readline 4.2a 2001 October 9 3
***************
*** 203,220 ****
! Backslash will quote any other character in the macro
text, including " and '.
! BBaasshh allows the current readline key bindings to be dis-
! played or modified with the bbiinndd builtin command. The
! editing mode may be switched during interactive use by
! using the --oo option to the sseett builtin command. Other
! programs using this library provide similar mechanisms.
! The _i_n_p_u_t_r_c file may be edited and re-read if a program
! does not provide any other means to incorporate new bind-
ings.
VVaarriiaabblleess
! Readline has variables that can be used to further cus-
tomize its behavior. A variable may be set in the _i_n_p_u_t_r_c
file with a statement of the form
--- 203,220 ----
! Backslash will quote any other character in the macro
text, including " and '.
! BBaasshh allows the current readline key bindings to be dis-
! played or modified with the bbiinndd builtin command. The
! editing mode may be switched during interactive use by
! using the --oo option to the sseett builtin command. Other
! programs using this library provide similar mechanisms.
! The _i_n_p_u_t_r_c file may be edited and re-read if a program
! does not provide any other means to incorporate new bind-
ings.
VVaarriiaabblleess
! Readline has variables that can be used to further cus-
tomize its behavior. A variable may be set in the _i_n_p_u_t_r_c
file with a statement of the form
***************
*** 223,258 ****
Except where noted, readline variables can take the values
! OOnn or OOffff (without regard to case). The variables and
their default values are:
bbeellll--ssttyyllee ((aauuddiibbllee))
! Controls what happens when readline wants to ring
! the terminal bell. If set to nnoonnee, readline never
rings the bell. If set to vviissiibbllee, readline uses a
! visible bell if one is available. If set to aauuddii--
bbllee, readline attempts to ring the terminal's bell.
ccoommmmeenntt--bbeeggiinn ((````##''''))
! The string that is inserted in vvii mode when the
! iinnsseerrtt--ccoommmmeenntt command is executed. This command
! is bound to MM--## in emacs mode and to ## in vi com-
mand mode.
ccoommpplleettiioonn--iiggnnoorree--ccaassee ((OOffff))
! If set to OOnn, readline performs filename matching
and completion in a case-insensitive fashion.
ccoommpplleettiioonn--qquueerryy--iitteemmss ((110000))
! This determines when the user is queried about
! viewing the number of possible completions gener-
! ated by the ppoossssiibbllee--ccoommpplleettiioonnss 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
terminal.
ccoonnvveerrtt--mmeettaa ((OOnn))
If set to OOnn, 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
_m_e_t_a _p_r_e_f_i_x).
--- 223,258 ----
Except where noted, readline variables can take the values
! OOnn or OOffff (without regard to case). The variables and
their default values are:
bbeellll--ssttyyllee ((aauuddiibbllee))
! Controls what happens when readline wants to ring
! the terminal bell. If set to nnoonnee, readline never
rings the bell. If set to vviissiibbllee, readline uses a
! visible bell if one is available. If set to aauuddii--
bbllee, readline attempts to ring the terminal's bell.
ccoommmmeenntt--bbeeggiinn ((````##''''))
! The string that is inserted in vvii mode when the
! iinnsseerrtt--ccoommmmeenntt command is executed. This command
! is bound to MM--## in emacs mode and to ## in vi com-
mand mode.
ccoommpplleettiioonn--iiggnnoorree--ccaassee ((OOffff))
! If set to OOnn, readline performs filename matching
and completion in a case-insensitive fashion.
ccoommpplleettiioonn--qquueerryy--iitteemmss ((110000))
! This determines when the user is queried about
! viewing the number of possible completions gener-
! ated by the ppoossssiibbllee--ccoommpplleettiioonnss 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
terminal.
ccoonnvveerrtt--mmeettaa ((OOnn))
If set to OOnn, 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
_m_e_t_a _p_r_e_f_i_x).
***************
*** 260,264 ****
! GNU Readline 4.2 2001 Mar 5 4
--- 260,264 ----
! GNU Readline 4.2a 2001 October 9 4
***************
*** 270,330 ****
ddiissaabbllee--ccoommpplleettiioonn ((OOffff))
! If set to OOnn, readline will inhibit word comple-
! tion. Completion characters will be inserted into
the line as if they had been mapped to sseellff--iinnsseerrtt.
eeddiittiinngg--mmooddee ((eemmaaccss))
! Controls whether readline begins with a set of key
! bindings similar to emacs or vi. eeddiittiinngg--mmooddee can
be set to either eemmaaccss or vvii.
eennaabbllee--kkeeyyppaadd ((OOffff))
! When set to OOnn, readline will try to enable the
application keypad when it is called. Some systems
need this to enable the arrow keys.
eexxppaanndd--ttiillddee ((OOffff))
! If set to oonn, tilde expansion is performed when
readline attempts word completion.
hhoorriizzoonnttaall--ssccrroollll--mmooddee ((OOffff))
! When set to OOnn, 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.
iinnppuutt--mmeettaa ((OOffff))
! If set to OOnn, 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 mmeettaa--ffllaagg is a
synonym for this variable.
iisseeaarrcchh--tteerrmmiinnaattoorrss ((````CC--[[ CC--JJ''''))
! 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 _E_S_C and _C_-_J
will terminate an incremental search.
kkeeyymmaapp ((eemmaaccss))
! Set the current readline keymap. The set of legal
! keymap names is _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_,
_e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_m_o_v_e_, _v_i_-_c_o_m_m_a_n_d, and _v_i_-_i_n_s_e_r_t.
_v_i is equivalent to _v_i_-_c_o_m_m_a_n_d; _e_m_a_c_s is equivalent
! to _e_m_a_c_s_-_s_t_a_n_d_a_r_d. The default value is _e_m_a_c_s.
! The value of eeddiittiinngg--mmooddee also affects the default
keymap.
mmaarrkk--ddiirreeccttoorriieess ((OOnn))
! If set to OOnn, completed directory names have a
slash appended.
mmaarrkk--mmooddiiffiieedd--lliinneess ((OOffff))
If set to OOnn, history lines that have been modified
are displayed with a preceding asterisk (**).
! oouuttppuutt--mmeettaa ((OOffff))
! If set to OOnn, readline will display characters with
! the eighth bit set directly rather than as a meta-
! prefixed escape sequence.
! pprriinntt--ccoommpplleettiioonnss--hhoorriizzoonnttaallllyy ((OOffff))
! If set to OOnn, readline will display completions
! with matches sorted horizontally in alphabetical
! order, rather than down the screen.
! GNU Readline 4.2 2001 Mar 5 5
--- 270,330 ----
ddiissaabbllee--ccoommpplleettiioonn ((OOffff))
! If set to OOnn, readline will inhibit word comple-
! tion. Completion characters will be inserted into
the line as if they had been mapped to sseellff--iinnsseerrtt.
eeddiittiinngg--mmooddee ((eemmaaccss))
! Controls whether readline begins with a set of key
! bindings similar to emacs or vi. eeddiittiinngg--mmooddee can
be set to either eemmaaccss or vvii.
eennaabbllee--kkeeyyppaadd ((OOffff))
! When set to OOnn, readline will try to enable the
application keypad when it is called. Some systems
need this to enable the arrow keys.
eexxppaanndd--ttiillddee ((OOffff))
! If set to oonn, tilde expansion is performed when
readline attempts word completion.
+ hhiissttoorryy--pprreesseerrvvee--ppooiinntt
+ If set to oonn, the history code attempts to place
+ point at the same location on each history line
+ retrived with pprreevviioouuss--hhiissttoorryy or nneexxtt--hhiissttoorryy.
hhoorriizzoonnttaall--ssccrroollll--mmooddee ((OOffff))
! When set to OOnn, 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.
iinnppuutt--mmeettaa ((OOffff))
! If set to OOnn, 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 mmeettaa--ffllaagg is a
synonym for this variable.
iisseeaarrcchh--tteerrmmiinnaattoorrss ((````CC--[[ CC--JJ''''))
! 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 _E_S_C and _C_-_J
will terminate an incremental search.
kkeeyymmaapp ((eemmaaccss))
! Set the current readline keymap. The set of legal
! keymap names is _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_,
_e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_m_o_v_e_, _v_i_-_c_o_m_m_a_n_d, and _v_i_-_i_n_s_e_r_t.
_v_i is equivalent to _v_i_-_c_o_m_m_a_n_d; _e_m_a_c_s is equivalent
! to _e_m_a_c_s_-_s_t_a_n_d_a_r_d. The default value is _e_m_a_c_s.
! The value of eeddiittiinngg--mmooddee also affects the default
keymap.
mmaarrkk--ddiirreeccttoorriieess ((OOnn))
! If set to OOnn, completed directory names have a
slash appended.
mmaarrkk--mmooddiiffiieedd--lliinneess ((OOffff))
If set to OOnn, history lines that have been modified
are displayed with a preceding asterisk (**).
! mmaattcchh--hhiiddddeenn--ffiilleess ((OOnn))
! This variable, when set to OOnn, causes readline to
! match files whose names begin with a `.' (hidden
! files) when performing filename completion, unless
! GNU Readline 4.2a 2001 October 9 5
***************
*** 335,374 ****
sshhooww--aallll--iiff--aammbbiigguuoouuss ((OOffff))
! This alters the default behavior of the completion
! functions. If set to oonn, words which have more
! than one possible completion cause the matches to
! be listed immediately instead of ringing the bell.
vviissiibbllee--ssttaattss ((OOffff))
If set to OOnn, a character denoting a file's type as
! reported by _s_t_a_t(2) is appended to the filename
when listing possible completions.
CCoonnddiittiioonnaall CCoonnssttrruuccttss
! 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
directives used.
! $$iiff The $$iiff 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.
! mmooddee The mmooddee== form of the $$iiff directive is used
! to test whether readline is in emacs or vi
! mode. This may be used in conjunction with
the sseett kkeeyymmaapp command, for instance, to set
! bindings in the _e_m_a_c_s_-_s_t_a_n_d_a_r_d and _e_m_a_c_s_-
! _c_t_l_x keymaps only if readline is starting
out in emacs mode.
tteerrmm The tteerrmm== 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 == is tested against the full name of
the terminal and the portion of the terminal
name before the first --. This allows _s_u_n to
--- 335,384 ----
+ the leading `.' is supplied by the user in the
+ filename to be completed.
+ oouuttppuutt--mmeettaa ((OOffff))
+ If set to OOnn, readline will display characters with
+ the eighth bit set directly rather than as a meta-
+ prefixed escape sequence.
+ pprriinntt--ccoommpplleettiioonnss--hhoorriizzoonnttaallllyy ((OOffff))
+ If set to OOnn, readline will display completions
+ with matches sorted horizontally in alphabetical
+ order, rather than down the screen.
sshhooww--aallll--iiff--aammbbiigguuoouuss ((OOffff))
! This alters the default behavior of the completion
! functions. If set to oonn, words which have more
! than one possible completion cause the matches to
! be listed immediately instead of ringing the bell.
vviissiibbllee--ssttaattss ((OOffff))
If set to OOnn, a character denoting a file's type as
! reported by _s_t_a_t(2) is appended to the filename
when listing possible completions.
CCoonnddiittiioonnaall CCoonnssttrruuccttss
! 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
directives used.
! $$iiff The $$iiff 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.
! mmooddee The mmooddee== form of the $$iiff directive is used
! to test whether readline is in emacs or vi
! mode. This may be used in conjunction with
the sseett kkeeyymmaapp command, for instance, to set
! bindings in the _e_m_a_c_s_-_s_t_a_n_d_a_r_d and _e_m_a_c_s_-
! _c_t_l_x keymaps only if readline is starting
out in emacs mode.
tteerrmm The tteerrmm== 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 == is tested against the full name of
the terminal and the portion of the terminal
name before the first --. This allows _s_u_n to
***************
*** 378,396 ****
The aapppplliiccaattiioonn construct is used to include
application-specific settings. Each program
! using the readline library sets the _a_p_p_l_i_c_a_-
! _t_i_o_n _n_a_m_e, 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:
- $$iiff Bash
- # Quote the current or previous word
!
! GNU Readline 4.2 2001 Mar 5 6
--- 388,396 ----
The aapppplliiccaattiioonn construct is used to include
application-specific settings. Each program
! using the readline library sets the
! GNU Readline 4.2a 2001 October 9 6
***************
*** 401,404 ****
--- 401,414 ----
+ _a_p_p_l_i_c_a_t_i_o_n _n_a_m_e, 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:
+
+ $$iiff Bash
+ # Quote the current or previous word
"\C-xq": "\eb\"\ef\""
$$eennddiiff
***************
*** 407,417 ****
minates an $$iiff command.
! $$eellssee Commands in this branch of the $$iiff directive are
executed if the test fails.
$$iinncclluuddee
! 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 _/_e_t_c_/_i_n_p_u_t_r_c:
--- 417,427 ----
minates an $$iiff command.
! $$eellssee Commands in this branch of the $$iiff directive are
executed if the test fails.
$$iinncclluuddee
! 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 _/_e_t_c_/_i_n_p_u_t_r_c:
***************
*** 419,438 ****
SSEEAARRCCHHIINNGG
! Readline provides commands for searching through the com-
! mand history for lines containing a specified string.
! There are two search modes: _i_n_c_r_e_m_e_n_t_a_l and _n_o_n_-_i_n_c_r_e_m_e_n_-
_t_a_l.
! Incremental searches begin before the user has finished
typing the search string. As each character of the search
string is typed, readline displays the next entry from the
! history matching the string typed so far. An incremental
! search requires only as many characters as needed to find
the desired history entry. To search backward in the his-
! tory for a particular string, type CC--rr. Typing CC--ss
searches forward through the history. The characters pre-
! sent in the value of the iisseeaarrcchh--tteerrmmiinnaattoorrss variable are
used to terminate an incremental search. If that variable
! has not been assigned a value the _E_s_c_a_p_e and CC--JJ charac-
ters will terminate an incremental search. CC--GG will abort
an incremental search and restore the original line. When
--- 429,448 ----
SSEEAARRCCHHIINNGG
! Readline provides commands for searching through the com-
! mand history for lines containing a specified string.
! There are two search modes: _i_n_c_r_e_m_e_n_t_a_l and _n_o_n_-_i_n_c_r_e_m_e_n_-
_t_a_l.
! Incremental searches begin before the user has finished
typing the search string. As each character of the search
string is typed, readline displays the next entry from the
! history matching the string typed so far. An incremental
! search requires only as many characters as needed to find
the desired history entry. To search backward in the his-
! tory for a particular string, type CC--rr. Typing CC--ss
searches forward through the history. The characters pre-
! sent in the value of the iisseeaarrcchh--tteerrmmiinnaattoorrss variable are
used to terminate an incremental search. If that variable
! has not been assigned a value the _E_s_c_a_p_e and CC--JJ charac-
ters will terminate an incremental search. CC--GG will abort
an incremental search and restore the original line. When
***************
*** 440,462 ****
search string becomes the current line.
! To find other matching entries in the history list, type
! CC--ss or CC--rr 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.
- 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
--- 450,462 ----
search string becomes the current line.
! To find other matching entries in the history list, type
! CC--ss or CC--rr 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
! GNU Readline 4.2a 2001 October 9 7
***************
*** 467,478 ****
EEDDIITTIINNGG CCOOMMMMAANNDDSS
! 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, _p_o_i_n_t refers to the current
! cursor position, and _m_a_r_k refers to a cursor position
saved by the sseett--mmaarrkk command. The text between the point
and mark is referred to as the _r_e_g_i_o_n.
--- 467,489 ----
+ 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.
+
EEDDIITTIINNGG CCOOMMMMAANNDDSS
! 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, _p_o_i_n_t refers to the current
! cursor position, and _m_a_r_k refers to a cursor position
saved by the sseett--mmaarrkk command. The text between the point
and mark is referred to as the _r_e_g_i_o_n.
***************
*** 488,501 ****
Move back a character.
ffoorrwwaarrdd--wwoorrdd ((MM--ff))
! Move forward to the end of the next word. Words
! are composed of alphanumeric characters (letters
and digits).
bbaacckkwwaarrdd--wwoorrdd ((MM--bb))
! Move back to the start of the current or previous
! word. Words are composed of alphanumeric charac-
ters (letters and digits).
cclleeaarr--ssccrreeeenn ((CC--ll))
! Clear the screen leaving the current line at the
! top of the screen. With an argument, refresh the
current line without clearing the screen.
rreeddrraaww--ccuurrrreenntt--lliinnee
--- 499,512 ----
Move back a character.
ffoorrwwaarrdd--wwoorrdd ((MM--ff))
! Move forward to the end of the next word. Words
! are composed of alphanumeric characters (letters
and digits).
bbaacckkwwaarrdd--wwoorrdd ((MM--bb))
! Move back to the start of the current or previous
! word. Words are composed of alphanumeric charac-
ters (letters and digits).
cclleeaarr--ssccrreeeenn ((CC--ll))
! Clear the screen leaving the current line at the
! top of the screen. With an argument, refresh the
current line without clearing the screen.
rreeddrraaww--ccuurrrreenntt--lliinnee
***************
*** 504,528 ****
CCoommmmaannddss ffoorr MMaanniippuullaattiinngg tthhee HHiissttoorryy
aacccceepptt--lliinnee ((NNeewwlliinnee,, RReettuurrnn))
! 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 aadddd__hhiissttoorryy(()).
If the line is a modified history line, the history
line is restored to its original state.
- pprreevviioouuss--hhiissttoorryy ((CC--pp))
- Fetch the previous command from the history list,
- moving back in the list.
- nneexxtt--hhiissttoorryy ((CC--nn))
- Fetch the next command from the history list, mov-
- ing forward in the list.
- bbeeggiinnnniinngg--ooff--hhiissttoorryy ((MM--<<))
- Move to the first line in the history.
- eenndd--ooff--hhiissttoorryy ((MM-->>))
- Move to the end of the input history, i.e., the
- line currently being entered.
! GNU Readline 4.2 2001 Mar 5 8
--- 515,528 ----
CCoommmmaannddss ffoorr MMaanniippuullaattiinngg tthhee HHiissttoorryy
aacccceepptt--lliinnee ((NNeewwlliinnee,, RReettuurrnn))
! 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 aadddd__hhiissttoorryy(()).
If the line is a modified history line, the history
line is restored to its original state.
! GNU Readline 4.2a 2001 October 9 8
***************
*** 533,594 ****
rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((CC--rr))
! Search backward starting at the current line and
moving `up' through the history as necessary. This
is an incremental search.
ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((CC--ss))
! Search forward starting at the current line and
! moving `down' through the history as necessary.
This is an incremental search.
nnoonn--iinnccrreemmeennttaall--rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((MM--pp))
Search backward through the history starting at the
! current line using a non-incremental search for a
string supplied by the user.
nnoonn--iinnccrreemmeennttaall--ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((MM--nn))
! Search forward through the history using a non-
! incremental search for a string supplied by the
user.
hhiissttoorryy--sseeaarrcchh--ffoorrwwaarrdd
! Search forward through the history for the string
of characters between the start of the current line
! and the current cursor position (the _p_o_i_n_t). This
is a non-incremental search.
hhiissttoorryy--sseeaarrcchh--bbaacckkwwaarrdd
! 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.
yyaannkk--nntthh--aarrgg ((MM--CC--yy))
! Insert the first argument to the previous command
! (usually the second word on the previous line) at
! point. With an argument _n, insert the _nth word
! from the previous command (the words in the previ-
! ous command begin with word 0). A negative argu-
! ment inserts the _nth word from the end of the pre-
vious command.
yyaannkk--llaasstt--aarrgg ((MM--..,, MM--__))
! Insert the last argument to the previous command
! (the last word of the previous history entry).
With an argument, behave exactly like yyaannkk--nntthh--aarrgg.
Successive calls to yyaannkk--llaasstt--aarrgg move back through
! the history list, inserting the last argument of
each line in turn.
CCoommmmaannddss ffoorr CChhaannggiinngg TTeexxtt
- ddeelleettee--cchhaarr ((CC--dd))
- 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 ddeelleettee--cchhaarr, then return EEOOFF.
- bbaacckkwwaarrdd--ddeelleettee--cchhaarr ((RRuubboouutt))
- Delete the character behind the cursor. When given
- a numeric argument, save the deleted text on the
- kill ring.
- ffoorrwwaarrdd--bbaacckkwwaarrdd--ddeelleettee--cchhaarr
- 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
--- 533,594 ----
+ pprreevviioouuss--hhiissttoorryy ((CC--pp))
+ Fetch the previous command from the history list,
+ moving back in the list.
+ nneexxtt--hhiissttoorryy ((CC--nn))
+ Fetch the next command from the history list, mov-
+ ing forward in the list.
+ bbeeggiinnnniinngg--ooff--hhiissttoorryy ((MM--<<))
+ Move to the first line in the history.
+ eenndd--ooff--hhiissttoorryy ((MM-->>))
+ Move to the end of the input history, i.e., the
+ line currently being entered.
rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((CC--rr))
! Search backward starting at the current line and
moving `up' through the history as necessary. This
is an incremental search.
ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((CC--ss))
! Search forward starting at the current line and
! moving `down' through the history as necessary.
This is an incremental search.
nnoonn--iinnccrreemmeennttaall--rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((MM--pp))
Search backward through the history starting at the
! current line using a non-incremental search for a
string supplied by the user.
nnoonn--iinnccrreemmeennttaall--ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((MM--nn))
! Search forward through the history using a non-
! incremental search for a string supplied by the
user.
hhiissttoorryy--sseeaarrcchh--ffoorrwwaarrdd
! Search forward through the history for the string
of characters between the start of the current line
! and the current cursor position (the _p_o_i_n_t). This
is a non-incremental search.
hhiissttoorryy--sseeaarrcchh--bbaacckkwwaarrdd
! 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.
yyaannkk--nntthh--aarrgg ((MM--CC--yy))
! Insert the first argument to the previous command
! (usually the second word on the previous line) at
! point. With an argument _n, insert the _nth word
! from the previous command (the words in the previ-
! ous command begin with word 0). A negative argu-
! ment inserts the _nth word from the end of the pre-
vious command.
yyaannkk--llaasstt--aarrgg ((MM--..,, MM--__))
! Insert the last argument to the previous command
! (the last word of the previous history entry).
With an argument, behave exactly like yyaannkk--nntthh--aarrgg.
Successive calls to yyaannkk--llaasstt--aarrgg move back through
! the history list, inserting the last argument of
each line in turn.
CCoommmmaannddss ffoorr CChhaannggiinngg TTeexxtt
!
! GNU Readline 4.2a 2001 October 9 9
***************
*** 599,606 ****
character behind the cursor is deleted.
qquuootteedd--iinnsseerrtt ((CC--qq,, CC--vv))
! Add the next character that you type to the line
! verbatim. This is how to insert characters like
CC--qq, for example.
ttaabb--iinnsseerrtt ((MM--TTAABB))
--- 599,618 ----
+ ddeelleettee--cchhaarr ((CC--dd))
+ 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 ddeelleettee--cchhaarr, then return EEOOFF.
+ bbaacckkwwaarrdd--ddeelleettee--cchhaarr ((RRuubboouutt))
+ Delete the character behind the cursor. When given
+ a numeric argument, save the deleted text on the
+ kill ring.
+ ffoorrwwaarrdd--bbaacckkwwaarrdd--ddeelleettee--cchhaarr
+ 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.
qquuootteedd--iinnsseerrtt ((CC--qq,, CC--vv))
! Add the next character that you type to the line
! verbatim. This is how to insert characters like
CC--qq, for example.
ttaabb--iinnsseerrtt ((MM--TTAABB))
***************
*** 609,631 ****
Insert the character typed.
ttrraannssppoossee--cchhaarrss ((CC--tt))
! 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.
ttrraannssppoossee--wwoorrddss ((MM--tt))
! Drag the word before point past the word after
! point, moving point over that word as well.
uuppccaassee--wwoorrdd ((MM--uu))
! Uppercase the current (or following) word. With a
negative argument, uppercase the previous word, but
do not move point.
ddoowwnnccaassee--wwoorrdd ((MM--ll))
! Lowercase the current (or following) word. With a
negative argument, lowercase the previous word, but
do not move point.
ccaappiittaalliizzee--wwoorrdd ((MM--cc))
Capitalize the current (or following) word. With a
! negative argument, capitalize the previous word,
but do not move point.
--- 621,645 ----
Insert the character typed.
ttrraannssppoossee--cchhaarrss ((CC--tt))
! 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.
ttrraannssppoossee--wwoorrddss ((MM--tt))
! 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.
uuppccaassee--wwoorrdd ((MM--uu))
! Uppercase the current (or following) word. With a
negative argument, uppercase the previous word, but
do not move point.
ddoowwnnccaassee--wwoorrdd ((MM--ll))
! Lowercase the current (or following) word. With a
negative argument, lowercase the previous word, but
do not move point.
ccaappiittaalliizzee--wwoorrdd ((MM--cc))
Capitalize the current (or following) word. With a
! negative argument, capitalize the previous word,
but do not move point.
***************
*** 636,660 ****
Kill backward to the beginning of the line.
uunniixx--lliinnee--ddiissccaarrdd ((CC--uu))
! Kill backward from point to the beginning of the
line. The killed text is saved on the kill-ring.
- kkiillll--wwhhoollee--lliinnee
- Kill all characters on the current line, no matter
- where point is.
- kkiillll--wwoorrdd ((MM--dd))
- 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 ffoorr--
- wwaarrdd--wwoorrdd.
- bbaacckkwwaarrdd--kkiillll--wwoorrdd ((MM--RRuubboouutt))
- Kill the word behind point. Word boundaries are
- the same as those used by bbaacckkwwaarrdd--wwoorrdd.
- uunniixx--wwoorrdd--rruubboouutt ((CC--ww))
- 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
--- 650,660 ----
Kill backward to the beginning of the line.
uunniixx--lliinnee--ddiissccaarrdd ((CC--uu))
! Kill backward from point to the beginning of the
line. The killed text is saved on the kill-ring.
!
! GNU Readline 4.2a 2001 October 9 10
***************
*** 665,673 ****
ddeelleettee--hhoorriizzoonnttaall--ssppaaccee ((MM--\\))
Delete all spaces and tabs around point.
kkiillll--rreeggiioonn
! Kill the text between the point and _m_a_r_k (saved
! cursor position). This text is referred to as the
_r_e_g_i_o_n.
ccooppyy--rreeggiioonn--aass--kkiillll
--- 665,688 ----
+ kkiillll--wwhhoollee--lliinnee
+ Kill all characters on the current line, no matter
+ where point is.
+ kkiillll--wwoorrdd ((MM--dd))
+ 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 ffoorr--
+ wwaarrdd--wwoorrdd.
+ bbaacckkwwaarrdd--kkiillll--wwoorrdd ((MM--RRuubboouutt))
+ Kill the word behind point. Word boundaries are
+ the same as those used by bbaacckkwwaarrdd--wwoorrdd.
+ uunniixx--wwoorrdd--rruubboouutt ((CC--ww))
+ Kill the word behind point, using white space as a
+ word boundary. The killed text is saved on the
+ kill-ring.
ddeelleettee--hhoorriizzoonnttaall--ssppaaccee ((MM--\\))
Delete all spaces and tabs around point.
kkiillll--rreeggiioonn
! Kill the text between the point and _m_a_r_k (saved
! cursor position). This text is referred to as the
_r_e_g_i_o_n.
ccooppyy--rreeggiioonn--aass--kkiillll
***************
*** 677,726 ****
word boundaries are the same as bbaacckkwwaarrdd--wwoorrdd.
ccooppyy--ffoorrwwaarrdd--wwoorrdd
! Copy the word following point to the kill buffer.
The word boundaries are the same as ffoorrwwaarrdd--wwoorrdd.
yyaannkk ((CC--yy))
! Yank the top of the kill ring into the buffer at
point.
yyaannkk--ppoopp ((MM--yy))
! Rotate the kill ring, and yank the new top. Only
works following yyaannkk or yyaannkk--ppoopp.
NNuummeerriicc AArrgguummeennttss
ddiiggiitt--aarrgguummeenntt ((MM--00,, MM--11,, ......,, MM----))
! Add this digit to the argument already accumulat-
! ing, or start a new argument. M-- starts a nega-
tive argument.
uunniivveerrssaall--aarrgguummeenntt
! 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 uunniivveerrssaall--aarrgguummeenntt 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
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.
!
! CCoommpplleettiinngg
! ccoommpplleettee ((TTAABB))
! Attempt to perform completion on the text before
! point. The actual completion performed is applica-
! tion-specific. BBaasshh, for instance, attempts com-
! pletion treating the text as a variable (if the
! text begins with $$), username (if the text begins
! with ~~), hostname (if the text begins with @@), or
! command (including aliases and functions) in turn.
! If none of these produces a match, filename comple-
! tion is attempted. GGddbb, on the other hand, allows
! completion of program functions and variables, and
! only attempts filename completion under certain
! GNU Readline 4.2 2001 Mar 5 11
--- 692,726 ----
word boundaries are the same as bbaacckkwwaarrdd--wwoorrdd.
ccooppyy--ffoorrwwaarrdd--wwoorrdd
! Copy the word following point to the kill buffer.
The word boundaries are the same as ffoorrwwaarrdd--wwoorrdd.
yyaannkk ((CC--yy))
! Yank the top of the kill ring into the buffer at
point.
yyaannkk--ppoopp ((MM--yy))
! Rotate the kill ring, and yank the new top. Only
works following yyaannkk or yyaannkk--ppoopp.
NNuummeerriicc AArrgguummeennttss
ddiiggiitt--aarrgguummeenntt ((MM--00,, MM--11,, ......,, MM----))
! Add this digit to the argument already accumulat-
! ing, or start a new argument. M-- starts a nega-
tive argument.
uunniivveerrssaall--aarrgguummeenntt
! 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 uunniivveerrssaall--aarrgguummeenntt 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
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
! GNU Readline 4.2a 2001 October 9 11
***************
*** 731,792 ****
circumstances.
ppoossssiibbllee--ccoommpplleettiioonnss ((MM--??))
! List the possible completions of the text before
point.
iinnsseerrtt--ccoommpplleettiioonnss ((MM--**))
! Insert all completions of the text before point
! that would have been generated by ppoossssiibbllee--ccoommppllee--
ttiioonnss.
mmeennuu--ccoommpplleettee
! Similar to ccoommpplleettee, but replaces the word to be
completed with a single match from the list of pos-
sible completions. Repeated execution of mmeennuu--ccoomm--
! pplleettee 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)) aanndd tthhee oorriiggiinnaall
! tteexxtt iiss rreessttoorreedd.. AAnn aarrgguummeenntt ooff _n mmoovveess _n ppoossii--
! ttiioonnss ffoorrwwaarrdd iinn tthhee lliisstt ooff mmaattcchheess;; aa nneeggaattiivvee
! aarrgguummeenntt mmaayy bbee uusseedd ttoo mmoovvee bbaacckkwwaarrdd tthhrroouugghh tthhee
lliisstt.. TThhiiss ccoommmmaanndd iiss iinntteennddeedd ttoo bbee bboouunndd ttoo TTAABB,,
bbuutt iiss uunnbboouunndd bbyy ddeeffaauulltt..
ddeelleettee--cchhaarr--oorr--lliisstt
! Deletes the character under the cursor if not at
! the beginning or end of the line (like ddeelleettee--
! cchhaarr). If at the end of the line, behaves identi-
cally to ppoossssiibbllee--ccoommpplleettiioonnss.
KKeeyybbooaarrdd MMaaccrrooss
ssttaarrtt--kkbbdd--mmaaccrroo ((CC--xx (())
! Begin saving the characters typed into the current
keyboard macro.
eenndd--kkbbdd--mmaaccrroo ((CC--xx ))))
! Stop saving the characters typed into the current
keyboard macro and store the definition.
ccaallll--llaasstt--kkbbdd--mmaaccrroo ((CC--xx ee))
Re-execute the last keyboard macro defined, by mak-
! ing the characters in the macro appear as if typed
at the keyboard.
- MMiisscceellllaanneeoouuss
- rree--rreeaadd--iinniitt--ffiillee ((CC--xx CC--rr))
- Read in the contents of the _i_n_p_u_t_r_c file, and
- incorporate any bindings or variable assignments
- found there.
- aabboorrtt ((CC--gg))
- Abort the current editing command and ring the ter-
- minal's bell (subject to the setting of
- bbeellll--ssttyyllee).
- ddoo--uuppppeerrccaassee--vveerrssiioonn ((MM--aa,, MM--bb,, MM--_x,, ......))
- If the metafied character _x is lowercase, run the
- command that is bound to the corresponding upper-
- case character.
- pprreeffiixx--mmeettaa ((EESSCC))
- Metafy the next character typed. EESSCC ff is
! GNU Readline 4.2 2001 Mar 5 12
--- 731,792 ----
+ makes the argument count sixteen, and so on.
+
+ CCoommpplleettiinngg
+ ccoommpplleettee ((TTAABB))
+ Attempt to perform completion on the text before
+ point. The actual completion performed is applica-
+ tion-specific. BBaasshh, for instance, attempts com-
+ pletion treating the text as a variable (if the
+ text begins with $$), username (if the text begins
+ with ~~), hostname (if the text begins with @@), or
+ command (including aliases and functions) in turn.
+ If none of these produces a match, filename comple-
+ tion is attempted. GGddbb, on the other hand, allows
+ completion of program functions and variables, and
+ only attempts filename completion under certain
circumstances.
ppoossssiibbllee--ccoommpplleettiioonnss ((MM--??))
! List the possible completions of the text before
point.
iinnsseerrtt--ccoommpplleettiioonnss ((MM--**))
! Insert all completions of the text before point
! that would have been generated by ppoossssiibbllee--ccoommppllee--
ttiioonnss.
mmeennuu--ccoommpplleettee
! Similar to ccoommpplleettee, but replaces the word to be
completed with a single match from the list of pos-
sible completions. Repeated execution of mmeennuu--ccoomm--
! pplleettee 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)) aanndd tthhee oorriiggiinnaall
! tteexxtt iiss rreessttoorreedd.. AAnn aarrgguummeenntt ooff _n mmoovveess _n ppoossii--
! ttiioonnss ffoorrwwaarrdd iinn tthhee lliisstt ooff mmaattcchheess;; aa nneeggaattiivvee
! aarrgguummeenntt mmaayy bbee uusseedd ttoo mmoovvee bbaacckkwwaarrdd tthhrroouugghh tthhee
lliisstt.. TThhiiss ccoommmmaanndd iiss iinntteennddeedd ttoo bbee bboouunndd ttoo TTAABB,,
bbuutt iiss uunnbboouunndd bbyy ddeeffaauulltt..
ddeelleettee--cchhaarr--oorr--lliisstt
! Deletes the character under the cursor if not at
! the beginning or end of the line (like ddeelleettee--
! cchhaarr). If at the end of the line, behaves identi-
cally to ppoossssiibbllee--ccoommpplleettiioonnss.
KKeeyybbooaarrdd MMaaccrrooss
ssttaarrtt--kkbbdd--mmaaccrroo ((CC--xx (())
! Begin saving the characters typed into the current
keyboard macro.
eenndd--kkbbdd--mmaaccrroo ((CC--xx ))))
! Stop saving the characters typed into the current
keyboard macro and store the definition.
ccaallll--llaasstt--kkbbdd--mmaaccrroo ((CC--xx ee))
Re-execute the last keyboard macro defined, by mak-
! ing the characters in the macro appear as if typed
at the keyboard.
! GNU Readline 4.2a 2001 October 9 12
***************
*** 797,858 ****
! equivalent to MMeettaa--ff.
uunnddoo ((CC--__,, CC--xx CC--uu))
! Incremental undo, separately remembered for each
line.
rreevveerrtt--lliinnee ((MM--rr))
! Undo all changes made to this line. This is like
! executing the uunnddoo command enough times to return
the line to its initial state.
ttiillddee--eexxppaanndd ((MM--&&))
Perform tilde expansion on the current word.
sseett--mmaarrkk ((CC--@@,, MM--<>))
! Set the mark to the point. If a numeric argument
is supplied, the mark is set to that position.
eexxcchhaannggee--ppooiinntt--aanndd--mmaarrkk ((CC--xx CC--xx))
! 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.
cchhaarraacctteerr--sseeaarrcchh ((CC--]]))
! A character is read and point is moved to the next
! occurrence of that character. A negative count
searches for previous occurrences.
cchhaarraacctteerr--sseeaarrcchh--bbaacckkwwaarrdd ((MM--CC--]]))
! A character is read and point is moved to the pre-
! vious occurrence of that character. A negative
count searches for subsequent occurrences.
iinnsseerrtt--ccoommmmeenntt ((MM--##))
The value of the readline ccoommmmeenntt--bbeeggiinn 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 ccoommmmeenntt--bbeeggiinn makes
the current line a shell comment.
dduummpp--ffuunnccttiioonnss
! 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 _i_n_p_u_t_r_c file.
dduummpp--vvaarriiaabblleess
! 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 _i_n_p_u_t_r_c
! file.
! dduummpp--mmaaccrrooss
! 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 _i_n_p_u_t_r_c
! file.
! eemmaaccss--eeddiittiinngg--mmooddee ((CC--ee))
! When in vvii editing mode, this causes a switch to
! eemmaaccss editing mode.
! vvii--eeddiittiinngg--mmooddee ((MM--CC--jj))
! When in eemmaaccss editing mode, this causes a switch to
! vvii editing mode.
! GNU Readline 4.2 2001 Mar 5 13
--- 797,858 ----
! MMiisscceellllaanneeoouuss
! rree--rreeaadd--iinniitt--ffiillee ((CC--xx CC--rr))
! Read in the contents of the _i_n_p_u_t_r_c file, and
! incorporate any bindings or variable assignments
! found there.
! aabboorrtt ((CC--gg))
! Abort the current editing command and ring the ter-
! minal's bell (subject to the setting of
! bbeellll--ssttyyllee).
! ddoo--uuppppeerrccaassee--vveerrssiioonn ((MM--aa,, MM--bb,, MM--_x,, ......))
! If the metafied character _x is lowercase, run the
! command that is bound to the corresponding upper-
! case character.
! pprreeffiixx--mmeettaa ((EESSCC))
! Metafy the next character typed. EESSCC ff is equiva-
! lent to MMeettaa--ff.
uunnddoo ((CC--__,, CC--xx CC--uu))
! Incremental undo, separately remembered for each
line.
rreevveerrtt--lliinnee ((MM--rr))
! Undo all changes made to this line. This is like
! executing the uunnddoo command enough times to return
the line to its initial state.
ttiillddee--eexxppaanndd ((MM--&&))
Perform tilde expansion on the current word.
sseett--mmaarrkk ((CC--@@,, MM--<>))
! Set the mark to the point. If a numeric argument
is supplied, the mark is set to that position.
eexxcchhaannggee--ppooiinntt--aanndd--mmaarrkk ((CC--xx CC--xx))
! 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.
cchhaarraacctteerr--sseeaarrcchh ((CC--]]))
! A character is read and point is moved to the next
! occurrence of that character. A negative count
searches for previous occurrences.
cchhaarraacctteerr--sseeaarrcchh--bbaacckkwwaarrdd ((MM--CC--]]))
! A character is read and point is moved to the pre-
! vious occurrence of that character. A negative
count searches for subsequent occurrences.
iinnsseerrtt--ccoommmmeenntt ((MM--##))
The value of the readline ccoommmmeenntt--bbeeggiinn 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 ccoommmmeenntt--bbeeggiinn makes
the current line a shell comment.
dduummpp--ffuunnccttiioonnss
! 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 _i_n_p_u_t_r_c file.
dduummpp--vvaarriiaabblleess
! Print all of the settable variables and their val-
! ues to the readline output stream. If a numeric
! GNU Readline 4.2a 2001 October 9 13
***************
*** 863,881 ****
DDEEFFAAUULLTT KKEEYY BBIINNDDIINNGGSS
! The following is a list of the default emacs and vi bind-
! ings. Characters with the eighth bit set are written as
M-, and are referred to as _m_e_t_a_f_i_e_d characters.
! The printable ASCII characters not mentioned in the list
! of emacs standard bindings are bound to the sseellff--iinnsseerrtt
! function, which just inserts the given character into the
! input line. In vi insertion mode, all characters not
! specifically mentioned are bound to sseellff--iinnsseerrtt. Charac-
! ters assigned to signal generation by _s_t_t_y(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 bbeellll--ssttyyllee vari-
able).
--- 863,897 ----
+ argument is supplied, the output is formatted in
+ such a way that it can be made part of an _i_n_p_u_t_r_c
+ file.
+ dduummpp--mmaaccrrooss
+ 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 _i_n_p_u_t_r_c
+ file.
+ eemmaaccss--eeddiittiinngg--mmooddee ((CC--ee))
+ When in vvii editing mode, this causes a switch to
+ eemmaaccss editing mode.
+ vvii--eeddiittiinngg--mmooddee ((MM--CC--jj))
+ When in eemmaaccss editing mode, this causes a switch to
+ vvii editing mode.
+
DDEEFFAAUULLTT KKEEYY BBIINNDDIINNGGSS
! The following is a list of the default emacs and vi bind-
! ings. Characters with the eighth bit set are written as
M-, and are referred to as _m_e_t_a_f_i_e_d characters.
! The printable ASCII characters not mentioned in the list
! of emacs standard bindings are bound to the sseellff--iinnsseerrtt
! function, which just inserts the given character into the
! input line. In vi insertion mode, all characters not
! specifically mentioned are bound to sseellff--iinnsseerrtt. Charac-
! ters assigned to signal generation by _s_t_t_y(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 bbeellll--ssttyyllee vari-
able).
***************
*** 901,904 ****
--- 917,932 ----
"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
***************
*** 917,932 ****
"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
--- 945,948 ----
***************
*** 967,970 ****
--- 983,998 ----
"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
***************
*** 984,998 ****
-
-
- GNU Readline 4.2 2001 Mar 5 15
-
-
-
-
-
- READLINE(3) READLINE(3)
-
-
VVII MMooddee bbiinnddiinnggss
VI Insert Mode functions
--- 1012,1015 ----
***************
*** 1032,1035 ****
--- 1049,1064 ----
"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
***************
*** 1049,1064 ****
"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
--- 1078,1081 ----
***************
*** 1098,1101 ****
--- 1115,1130 ----
"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
***************
*** 1114,1130 ****
_b_a_s_h(1)
-
-
-
-
- GNU Readline 4.2 2001 Mar 5 17
-
-
-
-
-
- READLINE(3) READLINE(3)
-
-
FFIILLEESS
_~_/_._i_n_p_u_t_r_c
--- 1143,1146 ----
***************
*** 1139,1155 ****
BBUUGG RREEPPOORRTTSS
! If you find a bug in rreeaaddlliinnee,, 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 rreeaaddlliinnee
library that you have.
! Once you have determined that a bug actually exists, mail
! a bug report to _b_u_g_-_r_e_a_d_l_i_n_e@_g_n_u_._o_r_g. If you have a fix,
! you are welcome to mail that as well! Suggestions and
! `philosophical' bug reports may be mailed to _b_u_g_-_r_e_a_d_-
_l_i_n_e@_g_n_u_._o_r_g or posted to the Usenet newsgroup
ggnnuu..bbaasshh..bbuugg.
! Comments and bug reports concerning this manual page
should be directed to _c_h_e_t_@_i_n_s_._C_W_R_U_._E_d_u.
--- 1155,1171 ----
BBUUGG RREEPPOORRTTSS
! If you find a bug in rreeaaddlliinnee,, 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 rreeaaddlliinnee
library that you have.
! Once you have determined that a bug actually exists, mail
! a bug report to _b_u_g_-_r_e_a_d_l_i_n_e@_g_n_u_._o_r_g. If you have a fix,
! you are welcome to mail that as well! Suggestions and
! `philosophical' bug reports may be mailed to _b_u_g_-_r_e_a_d_-
_l_i_n_e@_g_n_u_._o_r_g or posted to the Usenet newsgroup
ggnnuu..bbaasshh..bbuugg.
! Comments and bug reports concerning this manual page
should be directed to _c_h_e_t_@_i_n_s_._C_W_R_U_._E_d_u.
***************
*** 1168,1188 ****
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
! GNU Readline 4.2 2001 Mar 5 18
--- 1184,1188 ----
! GNU Readline 4.2a 2001 October 9 18
diff -Nrc2 readline-4.2/doc/readline.3 readline-4.2a/doc/readline.3
*** readline-4.2/doc/readline.3 Mon Mar 5 11:11:38 2001
--- readline-4.2a/doc/readline.3 Tue Oct 9 15:06:09 2001
***************
*** 7,13 ****
.\" chet@ins.CWRU.Edu
.\"
! .\" Last Change: Mon Mar 5 09:58:38 EST 2001
.\"
! .TH READLINE 3 "2001 Mar 5" "GNU Readline 4.2"
.\"
.\" File Name macro. This used to be `.PN', for Path Name,
--- 7,13 ----
.\" chet@ins.CWRU.Edu
.\"
! .\" Last Change: Tue Oct 9 15:06:03 EDT 2001
.\"
! .TH READLINE 3 "2001 October 9" "GNU Readline 4.2a"
.\"
.\" File Name macro. This used to be `.PN', for Path Name,
***************
*** 283,292 ****
.TP
.B \e\fInnn\fP
! the character whose ASCII code 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)
.RE
.PD
--- 283,292 ----
.TP
.B \e\fInnn\fP
! the eight-bit character whose value is the octal value \fInnn\fP
(one to three digits)
.TP
! .B \ex\fIHH\fP
! the eight-bit character whose value is the hexadecimal value \fIHH\fP
! (one or two hex digits)
.RE
.PD
***************
*** 392,395 ****
--- 392,400 ----
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,
***************
*** 430,433 ****
--- 435,444 ----
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
***************
*** 711,714 ****
--- 722,727 ----
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)
Binary files readline-4.2/doc/readline.dvi and readline-4.2a/doc/readline.dvi differ
diff -Nrc2 readline-4.2/doc/readline.html readline-4.2a/doc/readline.html
*** readline-4.2/doc/readline.html Mon Apr 16 11:05:45 2001
--- readline-4.2a/doc/readline.html Tue Oct 9 15:08:10 2001
***************
*** 1,161 ****
!
- GNU Readline Library
-
- GNU Readline Library
- Edition 4.2, for Readline Library
Version 4.2.
- Apr 2001
- Brian Fox, Free Software Foundation
- Chet Ramey, Case Western Reserve University
-
-
-
Table of Contents
-
-
!
This document describes the GNU Readline Library, a utility which aids
in the consistency of user interface across discrete programs that need
to provide a command line interface.
!
!
! Published by the Free Software Foundation
! 59 Temple Place, Suite 330,
! Boston, MA 02111 USA
!
!
!
! Permission is granted to make and distribute verbatim copies of
! this manual provided the copyright notice and this permission notice
! are preserved on all copies.
!
!
!
! Permission is granted to copy and distribute modified versions of this
! manual under the conditions for verbatim copying, provided that the entire
! resulting derived work is distributed under the terms of a permission
! notice identical to this one.
!
!
!
! Permission is granted to copy and distribute translations of this manual
! into another language, under the above conditions for modified versions,
! except that this permission notice may be stated in a translation approved
! by the Free Software Foundation.
!
!
- Copyright (C) 1988-2001 Free Software Foundation, Inc.
-
-
-
-
-
-
-
This chapter describes the basic features of the GNU
command line editing interface.
!
!
!
!
!
!
!
!
The following paragraphs describe the notation used to represent
keystrokes.
-
-
The text C-k is read as `Control-K' and describes the character
produced when the k key is pressed while the Control key
is depressed.
-
-
The text M-k is read as `Meta-K' and describes the character
produced when the Meta key (if you have one) is depressed, and the k
--- 1,110 ----
+
+
+
! GNU Readline Library:
!
!
!
!
!
!
!
!
!
!
! GNU Readline Library
!
This document describes the GNU Readline Library, a utility which aids
in the consistency of user interface across discrete programs that need
to provide a command line interface.
+
!
!
!
!
!
!
!
! 1. Command Line Editing
!
This chapter describes the basic features of the GNU
command line editing interface.
+
!
!
!
!
!
!
!
! 1.1 Introduction to Line Editing
!
+
The following paragraphs describe the notation used to represent
keystrokes.
+
The text C-k is read as `Control-K' and describes the character
produced when the k key is pressed while the Control key
is depressed.
+
The text M-k is read as `Meta-K' and describes the character
produced when the Meta key (if you have one) is depressed, and the k
***************
*** 168,204 ****
Meta key or may be configured as some other modifier, such as a
Compose key for typing accented characters.
-
-
If you do not have a Meta or ALT key, or another key working as
a Meta key, the identical keystroke can be generated by typing ESC
first, and then typing k.
Either process is known as metafying the k key.
-
-
The text M-C-k is read as `Meta-Control-k' and describes the
character produced by metafying C-k.
-
-
In addition, several keys have their own names. Specifically,
DEL, ESC, LFD, SPC, RET, and TAB all
stand for themselves when seen in this text, or in an init file
! (see section Readline Init File).
If your keyboard lacks a LFD key, typing C-j will
produce the desired character.
The RET key may be labeled Return or Enter on
some keyboards.
!
!
!
!
-
-
-
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
--- 117,160 ----
Meta key or may be configured as some other modifier, such as a
Compose key for typing accented characters.
+
If you do not have a Meta or ALT key, or another key working as
a Meta key, the identical keystroke can be generated by typing ESC
first, and then typing k.
Either process is known as metafying the k key.
+
The text M-C-k is read as `Meta-Control-k' and describes the
character produced by metafying C-k.
+
In addition, several keys have their own names. Specifically,
DEL, ESC, LFD, SPC, RET, and TAB all
stand for themselves when seen in this text, or in an init file
! (see section 1.3 Readline Init File).
If your keyboard lacks a LFD key, typing C-j will
produce the desired character.
The RET key may be labeled Return or Enter on
some keyboards.
+
!
!
!
!
! 1.2 Readline Interaction
!
Often during an interactive session you type in a long line of text,
only to notice that the first word on the line is misspelled. The
***************
*** 211,242 ****
end of the line to press RET; the entire line is accepted
regardless of the location of the cursor within the line.
!
!
!
!
!
!
!
-
-
-
-
-
In order to enter characters into the line, simply type them. The typed
character appears where the cursor was, and then the cursor moves one
space to the right. If you mistype a character, you can use your
erase character to back up and delete the mistyped character.
-
-
Sometimes you may mistype a character, and
not notice the error until you have typed several other characters. In
--- 167,205 ----
end of the line to press RET; the entire line is accepted
regardless of the location of the cursor within the line.
+
!
!
!
!
!
!
!
! 1.2.1 Readline Bare Essentials
!
In order to enter characters into the line, simply type them. The typed
character appears where the cursor was, and then the cursor moves one
space to the right. If you mistype a character, you can use your
erase character to back up and delete the mistyped character.
+
Sometimes you may mistype a character, and
not notice the error until you have typed several other characters. In
***************
*** 244,250 ****
correct your mistake. Afterwards, you can move the cursor to the right
with C-f.
-
-
When you add text in the middle of a line, you will notice that characters
to the right of the cursor are `pushed over' to make room for the text
--- 207,212 ----
correct your mistake. Afterwards, you can move the cursor to the right
with C-f.
+
When you add text in the middle of a line, you will notice that characters
to the right of the cursor are `pushed over' to make room for the text
***************
*** 253,293 ****
blank space created by the removal of the text. A list of the bare
essentials for editing the text of an input line follows.
-
-
- C-b
!
-
! Move back one character.
- C-f
!
-
! Move forward one character.
- DEL or Backspace
!
-
! Delete the character to the left of the cursor.
- C-d
!
-
! Delete the character underneath the cursor.
- Printing characters
!
-
! Insert the character into the line at the cursor.
- C-_ or C-x C-u
!
-
! Undo the last editing command. You can undo all the way back to an
empty line.
-
(Depending on your configuration, the Backspace key be set to
delete the character to the left of the cursor and the DEL key set
to delete the character underneath the cursor, like C-d, rather
than the character to the left of the cursor.)
!
!
!
!
!
The above table describes the most basic keystrokes that you need
in order to do editing of the input line. For your convenience, many
--- 215,261 ----
blank space created by the removal of the text. A list of the bare
essentials for editing the text of an input line follows.
+
- C-b
!
- Move back one character.
- C-f
!
- Move forward one character.
- DEL or Backspace
!
- Delete the character to the left of the cursor.
- C-d
!
- Delete the character underneath the cursor.
- Printing characters
!
- Insert the character into the line at the cursor.
- C-_ or C-x C-u
!
- Undo the last editing command. You can undo all the way back to an
empty line.
+
(Depending on your configuration, the Backspace key be set to
delete the character to the left of the cursor and the DEL key set
to delete the character underneath the cursor, like C-d, rather
than the character to the left of the cursor.)
+
!
!
!
!
! 1.2.2 Readline Movement Commands
!
+
The above table describes the most basic keystrokes that you need
in order to do editing of the input line. For your convenience, many
***************
*** 295,348 ****
C-d, and DEL. Here are some commands for moving more rapidly
about the line.
-
-
- C-a
!
-
! Move to the start of the line.
- C-e
!
-
! Move to the end of the line.
- M-f
!
-
! Move forward a word, where a word is composed of letters and digits.
- M-b
!
-
! Move backward a word.
- C-l
!
-
! Clear the screen, reprinting the current line at the top.
-
Notice how C-f moves forward a character, while M-f moves
forward a word. It is a loose convention that control keystrokes
operate on characters while meta keystrokes operate on words.
!
!
!
!
!
-
-
!
!
Killing text means to delete the text from the line, but to save
it away for later use, usually by yanking (re-inserting)
it back into the line.
(`Cut' and `paste' are more recent jargon for `kill' and `yank'.)
-
-
If the description for a command says that it `kills' text, then you can
be sure that you can get the text back in a different (or the same)
place later.
-
-
When you use a kill command, the text is saved in a kill-ring.
Any number of consecutive kills save all of the killed text together, so
--- 263,320 ----
C-d, and DEL. Here are some commands for moving more rapidly
about the line.
+
- C-a
!
- Move to the start of the line.
- C-e
!
- Move to the end of the line.
- M-f
!
- Move forward a word, where a word is composed of letters and digits.
- M-b
!
- Move backward a word.
- C-l
!
- Clear the screen, reprinting the current line at the top.
+
Notice how C-f moves forward a character, while M-f moves
forward a word. It is a loose convention that control keystrokes
operate on characters while meta keystrokes operate on words.
+
!
!
!
!
! 1.2.3 Readline Killing Commands
!
!
!
!
!
Killing text means to delete the text from the line, but to save
it away for later use, usually by yanking (re-inserting)
it back into the line.
(`Cut' and `paste' are more recent jargon for `kill' and `yank'.)
+
If the description for a command says that it `kills' text, then you can
be sure that you can get the text back in a different (or the same)
place later.
+
When you use a kill command, the text is saved in a kill-ring.
Any number of consecutive kills save all of the killed text together, so
***************
*** 351,408 ****
typed line is available to be yanked back later, when you are typing
another line.
!
-
-
Here is the list of commands for killing text.
-
-
- C-k
!
-
! Kill the text from the current cursor position to the end of the line.
- M-d
!
-
! Kill from the cursor to the end of the current word, or, if between
words, to the end of the next word.
Word boundaries are the same as those used by M-f.
- M-DEL
!
-
! Kill from the cursor the start of the previous word, or, if between
words, to the start of the previous word.
Word boundaries are the same as those used by M-b.
- C-w
!
-
! Kill from the cursor to the previous whitespace. This is different than
M-DEL because the word boundaries differ.
-
Here is how to yank the text back into the line. Yanking
means to copy the most-recently-killed text from the kill buffer.
-
-
- C-y
!
-
! Yank the most recently killed text back into the buffer at the cursor.
- M-y
!
-
! Rotate the kill-ring, and yank the new top. You can only do this if
the prior command is C-y or M-y.
!
!
!
!
You can pass numeric arguments to Readline commands. Sometimes the
argument acts as a repeat count, other times it is the sign of the
--- 323,390 ----
typed line is available to be yanked back later, when you are typing
another line.
!
!
Here is the list of commands for killing text.
+
- C-k
!
- Kill the text from the current cursor position to the end of the line.
!
- M-d
!
- Kill from the cursor to the end of the current word, or, if between
words, to the end of the next word.
Word boundaries are the same as those used by M-f.
+
- M-DEL
!
- Kill from the cursor the start of the current word, or, if between
words, to the start of the previous word.
Word boundaries are the same as those used by M-b.
+
- C-w
!
- Kill from the cursor to the previous whitespace. This is different than
M-DEL because the word boundaries differ.
+
+
Here is how to yank the text back into the line. Yanking
means to copy the most-recently-killed text from the kill buffer.
+
- C-y
!
- Yank the most recently killed text back into the buffer at the cursor.
!
- M-y
!
- Rotate the kill-ring, and yank the new top. You can only do this if
the prior command is C-y or M-y.
+
!
!
!
!
! 1.2.4 Readline Arguments
!
+
You can pass numeric arguments to Readline commands. Sometimes the
argument acts as a repeat count, other times it is the sign of the
***************
*** 411,417 ****
act in a backward direction. For example, to kill text back to the
start of the line, you might type `M-- C-k'.
-
-
The general way to pass numeric arguments to a command is to type meta
digits before the command. If the first `digit' typed is a minus
--- 393,398 ----
act in a backward direction. For example, to kill text back to the
start of the line, you might type `M-- C-k'.
+
The general way to pass numeric arguments to a command is to type meta
digits before the command. If the first `digit' typed is a minus
***************
*** 421,437 ****
the C-d command an argument of 10, you could type `M-1 0 C-d',
which will delete the next ten characters on the input line.
!
!
!
!
!
Readline provides commands for searching through the command history
for lines containing a specified string.
There are two search modes: incremental and non-incremental.
-
-
Incremental searches begin before the user has finished typing the
search string.
--- 402,430 ----
the C-d command an argument of 10, you could type `M-1 0 C-d',
which will delete the next ten characters on the input line.
+
!
!
!
!
! 1.2.5 Searching for Commands in the History
!
+
Readline provides commands for searching through the command history
for lines containing a specified string.
There are two search modes: incremental and non-incremental.
+
Incremental searches begin before the user has finished typing the
search string.
***************
*** 449,455 ****
When the search is terminated, the history entry containing the
search string becomes the current line.
-
-
To find other matching entries in the history list, type C-r or
C-s as appropriate.
--- 442,447 ----
When the search is terminated, the history entry containing the
search string becomes the current line.
+
To find other matching entries in the history list, type C-r or
C-s as appropriate.
***************
*** 462,481 ****
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.
!
!
!
!
-
-
-
Although the Readline library comes with a set of Emacs-like
keybindings installed by default, it is possible to use a different set
--- 454,487 ----
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-rs 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.
+
!
!
!
!
! 1.3 Readline Init File
!
Although the Readline library comes with a set of Emacs-like
keybindings installed by default, it is possible to use a different set
***************
*** 484,558 ****
commands in an inputrc file, conventionally in his home directory.
The name of this
! file is taken from the value of the environment variable @env{INPUTRC}. If
that variable is unset, the default is `~/.inputrc'.
-
-
When a program which uses the Readline library starts up, the
init file is read, and the key bindings are set.
-
-
In addition, the C-x C-r
command re-reads this init file, thus
incorporating any changes that you might have made to it.
!
!
!
!
!
!
!
!
There are only a few basic constructs allowed in the
Readline init file. Blank lines are ignored.
Lines beginning with a `#' are comments.
Lines beginning with a `$' indicate conditional
! constructs (see section Conditional Init Constructs). Other lines
denote variable settings and key bindings.
-
-
- Variable Settings
!
-
! You can modify the run-time behavior of Readline by
altering the values of variables in Readline
using the
set
command within the init file.
The syntax is simple:
!
!
! set variable value
!
Here, for example, is how to
change from the default Emacs-like key binding to use
vi
line editing commands:
!
!
! set editing-mode vi
!
Variable names and values, where appropriate, are recognized without regard
to case.
A great deal of run-time behavior is changeable with the following
variables.
!
bell-style
! -
!
Controls what happens when Readline wants to ring the terminal bell.
If set to `none', Readline never rings the bell. If set to
--- 490,578 ----
commands in an inputrc file, conventionally in his home directory.
The name of this
! file is taken from the value of the environment variable
INPUTRC
. If
that variable is unset, the default is `~/.inputrc'.
+
When a program which uses the Readline library starts up, the
init file is read, and the key bindings are set.
+
In addition, the C-x C-r
command re-reads this init file, thus
incorporating any changes that you might have made to it.
+
!
!
!
!
!
!
!
!
!
!
!
!
!
! 1.3.1 Readline Init File Syntax
!
+
There are only a few basic constructs allowed in the
Readline init file. Blank lines are ignored.
Lines beginning with a `#' are comments.
Lines beginning with a `$' indicate conditional
! constructs (see section 1.3.2 Conditional Init Constructs). Other lines
denote variable settings and key bindings.
+
- Variable Settings
!
- You can modify the run-time behavior of Readline by
altering the values of variables in Readline
using the
set
command within the init file.
The syntax is simple:
+
!
Here, for example, is how to
change from the default Emacs-like key binding to use
vi
line editing commands:
+
!
Variable names and values, where appropriate, are recognized without regard
to case.
+
A great deal of run-time behavior is changeable with the following
variables.
+
!
bell-style
! -
Controls what happens when Readline wants to ring the terminal bell.
If set to `none', Readline never rings the bell. If set to
***************
*** 560,580 ****
If set to `audible' (the default), Readline attempts to ring
the terminal's bell.
comment-begin
! -
!
The string to insert at the beginning of the line when the
insert-comment
command is executed. The default value
is "#"
.
completion-ignore-case
! -
! If set to `on', Readline performs filename matching and completion
in a case-insensitive fashion.
The default value is `off'.
completion-query-items
! -
!
The number of possible completions that determines when the user is
asked whether he wants to see the list of possibilities. If the
--- 580,600 ----
If set to `audible' (the default), Readline attempts to ring
the terminal's bell.
+
comment-begin
! -
The string to insert at the beginning of the line when the
insert-comment
command is executed. The default value
is "#"
.
+
completion-ignore-case
! - If set to `on', Readline performs filename matching and completion
in a case-insensitive fashion.
The default value is `off'.
+
completion-query-items
! -
The number of possible completions that determines when the user is
asked whether he wants to see the list of possibilities. If the
***************
*** 584,627 ****
This variable must be set to an integer value greater than or equal to 0.
The default limit is
100
.
convert-meta
! -
!
If set to `on', Readline will convert characters with the
eighth bit set to an ASCII key sequence by stripping the eighth
bit and prefixing an ESC character, converting them to a
meta-prefixed key sequence. The default value is `on'.
disable-completion
! -
!
If set to `On', Readline will inhibit word completion.
Completion characters will be inserted into the line as if they had
been mapped to
self-insert
. The default is `off'.
editing-mode
! -
!
The
editing-mode
variable controls which default set of
key bindings is used. By default, Readline starts up in Emacs editing
mode, where the keystrokes are most similar to Emacs. This variable can be
set to either `emacs' or `vi'.
enable-keypad
! -
!
When set to `on', Readline will try to enable the application
keypad when it is called. Some systems need this to enable the
arrow keys. The default is `off'.
expand-tilde
! -
!
If set to `on', tilde expansion is performed when Readline
attempts word completion. The default is `off'.
horizontal-scroll-mode
! -
!
This variable can be set to either `on' or `off'. Setting it
to `on' means that the text of the lines being edited will scroll
--- 604,653 ----
This variable must be set to an integer value greater than or equal to 0.
The default limit is
100
.
+
convert-meta
! -
If set to `on', Readline will convert characters with the
eighth bit set to an ASCII key sequence by stripping the eighth
bit and prefixing an ESC character, converting them to a
meta-prefixed key sequence. The default value is `on'.
+
disable-completion
! -
If set to `On', Readline will inhibit word completion.
Completion characters will be inserted into the line as if they had
been mapped to
self-insert
. The default is `off'.
+
editing-mode
! -
The
editing-mode
variable controls which default set of
key bindings is used. By default, Readline starts up in Emacs editing
mode, where the keystrokes are most similar to Emacs. This variable can be
set to either `emacs' or `vi'.
+
enable-keypad
! -
When set to `on', Readline will try to enable the application
keypad when it is called. Some systems need this to enable the
arrow keys. The default is `off'.
+
expand-tilde
! -
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 scroll
***************
*** 629,637 ****
of the screen, instead of wrapping onto a new screen line. By default,
this variable is set to `off'.
input-meta
! -
!
!
If set to `on', Readline will enable eight-bit input (it
will not clear the eighth bit in the characters it reads),
--- 655,663 ----
of the screen, instead of wrapping onto a new screen line. By default,
this variable is set to `off'.
+
input-meta
! -
!
If set to `on', Readline will enable eight-bit input (it
will not clear the eighth bit in the characters it reads),
***************
*** 639,654 ****
default value is `off'. The name
meta-flag
is a
synonym for this variable.
isearch-terminators
! -
!
The string of characters that should terminate an incremental search without
! subsequently executing the character as a command (see section Searching for Commands in the History).
If this variable has not been given a value, the characters ESC and
C-J will terminate an incremental search.
keymap
! -
!
Sets Readline's idea of the current keymap for key binding commands.
Acceptable
keymap
names are
--- 665,680 ----
default value is `off'. The name meta-flag
is a
synonym for this variable.
+
isearch-terminators
! -
The string of characters that should terminate an incremental search without
! subsequently executing the character as a command (see section 1.2.5 Searching for Commands in the History).
If this variable has not been given a value, the characters ESC and
C-J will terminate an incremental search.
+
keymap
! -
Sets Readline's idea of the current keymap for key binding commands.
Acceptable
keymap
names are
***************
*** 665,697 ****
The value of the editing-mode
variable also affects the
default keymap.
mark-directories
! -
! If set to `on', completed directory names have a slash
appended. The default is `on'.
mark-modified-lines
! -
!
This variable, when set to `on', causes Readline to display an
asterisk (`*') at the start of history lines which have been modified.
This variable is `off' by default.
output-meta
! -
!
If set to `on', Readline will display characters with the
eighth bit set directly rather than as a meta-prefixed escape
sequence. The default is `off'.
print-completions-horizontally
! -
! If set to `on', Readline will display completions with matches
sorted horizontally in alphabetical order, rather than down the screen.
The default is `off'.
show-all-if-ambiguous
! -
!
This alters the default behavior of the completion functions. If
set to `on',
--- 691,732 ----
The value of the
editing-mode
variable also affects the
default keymap.
+
mark-directories
! - If set to `on', completed directory names have a slash
appended. The default is `on'.
+
mark-modified-lines
! -
This variable, when set to `on', causes Readline to display an
asterisk (`*') at the start of history lines which have been modified.
This variable is `off' by default.
+
+
+
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
sequence. The default is `off'.
+
print-completions-horizontally
! - If set to `on', Readline will display completions with matches
sorted horizontally in alphabetical order, rather than down the screen.
The default is `off'.
+
show-all-if-ambiguous
! -
This alters the default behavior of the completion functions. If
set to `on',
***************
*** 699,719 ****
matches to be listed immediately instead of ringing the bell.
The default value is `off'.
visible-stats
! -
!
If set to `on', a character denoting a file's type
is appended to the filename when listing possible
completions. The default is `off'.
- Key Bindings
!
-
! The syntax for controlling key bindings in the init file is
simple. First you need to find the name of the command that you
want to change. The following sections contain tables of the command
name, the default keybinding, if any, and a short description of what
the command does.
Once you know the name of the command, simply place on a line
--- 734,756 ----
matches to be listed immediately instead of ringing the bell.
The default value is `off'.
+
visible-stats
! -
If set to `on', a character denoting a file's type
is appended to the filename when listing possible
completions. The default is `off'.
+
+
- Key Bindings
!
- The syntax for controlling key bindings in the init file is
simple. First you need to find the name of the command that you
want to change. The following sections contain tables of the command
name, the default keybinding, if any, and a short description of what
the command does.
+
Once you know the name of the command, simply place on a line
***************
*** 723,741 ****
can be expressed in different ways, depending on what you find most
comfortable.
In addition to command names, readline allows keys to be bound
to a string that is inserted when the key is pressed (a macro).
-
- keyname: function-name or macro
!
-
! keyname is the name of a key spelled out in English. For example:
!
!
! Control-u: universal-argument
Meta-Rubout: backward-kill-word
Control-o: "> output"
!
In the above example, C-u is bound to the function
--- 760,776 ----
can be expressed in different ways, depending on what you find most
comfortable.
+
In addition to command names, readline allows keys to be bound
to a string that is inserted when the key is pressed (a macro).
+
- keyname: function-name or macro
!
- keyname is the name of a key spelled out in English. For example:
!
| Control-u: universal-argument
Meta-Rubout: backward-kill-word
Control-o: "> output"
! |
In the above example, C-u is bound to the function
***************
*** 745,748 ****
--- 780,784 ----
expressed on the right hand side (that is, to insert the text
`> output' into the line).
+
A number of symbolic character names are recognized while
***************
*** 760,778 ****
and
TAB.
- "keyseq": function-name or macro
!
-
! keyseq differs from keyname above in that strings
denoting an entire key sequence can be specified, by placing
the key sequence in double quotes. Some GNU Emacs style key
escapes can be used, as in the following example, but the
special character names are not recognized.
!
!
! "\C-u": universal-argument
"\C-x\C-r": re-read-init-file
"\e[11~": "Function Key 1"
!
In the above example, C-u is again bound to the function
--- 796,813 ----
and
TAB.
+
- "keyseq": function-name or macro
!
- keyseq differs from keyname above in that strings
denoting an entire key sequence can be specified, by placing
the key sequence in double quotes. Some GNU Emacs style key
escapes can be used, as in the following example, but the
special character names are not recognized.
+
!
| "\C-u": universal-argument
"\C-x\C-r": re-read-init-file
"\e[11~": "Function Key 1"
! |
In the above example, C-u is again bound to the function
***************
*** 781,850 ****
and `ESC [ 1 1 ~' is bound to insert
the text `Function Key 1'.
The following GNU Emacs style escape sequences are available when
specifying key sequences:
-
\C-
! -
! control prefix
\M-
! -
! meta prefix
\e
! -
! an escape character
\\
! -
! backslash
\"
! -
! ", a double quotation mark
\'
! -
! ', a single quote or apostrophe
In addition to the GNU Emacs style escape sequences, a second
set of backslash escapes is available:
-
\a
! -
! alert (bell)
\b
! -
! backspace
\d
! -
! delete
\f
! -
! form feed
\n
! -
! newline
\r
! -
! carriage return
\t
! -
! horizontal tab
\v
! -
! vertical tab
\nnn
! -
! the character whose ASCII code is the octal value nnn
! (one to three digits)
!
\xnnn
! -
! the character whose ASCII code is the hexadecimal value nnn
(one to three digits)
When entering the text of a macro, single or double quotes must
--- 816,873 ----
and `ESC [ 1 1 ~' is bound to insert
the text `Function Key 1'.
+
+
The following GNU Emacs style escape sequences are available when
specifying key sequences:
+
\C-
! - control prefix
\M-
! - meta prefix
\e
! - an escape character
\\
! - backslash
\"
! - ", a double quotation mark
\'
! - ', a single quote or apostrophe
+
In addition to the GNU Emacs style escape sequences, a second
set of backslash escapes is available:
+
\a
! - alert (bell)
\b
! - backspace
\d
! - delete
\f
! - form feed
\n
! - newline
\r
! - carriage return
\t
! - horizontal tab
\v
! - vertical tab
\nnn
! - the eight-bit character whose value is the octal value nnn
(one to three digits)
+
\xHH
+ - the eight-bit character whose value is the hexadecimal value HH
+ (one or two hex digits)
+
When entering the text of a macro, single or double quotes must
***************
*** 856,891 ****
For example, the following binding will make `C-x \'
insert a single `\' into the line:
!
!
! "\C-x\\": "\\"
!
!
!
!
!
Readline implements a facility similar in spirit to the conditional
compilation features of the C preprocessor which allows key
bindings and variable settings to be performed as the result
of tests. There are four parser directives used.
-
-
$if
! -
! The
$if
construct allows bindings to be made based on the
editing mode, the terminal being used, or the application using
Readline. The text of the test extends to the end of the line;
no characters are required to isolate it.
-
mode
! -
! The
mode=
form of the $if
directive is used to test
whether Readline is in emacs
or vi
mode.
This may be used in conjunction
--- 879,923 ----
For example, the following binding will make `C-x \'
insert a single `\' into the line:
!
+
!
!
!
!
! 1.3.2 Conditional Init Constructs
!
+
Readline implements a facility similar in spirit to the conditional
compilation features of the C preprocessor which allows key
bindings and variable settings to be performed as the result
of tests. There are four parser directives used.
+
$if
! - The
$if
construct allows bindings to be made based on the
editing mode, the terminal being used, or the application using
Readline. The text of the test extends to the end of the line;
no characters are required to isolate it.
+
mode
! - The
mode=
form of the $if
directive is used to test
whether Readline is in emacs
or vi
mode.
This may be used in conjunction
***************
*** 893,900 ****
the emacs-standard
and emacs-ctlx
keymaps only if
Readline is starting out in emacs
mode.
term
! -
! The
term=
form may be used to include terminal-specific
key bindings, perhaps to bind the key sequences output by the
terminal's function keys. The word on the right side of the
--- 925,932 ----
the emacs-standard
and emacs-ctlx
keymaps only if
Readline is starting out in emacs
mode.
+
term
! - The
term=
form may be used to include terminal-specific
key bindings, perhaps to bind the key sequences output by the
terminal's function keys. The word on the right side of the
***************
*** 903,910 ****
allows sun
to match both sun
and sun-cmd
,
for instance.
application
! -
! The application construct is used to include
application-specific settings. Each program using the Readline
library sets the application name, and you can test for
--- 935,942 ----
allows
sun
to match both sun
and sun-cmd
,
for instance.
+
application
! - The application construct is used to include
application-specific settings. Each program using the Readline
library sets the application name, and you can test for
***************
*** 913,960 ****
a specific program. For instance, the following command adds a
key sequence that quotes the current or previous word in Bash:
!
!
! $if Bash
# Quote the current or previous word
"\C-xq": "\eb\"\ef\""
$endif
!
!
!
$endif
! -
! This command, as seen in the previous example, terminates an
$if
command.
$else
! -
! Commands in this branch of the
$if
directive are executed if
the test fails.
$include
! -
! This directive takes a single filename as an argument and reads commands
and bindings from that file.
For example, the following directive reads from `/etc/inputrc':
!
! $include /etc/inputrc
!
!
!
!
!
!
!
!
Here is an example of an inputrc file. This illustrates key
binding, variable assignment, and conditional syntax.
!
!
!
! # This file controls the behaviour of line input editing for
# programs that use the Gnu Readline library. Existing programs
# include FTP, Bash, and Gdb.
--- 945,996 ----
a specific program. For instance, the following command adds a
key sequence that quotes the current or previous word in Bash:
!
| $if Bash
# Quote the current or previous word
"\C-xq": "\eb\"\ef\""
$endif
! |
!
$endif
! - This command, as seen in the previous example, terminates an
$if
command.
+
$else
! - Commands in this branch of the
$if
directive are executed if
the test fails.
+
$include
! - This directive takes a single filename as an argument and reads commands
and bindings from that file.
For example, the following directive reads from `/etc/inputrc':
+
+
!
!
!
!
! 1.3.3 Sample Init File
!
+
Here is an example of an inputrc file. This illustrates key
binding, variable assignment, and conditional syntax.
+
!
| # This file controls the behaviour of line input editing for
# programs that use the Gnu Readline library. Existing programs
# include FTP, Bash, and Gdb.
***************
*** 1053,1146 ****
"\M-.": yank-last-arg
$endif
!
!
!
!
!
!
!
!
This section describes Readline commands that may be bound to key
sequences.
Command names without an accompanying key sequence are unbound by default.
-
-
In the following descriptions, point refers to the current cursor
position, and mark refers to a cursor position saved by the
set-mark command.
The text between the point and mark is referred to as the region.
!
!
!
!
!
beginning-of-line (C-a)
! -
!
Move to the start of the current line.
end-of-line (C-e)
! -
!
Move to the end of the line.
forward-char (C-f)
! -
!
Move forward a character.
-
backward-char (C-b)
- -
Move back a character.
forward-word (M-f)
! -
!
Move forward to the end of the next word. Words are composed of
letters and digits.
backward-word (M-b)
! -
!
Move back to the start of the current or previous word. Words are
composed of letters and digits.
clear-screen (C-l)
! -
!
Clear the screen and redraw the current line,
leaving the current line at the top of the screen.
redraw-current-line ()
! -
!
Refresh the current line. By default, this is unbound.
!
!
!
!
accept-line (Newline or Return)
! -
!
Accept the line regardless of where the cursor is.
If this line is
--- 1089,1228 ----
"\M-.": yank-last-arg
$endif
!
|
+
+
+
+
+ 1.4 Bindable Readline Commands
+
+
+
+
+
This section describes Readline commands that may be bound to key
sequences.
Command names without an accompanying key sequence are unbound by default.
+
In the following descriptions, point refers to the current cursor
position, and mark refers to a cursor position saved by the
set-mark
command.
The text between the point and mark is referred to as the region.
+
!
!
!
!
! 1.4.1 Commands For Moving
!
!
beginning-of-line (C-a)
! -
Move to the start of the current line.
+
+
end-of-line (C-e)
! -
Move to the end of the line.
+
+
forward-char (C-f)
! -
Move forward a character.
+
+
backward-char (C-b)
+ -
Move back a character.
+
+
forward-word (M-f)
! -
Move forward to the end of the next word. Words are composed of
letters and digits.
+
+
backward-word (M-b)
! -
Move back to the start of the current or previous word. Words are
composed of letters and digits.
+
+
clear-screen (C-l)
! -
Clear the screen and redraw the current line,
leaving the current line at the top of the screen.
+
+
redraw-current-line ()
! -
Refresh the current line. By default, this is unbound.
+
+
!
!
!
!
! 1.4.2 Commands For Manipulating The History
!
!
!
accept-line (Newline or Return)
! -
Accept the line regardless of where the cursor is.
If this line is
***************
*** 1149,1218 ****
If this line is a modified history line, the history line is restored
to its original state.
previous-history (C-p)
! -
!
Move `back' through the history list, fetching the previous command.
next-history (C-n)
! -
!
Move `forward' through the history list, fetching the next command.
beginning-of-history (M-<)
! -
!
Move to the first line in the history.
end-of-history (M->)
! -
!
Move to the end of the input history, i.e., the line currently
being entered.
reverse-search-history (C-r)
! -
!
Search backward starting at the current line and moving `up' through
the history as necessary. This is an incremental search.
forward-search-history (C-s)
! -
!
Search forward starting at the current line and moving `down' through
the the history as necessary. This is an incremental search.
non-incremental-reverse-search-history (M-p)
! -
!
Search backward starting at the current line and moving `up'
through the history as necessary using a non-incremental search
for a string supplied by the user.
non-incremental-forward-search-history (M-n)
! -
!
Search forward starting at the current line and moving `down'
through the the history as necessary using a non-incremental search
for a string supplied by the user.
history-search-forward ()
! -
!
Search forward through the history for the string of characters
between the start of the current line and the point.
This is a non-incremental search.
By default, this command is unbound.
history-search-backward ()
! -
!
Search backward through the history for the string of characters
between the start of the current line and the point. This
is a non-incremental search. By default, this command is unbound.
yank-nth-arg (M-C-y)
! -
!
Insert the first argument to the previous command (usually
the second word on the previous line) at point.
--- 1231,1311 ----
If this line is a modified history line, the history line is restored
to its original state.
+
+
previous-history (C-p)
! -
Move `back' through the history list, fetching the previous command.
+
+
next-history (C-n)
! -
Move `forward' through the history list, fetching the next command.
+
+
beginning-of-history (M-<)
! -
Move to the first line in the history.
+
+
end-of-history (M->)
! -
Move to the end of the input history, i.e., the line currently
being entered.
+
+
reverse-search-history (C-r)
! -
Search backward starting at the current line and moving `up' through
the history as necessary. This is an incremental search.
+
+
forward-search-history (C-s)
! -
Search forward starting at the current line and moving `down' through
the the history as necessary. This is an incremental search.
+
+
non-incremental-reverse-search-history (M-p)
! -
Search backward starting at the current line and moving `up'
through the history as necessary using a non-incremental search
for a string supplied by the user.
+
+
non-incremental-forward-search-history (M-n)
! -
Search forward starting at the current line and moving `down'
through the the history as necessary using a non-incremental search
for a string supplied by the user.
+
+
history-search-forward ()
! -
Search forward through the history for the string of characters
between the start of the current line and the point.
This is a non-incremental search.
By default, this command is unbound.
+
+
history-search-backward ()
! -
Search backward through the history for the string of characters
between the start of the current line and the point. This
is a non-incremental search. By default, this command is unbound.
+
+
yank-nth-arg (M-C-y)
! -
Insert the first argument to the previous command (usually
the second word on the previous line) at point.
***************
*** 1221,1228 ****
in the previous command begin with word 0). A negative argument
inserts the nth word from the end of the previous command.
yank-last-arg (M-. or M-_)
! -
!
Insert last argument to the previous command (the last word of the
previous history entry). With an
--- 1314,1322 ----
in the previous command begin with word 0). A negative argument
inserts the nth word from the end of the previous command.
+
+
yank-last-arg (M-. or M-_)
! -
Insert last argument to the previous command (the last word of the
previous history entry). With an
***************
*** 1230,1282 ****
Successive calls to
yank-last-arg
move back through the history
list, inserting the last argument of each line in turn.
!
!
!
!
delete-char (C-d)
! -
!
Delete the character at point. If point is at the
beginning of the line, there are no characters in the line, and
the last character typed was not bound to
delete-char
, then
return EOF.
backward-delete-char (Rubout)
! -
!
Delete the character behind the cursor. A numeric argument means
to kill the characters instead of deleting them.
forward-backward-delete-char ()
! -
!
Delete the character under the cursor, unless the cursor is at the
end of the line, in which case the character behind the cursor is
deleted. By default, this is not bound to a key.
quoted-insert (C-q or C-v)
! -
!
Add the next character typed to the line verbatim. This is
how to insert key sequences like C-q, for example.
tab-insert (M-TAB)
! -
!
Insert a tab character.
!
self-insert (a, b, A, 1, !, ...)
! -
!
Insert yourself.
transpose-chars (C-t)
! -
!
Drag the character before the cursor forward over
the character at the cursor, moving the
--- 1324,1397 ----
Successive calls to
yank-last-arg
move back through the history
list, inserting the last argument of each line in turn.
+
+
!
!
!
!
! 1.4.3 Commands For Changing Text
!
!
!
delete-char (C-d)
! -
Delete the character at point. If point is at the
beginning of the line, there are no characters in the line, and
the last character typed was not bound to
delete-char
, then
return EOF.
+
+
backward-delete-char (Rubout)
! -
Delete the character behind the cursor. A numeric argument means
to kill the characters instead of deleting them.
+
+
forward-backward-delete-char ()
! -
Delete the character under the cursor, unless the cursor is at the
end of the line, in which case the character behind the cursor is
deleted. By default, this is not bound to a key.
+
+
quoted-insert (C-q or C-v)
! -
Add the next character typed to the line verbatim. This is
how to insert key sequences like C-q, for example.
+
+
tab-insert (M-TAB)
! -
Insert a tab character.
+
!
!
self-insert (a, b, A, 1, !, ...)
! -
Insert yourself.
+
+
transpose-chars (C-t)
! -
Drag the character before the cursor forward over
the character at the cursor, moving the
***************
*** 1285,1418 ****
transposes the last two characters of the line.
Negative arguments have no effect.
transpose-words (M-t)
! -
!
Drag the word before point past the word after point,
moving point past that word as well.
upcase-word (M-u)
! -
!
Uppercase the current (or following) word. With a negative argument,
uppercase the previous word, but do not move the cursor.
downcase-word (M-l)
! -
!
Lowercase the current (or following) word. With a negative argument,
lowercase the previous word, but do not move the cursor.
capitalize-word (M-c)
! -
!
Capitalize the current (or following) word. With a negative argument,
capitalize the previous word, but do not move the cursor.
!
!
!
kill-line (C-k)
! -
!
Kill the text from point to the end of the line.
backward-kill-line (C-x Rubout)
! -
!
Kill backward to the beginning of the line.
unix-line-discard (C-u)
! -
!
Kill backward from the cursor to the beginning of the current line.
kill-whole-line ()
! -
!
Kill all characters on the current line, no matter where point is.
By default, this is unbound.
kill-word (M-d)
! -
!
Kill from point to the end of the current word, or if between
words, to the end of the next word.
Word boundaries are the same as
forward-word
.
backward-kill-word (M-DEL)
! -
!
Kill the word behind point.
Word boundaries are the same as
backward-word
.
unix-word-rubout (C-w)
! -
!
Kill the word behind point, using white space as a word boundary.
The killed text is saved on the kill-ring.
delete-horizontal-space ()
! -
!
Delete all spaces and tabs around point. By default, this is unbound.
kill-region ()
! -
!
Kill the text in the current region.
By default, this command is unbound.
copy-region-as-kill ()
! -
!
Copy the text in the region to the kill buffer, so it can be yanked
right away. By default, this command is unbound.
copy-backward-word ()
! -
!
Copy the word before point to the kill buffer.
The word boundaries are the same as
backward-word
.
By default, this command is unbound.
copy-forward-word ()
! -
!
Copy the word following point to the kill buffer.
The word boundaries are the same as
forward-word
.
By default, this command is unbound.
yank (C-y)
! -
!
Yank the top of the kill ring into the buffer at point.
yank-pop (M-y)
! -
!
Rotate the kill-ring, and yank the new top. You can only do this if
the prior command is
yank
or yank-pop
.
!
!
!
! digit-argument (M-0, M-1, ... M--)
! -
!
Add this digit to the argument already accumulating, or start a new
argument. M-- starts a negative argument.
universal-argument ()
! -
!
This is another way to specify an argument.
If this command is followed by one or more digits, optionally with a
--- 1400,1583 ----
transposes the last two characters of the line.
Negative arguments have no effect.
+
+
transpose-words (M-t)
! -
Drag the word before point past the word after point,
moving point past that word as well.
+ If the insertion point is at the end of the line, this transposes
+ the last two words on the line.
+
+
upcase-word (M-u)
! -
Uppercase the current (or following) word. With a negative argument,
uppercase the previous word, but do not move the cursor.
+
+
downcase-word (M-l)
! -
Lowercase the current (or following) word. With a negative argument,
lowercase the previous word, but do not move the cursor.
+
+
capitalize-word (M-c)
! -
Capitalize the current (or following) word. With a negative argument,
capitalize the previous word, but do not move the cursor.
+
+
!
!
!
!
! 1.4.4 Killing And Yanking
!
!
+
kill-line (C-k)
! -
Kill the text from point to the end of the line.
+
+
backward-kill-line (C-x Rubout)
! -
Kill backward to the beginning of the line.
+
+
unix-line-discard (C-u)
! -
Kill backward from the cursor to the beginning of the current line.
+
+
kill-whole-line ()
! -
Kill all characters on the current line, no matter where point is.
By default, this is unbound.
+
+
kill-word (M-d)
! -
Kill from point to the end of the current word, or if between
words, to the end of the next word.
Word boundaries are the same as
forward-word
.
+
+
backward-kill-word (M-DEL)
! -
Kill the word behind point.
Word boundaries are the same as
backward-word
.
+
+
unix-word-rubout (C-w)
! -
Kill the word behind point, using white space as a word boundary.
The killed text is saved on the kill-ring.
+
+
delete-horizontal-space ()
! -
Delete all spaces and tabs around point. By default, this is unbound.
+
+
kill-region ()
! -
Kill the text in the current region.
By default, this command is unbound.
+
+
copy-region-as-kill ()
! -
Copy the text in the region to the kill buffer, so it can be yanked
right away. By default, this command is unbound.
+
+
copy-backward-word ()
! -
Copy the word before point to the kill buffer.
The word boundaries are the same as
backward-word
.
By default, this command is unbound.
+
+
copy-forward-word ()
! -
Copy the word following point to the kill buffer.
The word boundaries are the same as
forward-word
.
By default, this command is unbound.
+
+
yank (C-y)
! -
Yank the top of the kill ring into the buffer at point.
+
+
yank-pop (M-y)
! -
Rotate the kill-ring, and yank the new top. You can only do this if
the prior command is
yank
or yank-pop
.
+
!
!
!
!
! 1.4.5 Specifying Numeric Arguments
!
!
! digit-argument (M-0, M-1, ... M--)
! -
Add this digit to the argument already accumulating, or start a new
argument. M-- starts a negative argument.
+
+
universal-argument ()
! -
This is another way to specify an argument.
If this command is followed by one or more digits, optionally with a
***************
*** 1428,1459 ****
By default, this is not bound to a key.
!
!
!
!
complete (TAB)
! -
!
Attempt to perform completion on the text before point.
The actual completion performed is application-specific.
The default is filename completion.
possible-completions (M-?)
! -
!
List the possible completions of the text before point.
insert-completions (M-*)
! -
!
Insert all completions of the text before point that would have
been generated by
possible-completions
.
menu-complete ()
! -
!
Similar to
complete
, but replaces the word to be completed
with a single match from the list of possible completions.
--- 1593,1641 ----
By default, this is not bound to a key.
+
!
!
!
!
! 1.4.6 Letting Readline Type For You
!
!
!
complete (TAB)
! -
Attempt to perform completion on the text before point.
The actual completion performed is application-specific.
The default is filename completion.
+
+
possible-completions (M-?)
! -
List the possible completions of the text before point.
+
+
insert-completions (M-*)
! -
Insert all completions of the text before point that would have
been generated by
possible-completions
.
+
+
menu-complete ()
! -
Similar to
complete
, but replaces the word to be completed
with a single match from the list of possible completions.
***************
*** 1468,1475 ****
This command is intended to be bound to TAB, but is unbound
by default.
delete-char-or-list ()
! -
!
Deletes the character under the cursor if not at the beginning or
end of the line (like
delete-char
).
--- 1650,1658 ----
This command is intended to be bound to TAB, but is unbound
by default.
+
+
delete-char-or-list ()
! -
Deletes the character under the cursor if not at the beginning or
end of the line (like
delete-char
).
***************
*** 1477,1631 ****
possible-completions
.
This command is unbound by default.
!
!
!
start-kbd-macro (C-x ()
! -
!
Begin saving the characters typed into the current keyboard macro.
end-kbd-macro (C-x ))
! -
!
Stop saving the characters typed into the current keyboard macro
and save the definition.
call-last-kbd-macro (C-x e)
! -
!
Re-execute the last keyboard macro defined, by making the characters
in the macro appear as if typed at the keyboard.
!
!
!
re-read-init-file (C-x C-r)
! -
!
Read in the contents of the inputrc file, and incorporate
any bindings or variable assignments found there.
abort (C-g)
! -
!
Abort the current editing command and
ring the terminal's bell (subject to the setting of
bell-style
).
! do-uppercase-version (M-a, M-b, M-x, ...)
! -
!
If the metafied character x is lowercase, run the command
that is bound to the corresponding uppercase character.
prefix-meta (ESC)
! -
!
Metafy the next character typed. This is for keyboards
without a meta key. Typing `ESC f' is equivalent to typing
M-f.
undo (C-_ or C-x C-u)
! -
!
Incremental undo, separately remembered for each line.
revert-line (M-r)
! -
!
Undo all changes made to this line. This is like executing the
undo
command enough times to get back to the beginning.
tilde-expand (M-~)
! -
!
Perform tilde expansion on the current word.
set-mark (C-@)
! -
!
Set the mark to the point. If a
numeric argument is supplied, the mark is set to that position.
exchange-point-and-mark (C-x C-x)
! -
!
Swap the point with the mark. The current cursor position is set to
the saved position, and the old cursor position is saved as the mark.
character-search (C-])
! -
!
A character is read and point is moved to the next occurrence of that
character. A negative count searches for previous occurrences.
character-search-backward (M-C-])
! -
!
A character is read and point is moved to the previous occurrence
of that character. A negative count searches for subsequent
occurrences.
insert-comment (M-#)
! -
!
The value of the
comment-begin
variable is inserted at the beginning of the current line,
and the line is accepted as if a newline had been typed.
dump-functions ()
! -
!
Print all of the functions and their key bindings to the
Readline output stream. If a numeric argument is supplied,
the output is formatted in such a way that it can be made part
of an inputrc file. This command is unbound by default.
dump-variables ()
! -
!
Print all of the settable variables and their values to the
Readline output stream. If a numeric argument is supplied,
the output is formatted in such a way that it can be made part
of an inputrc file. This command is unbound by default.
dump-macros ()
! -
!
Print all of the Readline key sequences bound to macros and the
strings they output. If a numeric argument is supplied,
the output is formatted in such a way that it can be made part
of an inputrc file. This command is unbound by default.
!
!
!
!
While the Readline library does not have a full set of vi
editing functions, it does contain enough to allow simple editing
of the line. The Readline vi
mode behaves as specified in
the POSIX 1003.2 standard.
-
-
In order to switch interactively between emacs
and vi
editing modes, use the command M-C-j (bound to emacs-editing-mode
when in vi
mode and to vi-editing-mode in emacs
mode).
The Readline default is emacs
mode.
-
-
When you enter a line in vi
mode, you are already placed in
`insertion' mode, as if you had typed an `i'. Pressing ESC
--- 1660,1873 ----
possible-completions
.
This command is unbound by default.
+
+
!
!
!
!
! 1.4.7 Keyboard Macros
!
+
start-kbd-macro (C-x ()
! -
Begin saving the characters typed into the current keyboard macro.
+
+
end-kbd-macro (C-x ))
! -
Stop saving the characters typed into the current keyboard macro
and save the definition.
+
+
call-last-kbd-macro (C-x e)
! -
Re-execute the last keyboard macro defined, by making the characters
in the macro appear as if typed at the keyboard.
+
+
!
!
!
!
! 1.4.8 Some Miscellaneous Commands
!
+
re-read-init-file (C-x C-r)
! -
Read in the contents of the inputrc file, and incorporate
any bindings or variable assignments found there.
+
+
abort (C-g)
! -
Abort the current editing command and
ring the terminal's bell (subject to the setting of
bell-style
).
+
!
!
do-uppercase-version (M-a, M-b, M-x, ...)
! -
If the metafied character x is lowercase, run the command
that is bound to the corresponding uppercase character.
+
+
prefix-meta (ESC)
! -
Metafy the next character typed. This is for keyboards
without a meta key. Typing `ESC f' is equivalent to typing
M-f.
+
+
undo (C-_ or C-x C-u)
! -
Incremental undo, separately remembered for each line.
+
+
revert-line (M-r)
! -
Undo all changes made to this line. This is like executing the
undo
command enough times to get back to the beginning.
+
+
tilde-expand (M-~)
! -
Perform tilde expansion on the current word.
+
+
set-mark (C-@)
! -
Set the mark to the point. If a
numeric argument is supplied, the mark is set to that position.
+
+
exchange-point-and-mark (C-x C-x)
! -
Swap the point with the mark. The current cursor position is set to
the saved position, and the old cursor position is saved as the mark.
+
+
character-search (C-])
! -
A character is read and point is moved to the next occurrence of that
character. A negative count searches for previous occurrences.
+
+
character-search-backward (M-C-])
! -
A character is read and point is moved to the previous occurrence
of that character. A negative count searches for subsequent
occurrences.
+
+
insert-comment (M-#)
! -
The value of the
comment-begin
variable is inserted at the beginning of the current line,
and the line is accepted as if a newline had been typed.
+
+
dump-functions ()
! -
Print all of the functions and their key bindings to the
Readline output stream. If a numeric argument is supplied,
the output is formatted in such a way that it can be made part
of an inputrc file. This command is unbound by default.
+
+
dump-variables ()
! -
Print all of the settable variables and their values to the
Readline output stream. If a numeric argument is supplied,
the output is formatted in such a way that it can be made part
of an inputrc file. This command is unbound by default.
+
+
dump-macros ()
! -
Print all of the Readline key sequences bound to macros and the
strings they output. If a numeric argument is supplied,
the output is formatted in such a way that it can be made part
of an inputrc file. This command is unbound by default.
+
+
!
!
!
!
! 1.5 Readline vi Mode
!
+
While the Readline library does not have a full set of vi
editing functions, it does contain enough to allow simple editing
of the line. The Readline vi
mode behaves as specified in
the POSIX 1003.2 standard.
+
In order to switch interactively between emacs
and vi
editing modes, use the command M-C-j (bound to emacs-editing-mode
when in vi
mode and to vi-editing-mode in emacs
mode).
The Readline default is emacs
mode.
+
When you enter a line in vi
mode, you are already placed in
`insertion' mode, as if you had typed an `i'. Pressing ESC
***************
*** 1634,1645 ****
history lines with `k' and subsequent lines with `j', and
so forth.
!
!
This chapter describes the interface between the GNU Readline Library and
other programs. If you are a programmer, and you wish to include the
--- 1876,1924 ----
history lines with `k' and subsequent lines with `j', and
so forth.
+
! This document describes the GNU Readline Library, a utility for aiding
! in the consitency of user interface across discrete programs that need
! to provide a command line interface.
!
+ Copyright (C) 1988-2001 Free Software Foundation, Inc.
+
+ Permission is granted to make and distribute verbatim copies of
+ this manual provided the copyright notice and this permission notice
+ pare preserved on all copies.
+
+
+ Permission is granted to copy and distribute modified versions of this
+ manual under the conditions for verbatim copying, provided that the entire
+ resulting derived work is distributed under the terms of a permission
+ notice identical to this one.
+
! Permission is granted to copy and distribute translations of this manual
! into another language, under the above conditions for modified versions,
! except that this permission notice may be stated in a translation approved
! by the Foundation.
!
+
+
+
+
+ 2. Programming with GNU Readline
+
+
This chapter describes the interface between the GNU Readline Library and
other programs. If you are a programmer, and you wish to include the
***************
*** 1647,1671 ****
such as completion, line editing, and interactive history manipulation
in your own programs, this section is for you.
!
!
!
!
!
!
!
!
Many programs provide a command line interface, such as mail
,
ftp
, and sh
. For such programs, the default behaviour of
--- 1926,1963 ----
such as completion, line editing, and interactive history manipulation
in your own programs, this section is for you.
+
!
!
!
!
!
!
!
! 2.1 Basic Behavior
!
+
Many programs provide a command line interface, such as mail
,
ftp
, and sh
. For such programs, the default behaviour of
***************
*** 1673,1684 ****
the simplest way possible, perhaps to replace calls in your code to
gets()
or fgets()
.
!
!
!
!
-
-
The function readline()
prints a prompt prompt
and then reads and returns a single line of text from the user.
--- 1965,1974 ----
the simplest way possible, perhaps to replace calls in your code to
gets()
or fgets()
.
+
!
!
!
The function readline()
prints a prompt prompt
and then reads and returns a single line of text from the user.
***************
*** 1687,1741 ****
the caller should free()
the line when it has finished with it.
The declaration for readline
in ANSI C is
!
-
- char *readline (const char *prompt);
-
-
-
So, one might say
!
!
! char *line = readline ("Enter a line: ");
!
!
!
! in order to read a line of text from the user.
The line returned has the final newline removed, so only the
text remains.
-
-
If readline
encounters an EOF
while reading the line, and the
line is empty at that point, then (char *)NULL
is returned.
Otherwise, the line is ended just as if a newline had been typed.
-
-
If you want the user to be able to get at the line later, (with
C-p for example), you must call add_history()
to save the
line away in a history list of such lines.
!
!
!
! add_history (line)
;
!
-
For full details on the GNU History Library, see the associated manual.
-
-
It is preferable to avoid saving empty lines on the history list, since
users rarely have a burning need to reuse a blank line. Here is
a function which usefully replaces the standard gets()
library
function, and has the advantage of no static buffer to overflow:
!
!
!
! /* A static variable for holding the line. */
static char *line_read = (char *)NULL;
--- 1977,2015 ----
the caller should free()
the line when it has finished with it.
The declaration for readline
in ANSI C is
+
!
| char *readline (const char *prompt);
!
|
So, one might say
!
| char *line = readline ("Enter a line: ");
!
|
in order to read a line of text from the user.
The line returned has the final newline removed, so only the
text remains.
+
If readline
encounters an EOF
while reading the line, and the
line is empty at that point, then (char *)NULL
is returned.
Otherwise, the line is ended just as if a newline had been typed.
+
If you want the user to be able to get at the line later, (with
C-p for example), you must call add_history()
to save the
line away in a history list of such lines.
+
!
For full details on the GNU History Library, see the associated manual.
+
It is preferable to avoid saving empty lines on the history list, since
users rarely have a burning need to reuse a blank line. Here is
a function which usefully replaces the standard gets()
library
function, and has the advantage of no static buffer to overflow:
+
!
| /* A static variable for holding the line. */
static char *line_read = (char *)NULL;
***************
*** 1761,1779 ****
return (line_read);
}
!
-
This function gives the user the default behaviour of TAB
completion: completion on file names. If you do not want Readline to
complete on filenames, you can change the binding of the TAB key
with rl_bind_key() .
!
!
!
! int rl_bind_key (int key, rl_command_func_t *function);
!
-
rl_bind_key() takes two arguments: key is the character that
you want to bind, and function is the address of the function to
--- 2035,2049 ----
return (line_read);
}
! |
This function gives the user the default behaviour of TAB
completion: completion on file names. If you do not want Readline to
complete on filenames, you can change the binding of the TAB key
with rl_bind_key()
.
+
!
| int rl_bind_key (int key, rl_command_func_t *function);
!
|
rl_bind_key()
takes two arguments: key is the character that
you want to bind, and function is the address of the function to
***************
*** 1782,1806 ****
rl_bind_key()
returns non-zero if key is not a valid
ASCII character code (between 0 and 255).
-
-
Thus, to disable the default TAB behavior, the following suffices:
-
- rl_bind_key ('\t', rl_insert);
-
-
-
This code should be executed once at the start of your program; you
might write a function called initialize_readline()
which
performs this and other desired initializations, such as installing
! custom completers (see section Custom Completers).
!
!
!
!
!
Readline provides many functions for manipulating the text of
the line, but it isn't possible to anticipate the needs of all
--- 2052,2085 ----
rl_bind_key()
returns non-zero if key is not a valid
ASCII character code (between 0 and 255).
+
Thus, to disable the default TAB behavior, the following suffices:
+
| rl_bind_key ('\t', rl_insert);
+
|
This code should be executed once at the start of your program; you
might write a function called initialize_readline()
which
performs this and other desired initializations, such as installing
! custom completers (see section 2.6 Custom Completers).
!
+
+
+
+
+ 2.2 Custom Functions
+
+
Readline provides many functions for manipulating the text of
the line, but it isn't possible to anticipate the needs of all
***************
*** 1808,1814 ****
defined within the Readline library which allow a user program to add
customized functionality to Readline.
-
-
Before declaring any functions that customize Readline's behavior, or
using any functionality Readline provides in other code, an
--- 2087,2092 ----
defined within the Readline library which allow a user program to add
customized functionality to Readline.
+
Before declaring any functions that customize Readline's behavior, or
using any functionality Readline provides in other code, an
***************
*** 1817,1939 ****
in readline.h
use the stdio
library, the file
<stdio.h>
should be included before readline.h
.
!
!
!
!
!
!
!
!
For readabilty, we declare a number of new object types, all pointers
to functions.
-
-
The reason for declaring these new types is to make it easier to write
code describing pointers to C functions with appropriately prototyped
arguments and return values.
-
-
For instance, say we want to declare a variable func as a pointer
to a function which takes two int
arguments and returns an
int
(this is the type of all of the Readline bindable functions).
Instead of the classic C declaration
-
-
int (*func)();
-
-
or the ANSI-C style declaration
-
-
int (*func)(int, int);
-
-
we may write
-
-
rl_command_func_t *func;
-
-
The full list of function pointer types available is
-
-
typedef int rl_command_func_t (int, int);
! -
typedef char *rl_compentry_func_t (const char *, int);
! -
typedef char **rl_completion_func_t (const char *, int, int);
! -
typedef char *rl_quote_func_t (char *, int, char *);
! -
typedef char *rl_dequote_func_t (char *, int);
! -
typedef int rl_compignore_func_t (char **);
! -
typedef void rl_compdisp_func_t (char **, int, int);
! -
typedef int rl_hook_func_t (void);
! -
typedef int rl_getc_func_t (FILE *);
! -
typedef int rl_linebuf_func_t (char *, int);
! -
!
typedef int rl_intfunc_t (int);
! -
!
#define rl_ivoidfunc_t rl_hook_func_t
! -
!
typedef int rl_icpfunc_t (char *);
! -
!
typedef int rl_icppfunc_t (char **);
! -
!
typedef void rl_voidfunc_t (void);
! -
!
typedef void rl_vintfunc_t (int);
! -
!
typedef void rl_vcpfunc_t (char *);
! -
!
typedef void rl_vcppfunc_t (char **);
! -
!
!
In order to write new functions for Readline, you need to know the
calling conventions for keyboard-invoked functions, and the names of the
variables that describe the current state of the line read so far.
-
-
The calling sequence for a command foo
looks like
!
!
!
! foo (int count, int key)
!
-
where count is the numeric argument (or 1 if defaulted) and
key is the key that invoked this function.
-
-
It is completely up to the function as to what should be done with the
numeric argument. Some functions use it as a repeat count, some
--- 2095,2247 ----
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
.
!
!
!
!
!
!
!
!
!
! 2.2.1 Readline Typedefs
!
+
For readabilty, we declare a number of new object types, all pointers
to functions.
+
The reason for declaring these new types is to make it easier to write
code describing pointers to C functions with appropriately prototyped
arguments and return values.
+
For instance, say we want to declare a variable func as a pointer
to a function which takes two int
arguments and returns an
int
(this is the type of all of the Readline bindable functions).
Instead of the classic C declaration
+
int (*func)();
+
or the ANSI-C style declaration
+
int (*func)(int, int);
+
we may write
+
rl_command_func_t *func;
+
The full list of function pointer types available is
+
typedef int rl_command_func_t (int, int);
!
!
typedef char *rl_compentry_func_t (const char *, int);
!
!
typedef char **rl_completion_func_t (const char *, int, int);
!
!
typedef char *rl_quote_func_t (char *, int, char *);
!
!
typedef char *rl_dequote_func_t (char *, int);
!
!
typedef int rl_compignore_func_t (char **);
!
!
typedef void rl_compdisp_func_t (char **, int, int);
!
!
typedef int rl_hook_func_t (void);
!
!
typedef int rl_getc_func_t (FILE *);
!
!
typedef int rl_linebuf_func_t (char *, int);
!
+
typedef int rl_intfunc_t (int);
+ #define rl_ivoidfunc_t rl_hook_func_t
+ typedef int rl_icpfunc_t (char *);
+ typedef int rl_icppfunc_t (char **);
+
+
typedef void rl_voidfunc_t (void);
+ typedef void rl_vintfunc_t (int);
+ typedef void rl_vcpfunc_t (char *);
+ typedef void rl_vcppfunc_t (char **);
+
!
!
+
+
+
+
+ 2.2.2 Writing a New Function
+
+
In order to write new functions for Readline, you need to know the
calling conventions for keyboard-invoked functions, and the names of the
variables that describe the current state of the line read so far.
+
The calling sequence for a command foo
looks like
+
!
| foo (int count, int key)
!
|
where count is the numeric argument (or 1 if defaulted) and
key is the key that invoked this function.
+
It is completely up to the function as to what should be done with the
numeric argument. Some functions use it as a repeat count, some
***************
*** 1945,2062 ****
At the very least, it should be aware that it can be passed a
negative argument.
!
!
!
!
!
These variables are available to function writers.
!
!
- Variable: char * rl_line_buffer
!
-
! This is the line gathered so far. You are welcome to modify the
! contents of the line, but see section Allowing Undoing. The
function
rl_extend_line_buffer
is available to increase
the memory allocated to rl_line_buffer
.
!
!
- Variable: int rl_point
!
-
! The offset of the current cursor position in
rl_line_buffer
(the point).
!
!
- Variable: int rl_end
!
-
! The number of characters present in
rl_line_buffer
. When
rl_point
is at the end of the line, rl_point
and
rl_end
are equal.
!
!
- Variable: int rl_mark
!
-
! The mark (saved position) in the current line. If set, the mark
and point define a region.
!
!
- Variable: int rl_done
!
-
! Setting this to a non-zero value causes Readline to return the current
line immediately.
!
!
- Variable: int rl_num_chars_to_read
!
-
! Setting this to a positive value before calling
readline()
causes
Readline to return after accepting that many characters, rather
than reading up to a character bound to accept-line
.
!
!
- Variable: int rl_pending_input
!
-
! Setting this to a value makes it the next keystroke read. This is a
way to stuff a single character into the input stream.
!
!
- Variable: int rl_dispatching
!
-
! Set to a non-zero value if a function is being called from a key binding;
zero otherwise. Application functions can test this to discover whether
they were called directly or by Readline's dispatching mechanism.
!
!
- Variable: int rl_erase_empty_line
!
-
! Setting this to a non-zero value causes Readline to completely erase
the current line, including any prompt, any time a newline is typed as
the only character on an otherwise-empty line. The cursor is moved to
the beginning of the newly-blank line.
!
!
- Variable: char * rl_prompt
!
-
! The prompt Readline uses. This is set from the argument to
readline()
, and should not be assigned to directly.
! The rl_set_prompt()
function (see section Redisplay) may
be used to modify the prompt string after calling readline()
.
!
!
- Variable: int rl_already_prompted
!
-
! If an application wishes to display the prompt itself, rather than have
Readline do it the first time
readline()
is called, it should set
this variable to a non-zero value after displaying the prompt.
--- 2253,2372 ----
At the very least, it should be aware that it can be passed a
negative argument.
+
!
!
!
!
! 2.3 Readline Variables
!
+
These variables are available to function writers.
+
!
- Variable: char * rl_line_buffer
!
- This is the line gathered so far. You are welcome to modify the
! contents of the line, but see 2.4.5 Allowing Undoing. The
function
rl_extend_line_buffer
is available to increase
the memory allocated to rl_line_buffer
.
+
!
- Variable: int rl_point
!
- The offset of the current cursor position in
rl_line_buffer
(the point).
+
!
- Variable: int rl_end
!
- The number of characters present in
rl_line_buffer
. When
rl_point
is at the end of the line, rl_point
and
rl_end
are equal.
+
!
- Variable: int rl_mark
!
- The mark (saved position) in the current line. If set, the mark
and point define a region.
+
!
- Variable: int rl_done
!
- Setting this to a non-zero value causes Readline to return the current
line immediately.
+
!
- Variable: int rl_num_chars_to_read
!
- Setting this to a positive value before calling
readline()
causes
Readline to return after accepting that many characters, rather
than reading up to a character bound to accept-line
.
+
!
- Variable: int rl_pending_input
!
- Setting this to a value makes it the next keystroke read. This is a
way to stuff a single character into the input stream.
+
!
- Variable: int rl_dispatching
!
- Set to a non-zero value if a function is being called from a key binding;
zero otherwise. Application functions can test this to discover whether
they were called directly or by Readline's dispatching mechanism.
+
!
- Variable: int rl_erase_empty_line
!
- Setting this to a non-zero value causes Readline to completely erase
the current line, including any prompt, any time a newline is typed as
the only character on an otherwise-empty line. The cursor is moved to
the beginning of the newly-blank line.
+
!
- Variable: char * rl_prompt
!
- The prompt Readline uses. This is set from the argument to
readline()
, and should not be assigned to directly.
! The rl_set_prompt()
function (see section 2.4.6 Redisplay) may
be used to modify the prompt string after calling readline()
.
+
!
- Variable: int rl_already_prompted
!
- If an application wishes to display the prompt itself, rather than have
Readline do it the first time
readline()
is called, it should set
this variable to a non-zero value after displaying the prompt.
***************
*** 2066,2397 ****
never sets it.
!
!
- Variable: const char * rl_library_version
!
-
! The version number of this revision of the library.
!
!
- Variable: int rl_gnu_readline_p
!
-
! Always set to 1, denoting that this is GNU readline rather than some
emulation.
!
!
- Variable: const char * rl_terminal_name
!
-
! The terminal type, used for initialization. If not set by the application,
! Readline sets this to the value of the @env{TERM} environment variable
the first time it is called.
!
!
- Variable: const char * rl_readline_name
!
-
! This variable is set to a unique name by each application using Readline.
The value allows conditional parsing of the inputrc file
! (see section Conditional Init Constructs).
!
!
- Variable: FILE * rl_instream
!
-
! The stdio stream from which Readline reads input.
!
!
- Variable: FILE * rl_outstream
!
-
! The stdio stream to which Readline performs output.
!
!
- Variable: rl_command_func_t * rl_last_func
!
-
! The address of the last command function Readline executed. May be used to
test whether or not a function is being executed twice in succession, for
example.
!
!
- Variable: rl_hook_func_t * rl_startup_hook
!
-
! If non-zero, this is the address of a function to call just
before
readline
prints the first prompt.
!
!
- Variable: rl_hook_func_t * rl_pre_input_hook
!
-
! If non-zero, this is the address of a function to call after
the first prompt has been printed and just before
readline
starts reading input characters.
!
!
- Variable: rl_hook_func_t * rl_event_hook
!
-
! If non-zero, this is the address of a function to call periodically
when Readline is waiting for terminal input.
By default, this will be called at most ten times a second if there
is no keyboard input.
!
!
- Variable: rl_getc_func_t * rl_getc_function
!
-
! If non-zero, Readline will call indirectly through this pointer
to get a character from the input stream. By default, it is set to
rl_getc
, the default Readline character input function
! (see section Character Input).
!
!
- Variable: rl_voidfunc_t * rl_redisplay_function
!
-
! If non-zero, Readline will call indirectly through this pointer
to update the display with the current contents of the editing buffer.
By default, it is set to
rl_redisplay
, the default Readline
! redisplay function (see section Redisplay).
!
!
- Variable: rl_vintfunc_t * rl_prep_term_function
!
-
! If non-zero, Readline will call indirectly through this pointer
to initialize the terminal. The function takes a single argument, an
int
flag that says whether or not to use eight-bit characters.
By default, this is set to rl_prep_terminal
! (see section Terminal Management).
!
!
- Variable: rl_voidfunc_t * rl_deprep_term_function
!
-
! If non-zero, Readline will call indirectly through this pointer
to reset the terminal. This function should undo the effects of
rl_prep_term_function
.
By default, this is set to rl_deprep_terminal
! (see section Terminal Management).
!
!
- Variable: Keymap rl_executing_keymap
!
-
! This variable is set to the keymap (see section Selecting a Keymap) in which the
currently executing readline function was found.
!
!
- Variable: Keymap rl_binding_keymap
!
-
! This variable is set to the keymap (see section Selecting a Keymap) in which the
last key binding occurred.
!
!
- Variable: char * rl_executing_macro
!
-
! This variable is set to the text of any currently-executing macro.
!
!
- Variable: int rl_readline_state
!
-
! A variable with bit values that encapsulate the current Readline state.
A bit is set with the
RL_SETSTATE
macro, and unset with the
RL_UNSETSTATE
macro. Use the RL_ISSTATE
macro to test
whether a particular state bit is set. Current state bits include:
-
-
RL_STATE_NONE
! -
! Readline has not yet been called, nor has it begun to intialize.
RL_STATE_INITIALIZING
! -
! Readline is initializing its internal data structures.
RL_STATE_INITIALIZED
! -
! Readline has completed its initialization.
RL_STATE_TERMPREPPED
! -
! Readline has modified the terminal modes to do its own input and redisplay.
RL_STATE_READCMD
! -
! Readline is reading a command from the keyboard.
RL_STATE_METANEXT
! -
! Readline is reading more input after reading the meta-prefix character.
RL_STATE_DISPATCHING
! -
! Readline is dispatching to a command.
RL_STATE_MOREINPUT
! -
! Readline is reading more input while executing an editing command.
RL_STATE_ISEARCH
! -
! Readline is performing an incremental history search.
RL_STATE_NSEARCH
! -
! Readline is performing a non-incremental history search.
RL_STATE_SEARCH
! -
! Readline is searching backward or forward through the history for a string.
RL_STATE_NUMERICARG
! -
! Readline is reading a numeric argument.
RL_STATE_MACROINPUT
! -
! Readline is currently getting its input from a previously-defined keyboard
macro.
RL_STATE_MACRODEF
! -
! Readline is currently reading characters defining a keyboard macro.
RL_STATE_OVERWRITE
! -
! Readline is in overwrite mode.
RL_STATE_COMPLETING
! -
! Readline is performing word completion.
RL_STATE_SIGHANDLER
! -
! Readline is currently executing the readline signal handler.
RL_STATE_UNDOING
! -
! Readline is performing an undo.
RL_STATE_DONE
! -
! Readline has read a key sequence bound to
accept-line
and is about to return the line to the caller.
!
- Variable: int rl_explicit_arg
!
-
! Set to a non-zero value if an explicit numeric argument was specified by
the user. Only valid in a bindable command function.
!
!
- Variable: int rl_numeric_arg
!
-
! Set to the value of any numeric argument explicitly specified by the user
before executing the current Readline function. Only valid in a bindable
command function.
!
!
- Variable: int rl_editing_mode
!
-
! Set to a value denoting Readline's current editing mode. A value of
1 means Readline is currently in emacs mode; 0
means that vi mode is active.
!
!
!
!
!
!
!
!
!
!
!
!
!
The user can dynamically change the bindings of keys while using
Readline. This is done by representing the function with a descriptive
name. The user is able to type the descriptive name when referring to
the function. Thus, in an init file, one might find
!
-
- Meta-Rubout: backward-kill-word
-
-
-
This binds the keystroke Meta-Rubout to the function
descriptively named backward-kill-word
. You, as the
programmer, should bind the functions you write to descriptive names as
well. Readline provides a function for doing that:
!
!
- Function: int rl_add_defun (const char *name, rl_command_func_t *function, int key)
!
-
! Add name to the list of named functions. Make function be
the function that gets called. If key is not -1, then bind it to
function using
rl_bind_key()
.
-
-
Using this function alone is sufficient for most applications. It is
the recommended way to add a few functions to the default functions that
--- 2376,2700 ----
never sets it.
+
!
- Variable: const char * rl_library_version
!
- The version number of this revision of the library.
+
!
!
! - Variable: int rl_readline_version
!
- An integer encoding the current version of the library. The encoding is
! of the form 0xMMmm, where MM is the two-digit major version
! number, and mm is the two-digit minor version number.
! For example, for Readline-4.2,
rl_readline_version
would have the
! value 0x0402.
!
!
!
!
- Variable: int rl_gnu_readline_p
!
- Always set to 1, denoting that this is GNU readline rather than some
emulation.
+
!
- Variable: const char * rl_terminal_name
!
- The terminal type, used for initialization. If not set by the application,
! Readline sets this to the value of the
TERM
environment variable
the first time it is called.
+
!
- Variable: const char * rl_readline_name
!
- This variable is set to a unique name by each application using Readline.
The value allows conditional parsing of the inputrc file
! (see section 1.3.2 Conditional Init Constructs).
+
!
- Variable: FILE * rl_instream
!
- The stdio stream from which Readline reads input.
+
!
- Variable: FILE * rl_outstream
!
- The stdio stream to which Readline performs output.
+
!
- Variable: rl_command_func_t * rl_last_func
!
- The address of the last command function Readline executed. May be used to
test whether or not a function is being executed twice in succession, for
example.
+
!
- Variable: rl_hook_func_t * rl_startup_hook
!
- If non-zero, this is the address of a function to call just
before
readline
prints the first prompt.
+
!
- Variable: rl_hook_func_t * rl_pre_input_hook
!
- If non-zero, this is the address of a function to call after
the first prompt has been printed and just before
readline
starts reading input characters.
+
!
- Variable: rl_hook_func_t * rl_event_hook
!
- If non-zero, this is the address of a function to call periodically
when Readline is waiting for terminal input.
By default, this will be called at most ten times a second if there
is no keyboard input.
+
!
- Variable: rl_getc_func_t * rl_getc_function
!
- If non-zero, Readline will call indirectly through this pointer
to get a character from the input stream. By default, it is set to
rl_getc
, the default Readline character input function
! (see section 2.4.8 Character Input).
+
!
- Variable: rl_voidfunc_t * rl_redisplay_function
!
- If non-zero, Readline will call indirectly through this pointer
to update the display with the current contents of the editing buffer.
By default, it is set to
rl_redisplay
, the default Readline
! redisplay function (see section 2.4.6 Redisplay).
+
!
- Variable: rl_vintfunc_t * rl_prep_term_function
!
- If non-zero, Readline will call indirectly through this pointer
to initialize the terminal. The function takes a single argument, an
int
flag that says whether or not to use eight-bit characters.
By default, this is set to rl_prep_terminal
! (see section 2.4.9 Terminal Management).
+
!
- Variable: rl_voidfunc_t * rl_deprep_term_function
!
- If non-zero, Readline will call indirectly through this pointer
to reset the terminal. This function should undo the effects of
rl_prep_term_function
.
By default, this is set to rl_deprep_terminal
! (see section 2.4.9 Terminal Management).
+
!
- Variable: Keymap rl_executing_keymap
!
- This variable is set to the keymap (see section 2.4.2 Selecting a Keymap) in which the
currently executing readline function was found.
+
!
- Variable: Keymap rl_binding_keymap
!
- This variable is set to the keymap (see section 2.4.2 Selecting a Keymap) in which the
last key binding occurred.
+
!
- Variable: char * rl_executing_macro
!
- This variable is set to the text of any currently-executing macro.
+
!
- Variable: int rl_readline_state
!
- A variable with bit values that encapsulate the current Readline state.
A bit is set with the
RL_SETSTATE
macro, and unset with the
RL_UNSETSTATE
macro. Use the RL_ISSTATE
macro to test
whether a particular state bit is set. Current state bits include:
+
RL_STATE_NONE
! - Readline has not yet been called, nor has it begun to intialize.
RL_STATE_INITIALIZING
! - Readline is initializing its internal data structures.
RL_STATE_INITIALIZED
! - Readline has completed its initialization.
RL_STATE_TERMPREPPED
! - Readline has modified the terminal modes to do its own input and redisplay.
RL_STATE_READCMD
! - Readline is reading a command from the keyboard.
RL_STATE_METANEXT
! - Readline is reading more input after reading the meta-prefix character.
RL_STATE_DISPATCHING
! - Readline is dispatching to a command.
RL_STATE_MOREINPUT
! - Readline is reading more input while executing an editing command.
RL_STATE_ISEARCH
! - Readline is performing an incremental history search.
RL_STATE_NSEARCH
! - Readline is performing a non-incremental history search.
RL_STATE_SEARCH
! - Readline is searching backward or forward through the history for a string.
RL_STATE_NUMERICARG
! - Readline is reading a numeric argument.
RL_STATE_MACROINPUT
! - Readline is currently getting its input from a previously-defined keyboard
macro.
RL_STATE_MACRODEF
! - Readline is currently reading characters defining a keyboard macro.
RL_STATE_OVERWRITE
! - Readline is in overwrite mode.
RL_STATE_COMPLETING
! - Readline is performing word completion.
RL_STATE_SIGHANDLER
! - Readline is currently executing the readline signal handler.
RL_STATE_UNDOING
! - Readline is performing an undo.
RL_STATE_DONE
! - Readline has read a key sequence bound to
accept-line
and is about to return the line to the caller.
+
+
!
- Variable: int rl_explicit_arg
!
- Set to a non-zero value if an explicit numeric argument was specified by
the user. Only valid in a bindable command function.
+
!
- Variable: int rl_numeric_arg
!
- Set to the value of any numeric argument explicitly specified by the user
before executing the current Readline function. Only valid in a bindable
command function.
+
!
- Variable: int rl_editing_mode
!
- Set to a value denoting Readline's current editing mode. A value of
1 means Readline is currently in emacs mode; 0
means that vi mode is active.
+
!
!
!
!
! 2.4 Readline Convenience Functions
!
!
!
!
!
!
!
!
!
!
! 2.4.1 Naming a Function
!
+
The user can dynamically change the bindings of keys while using
Readline. This is done by representing the function with a descriptive
name. The user is able to type the descriptive name when referring to
the function. Thus, in an init file, one might find
+
!
| Meta-Rubout: backward-kill-word
! |
This binds the keystroke Meta-Rubout to the function
descriptively named backward-kill-word
. You, as the
programmer, should bind the functions you write to descriptive names as
well. Readline provides a function for doing that:
+
!
- Function: int rl_add_defun (const char *name, rl_command_func_t *function, int key)
!
- Add name to the list of named functions. Make function be
the function that gets called. If key is not -1, then bind it to
function using
rl_bind_key()
.
+
Using this function alone is sufficient for most applications. It is
the recommended way to add a few functions to the default functions that
***************
*** 2399,2495 ****
than adding a function to Readline, you may need to use the
underlying functions described below.
!
!
!
!
!
Key bindings take place on a keymap. The keymap is the
association between the keys that the user types and the functions that
get run. You can make your own keymaps, copy existing keymaps, and tell
Readline which keymap to use.
!
!
- Function: Keymap rl_make_bare_keymap (void)
!
-
! Returns a new, empty keymap. The space for the keymap is allocated with
malloc()
; the caller should free it by calling
rl_discard_keymap()
when done.
!
!
- Function: Keymap rl_copy_keymap (Keymap map)
!
-
! Return a new keymap which is a copy of map.
!
!
- Function: Keymap rl_make_keymap (void)
!
-
! Return a new keymap with the printing characters bound to rl_insert,
the lowercase Meta characters bound to run their equivalents, and
the Meta digits bound to produce numeric arguments.
!
!
- Function: void rl_discard_keymap (Keymap keymap)
!
-
! Free the storage associated with keymap.
-
-
Readline has several internal keymaps. These functions allow you to
change which keymap is active.
!
!
- Function: Keymap rl_get_keymap (void)
!
-
! Returns the currently active keymap.
!
!
- Function: void rl_set_keymap (Keymap keymap)
!
-
! Makes keymap the currently active keymap.
!
!
- Function: Keymap rl_get_keymap_by_name (const char *name)
!
-
! Return the keymap matching name. name is one which would
! be supplied in a
set keymap
inputrc line (see section Readline Init File).
!
!
- Function: char * rl_get_keymap_name (Keymap keymap)
!
-
! Return the name matching keymap. name is one which would
! be supplied in a
set keymap
inputrc line (see section Readline Init File).
!
!
!
!
!
Key sequences are associate with functions through the keymap.
Readline has several internal keymaps: emacs_standard_keymap
,
--- 2702,2815 ----
than adding a function to Readline, you may need to use the
underlying functions described below.
+
!
!
!
!
! 2.4.2 Selecting a Keymap
!
+
Key bindings take place on a keymap. The keymap is the
association between the keys that the user types and the functions that
get run. You can make your own keymaps, copy existing keymaps, and tell
Readline which keymap to use.
+
!
- Function: Keymap rl_make_bare_keymap (void)
!
- Returns a new, empty keymap. The space for the keymap is allocated with
malloc()
; the caller should free it by calling
rl_discard_keymap()
when done.
+
!
- Function: Keymap rl_copy_keymap (Keymap map)
!
- Return a new keymap which is a copy of map.
+
!
- Function: Keymap rl_make_keymap (void)
!
- Return a new keymap with the printing characters bound to rl_insert,
the lowercase Meta characters bound to run their equivalents, and
the Meta digits bound to produce numeric arguments.
+
!
- Function: void rl_discard_keymap (Keymap keymap)
!
- Free the storage associated with keymap.
+
Readline has several internal keymaps. These functions allow you to
change which keymap is active.
+
!
- Function: Keymap rl_get_keymap (void)
!
- Returns the currently active keymap.
+
!
- Function: void rl_set_keymap (Keymap keymap)
!
- Makes keymap the currently active keymap.
+
!
- Function: Keymap rl_get_keymap_by_name (const char *name)
!
- Return the keymap matching name. name is one which would
! be supplied in a
set keymap
inputrc line (see section 1.3 Readline Init File).
+
!
- Function: char * rl_get_keymap_name (Keymap keymap)
!
- Return the name matching keymap. name is one which would
! be supplied in a
set keymap
inputrc line (see section 1.3 Readline Init File).
+
!
!
!
!
! 2.4.3 Binding Keys
!
+
Key sequences are associate with functions through the keymap.
Readline has several internal keymaps: emacs_standard_keymap
,
***************
*** 2498,2504 ****
emacs_standard_keymap
is the default, and the examples in
this manual assume that.
-
-
Since readline()
installs a set of default key bindings the first
time it is called, there is always the danger that a custom binding
--- 2818,2823 ----
emacs_standard_keymap
is the default, and the examples in
this manual assume that.
+
Since readline()
installs a set of default key bindings the first
time it is called, there is always the danger that a custom binding
***************
*** 2506,2583 ****
An alternate mechanism is to install custom key bindings in an
initialization function assigned to the rl_startup_hook
variable
! (see section Readline Variables).
-
-
These functions manage key bindings.
!
!
- Function: int rl_bind_key (int key, rl_command_func_t *function)
!
-
! Binds key to function in the currently active keymap.
Returns non-zero in the case of an invalid key.
!
!
- Function: int rl_bind_key_in_map (int key, rl_command_func_t *function, Keymap map)
!
-
! Bind key to function in map. Returns non-zero in the case
of an invalid key.
!
!
- Function: int rl_unbind_key (int key)
!
-
! Bind key to the null function in the currently active keymap.
Returns non-zero in case of error.
!
!
- Function: int rl_unbind_key_in_map (int key, Keymap map)
!
-
! Bind key to the null function in map.
Returns non-zero in case of error.
!
!
- Function: int rl_unbind_function_in_map (rl_command_func_t *function, Keymap map)
!
-
! Unbind all keys that execute function in map.
!
!
- Function: int rl_unbind_command_in_map (const char *command, Keymap map)
!
-
! Unbind all keys that are bound to command in map.
!
!
- Function: int rl_set_key (const char *keyseq, rl_command_func_t *function, Keymap map)
!
-
! Bind the key sequence represented by the string keyseq to the function
function. This makes new keymaps as
necessary. The initial keymap in which to do bindings is map.
!
!
- Function: int rl_generic_bind (int type, const char *keyseq, char *data, Keymap map)
!
-
! Bind the key sequence represented by the string keyseq to the arbitrary
pointer data. type says what kind of data is pointed to by
data; this can be a function (
ISFUNC
), a macro
--- 2825,2893 ----
An alternate mechanism is to install custom key bindings in an
initialization function assigned to the rl_startup_hook
variable
! (see section 2.3 Readline Variables).
!
These functions manage key bindings.
+
!
- Function: int rl_bind_key (int key, rl_command_func_t *function)
!
- Binds key to function in the currently active keymap.
Returns non-zero in the case of an invalid key.
+
!
- Function: int rl_bind_key_in_map (int key, rl_command_func_t *function, Keymap map)
!
- Bind key to function in map. Returns non-zero in the case
of an invalid key.
+
!
- Function: int rl_unbind_key (int key)
!
- Bind key to the null function in the currently active keymap.
Returns non-zero in case of error.
+
!
- Function: int rl_unbind_key_in_map (int key, Keymap map)
!
- Bind key to the null function in map.
Returns non-zero in case of error.
+
!
- Function: int rl_unbind_function_in_map (rl_command_func_t *function, Keymap map)
!
- Unbind all keys that execute function in map.
+
!
- Function: int rl_unbind_command_in_map (const char *command, Keymap map)
!
- Unbind all keys that are bound to command in map.
+
!
- Function: int rl_set_key (const char *keyseq, rl_command_func_t *function, Keymap map)
!
- Bind the key sequence represented by the string keyseq to the function
function. This makes new keymaps as
necessary. The initial keymap in which to do bindings is map.
+
!
- Function: int rl_generic_bind (int type, const char *keyseq, char *data, Keymap map)
!
- Bind the key sequence represented by the string keyseq to the arbitrary
pointer data. type says what kind of data is pointed to by
data; this can be a function (
ISFUNC
), a macro
***************
*** 2585,2727 ****
necessary. The initial keymap in which to do bindings is map.
!
!
- Function: int rl_parse_and_bind (char *line)
!
-
! Parse line as if it had been read from the
inputrc
file and
perform any key bindings and variable assignments found
! (see section Readline Init File).
!
!
- Function: int rl_read_init_file (const char *filename)
!
-
! Read keybindings and variable assignments from filename
! (see section Readline Init File).
!
!
!
!
!
These functions allow you to find out what keys invoke named functions
and the functions invoked by a particular key sequence. You may also
associate a new function name with an arbitrary function.
!
!
- Function: rl_command_func_t * rl_named_function (const char *name)
!
-
! Return the function with name name.
!
!
- Function: rl_command_func_t * rl_function_of_keyseq (const char *keyseq, Keymap map, int *type)
!
-
! Return the function invoked by keyseq in keymap map.
If map is
NULL
, the current keymap is used. If type is
not NULL
, the type of the object is returned in the int
variable
it points to (one of ISFUNC
, ISKMAP
, or ISMACR
).
!
!
- Function: char ** rl_invoking_keyseqs (rl_command_func_t *function)
!
-
! Return an array of strings representing the key sequences used to
invoke function in the current keymap.
!
!
- Function: char ** rl_invoking_keyseqs_in_map (rl_command_func_t *function, Keymap map)
!
-
! Return an array of strings representing the key sequences used to
invoke function in the keymap map.
!
!
- Function: void rl_function_dumper (int readable)
!
-
! Print the readline function names and the key sequences currently
bound to them to
rl_outstream
. If readable is non-zero,
the list is formatted in such a way that it can be made part of an
inputrc
file and re-read.
!
!
- Function: void rl_list_funmap_names (void)
!
-
! Print the names of all bindable Readline functions to
rl_outstream
.
!
!
- Function: const char ** rl_funmap_names (void)
!
-
! Return a NULL terminated array of known function names. The array is
sorted. The array itself is allocated, but not the strings inside. You
should
free()
the array when you are done, but not the pointers.
!
!
- Function: int rl_add_funmap_entry (const char *name, rl_command_func_t *function)
!
-
! Add name to the list of bindable Readline command names, and make
function the function to be called when name is invoked.
!
!
!
!
!
Supporting the undo command is a painless thing, and makes your
functions much more useful. It is certainly easy to try
something if you know you can undo it.
-
-
If your function simply inserts text once, or deletes text once, and
uses rl_insert_text()
or rl_delete_text()
to do it, then
undoing is already done for you automatically.
-
-
If you do multiple insertions or multiple deletions, or any combination
of these operations, you should group them together into one operation.
This is done with rl_begin_undo_group()
and
rl_end_undo_group()
.
-
-
The types of events that can be undone are:
!
-
- enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END };
-
-
-
Notice that UNDO_DELETE
means to insert some text, and
UNDO_INSERT
means to delete some text. That is, the undo code
--- 2895,3047 ----
necessary. The initial keymap in which to do bindings is map.
+
!
- Function: int rl_parse_and_bind (char *line)
!
- Parse line as if it had been read from the
inputrc
file and
perform any key bindings and variable assignments found
! (see section 1.3 Readline Init File).
+
!
- Function: int rl_read_init_file (const char *filename)
!
- Read keybindings and variable assignments from filename
! (see section 1.3 Readline Init File).
+
!
!
!
!
! 2.4.4 Associating Function Names and Bindings
!
+
These functions allow you to find out what keys invoke named functions
and the functions invoked by a particular key sequence. You may also
associate a new function name with an arbitrary function.
+
!
- Function: rl_command_func_t * rl_named_function (const char *name)
!
- Return the function with name name.
+
!
- Function: rl_command_func_t * rl_function_of_keyseq (const char *keyseq, Keymap map, int *type)
!
- Return the function invoked by keyseq in keymap map.
If map is
NULL
, the current keymap is used. If type is
not NULL
, the type of the object is returned in the int
variable
it points to (one of ISFUNC
, ISKMAP
, or ISMACR
).
+
!
- Function: char ** rl_invoking_keyseqs (rl_command_func_t *function)
!
- Return an array of strings representing the key sequences used to
invoke function in the current keymap.
+
!
- Function: char ** rl_invoking_keyseqs_in_map (rl_command_func_t *function, Keymap map)
!
- Return an array of strings representing the key sequences used to
invoke function in the keymap map.
+
!
- Function: void rl_function_dumper (int readable)
!
- Print the readline function names and the key sequences currently
bound to them to
rl_outstream
. If readable is non-zero,
the list is formatted in such a way that it can be made part of an
inputrc
file and re-read.
+
!
- Function: void rl_list_funmap_names (void)
!
- Print the names of all bindable Readline functions to
rl_outstream
.
+
!
- Function: const char ** rl_funmap_names (void)
!
- Return a NULL terminated array of known function names. The array is
sorted. The array itself is allocated, but not the strings inside. You
should
free()
the array when you are done, but not the pointers.
+
!
- Function: int rl_add_funmap_entry (const char *name, rl_command_func_t *function)
!
- Add name to the list of bindable Readline command names, and make
function the function to be called when name is invoked.
+
!
!
!
!
! 2.4.5 Allowing Undoing
!
+
Supporting the undo command is a painless thing, and makes your
functions much more useful. It is certainly easy to try
something if you know you can undo it.
+
If your function simply inserts text once, or deletes text once, and
uses rl_insert_text()
or rl_delete_text()
to do it, then
undoing is already done for you automatically.
+
If you do multiple insertions or multiple deletions, or any combination
of these operations, you should group them together into one operation.
This is done with rl_begin_undo_group()
and
rl_end_undo_group()
.
+
The types of events that can be undone are:
+
!
| enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END };
! |
Notice that UNDO_DELETE
means to insert some text, and
UNDO_INSERT
means to delete some text. That is, the undo code
***************
*** 2729,2834 ****
UNDO_END
are tags added by rl_begin_undo_group()
and
rl_end_undo_group()
.
!
!
- Function: int rl_begin_undo_group (void)
!
-
! Begins saving undo information in a group construct. The undo
information usually comes from calls to
rl_insert_text()
and
rl_delete_text()
, but could be the result of calls to
rl_add_undo()
.
!
!
- Function: int rl_end_undo_group (void)
!
-
! Closes the current undo group started with
rl_begin_undo_group
()
. There should be one call to rl_end_undo_group()
for each call to rl_begin_undo_group()
.
!
!
- Function: void rl_add_undo (enum undo_code what, int start, int end, char *text)
!
-
! Remember how to undo an event (according to what). The affected
text runs from start to end, and encompasses text.
!
!
- Function: void rl_free_undo_list (void)
!
-
! Free the existing undo list.
!
!
- Function: int rl_do_undo (void)
!
-
! Undo the first thing on the undo list. Returns
0
if there was
nothing to undo, non-zero if something was undone.
-
-
Finally, if you neither insert nor delete text, but directly modify the
existing text (e.g., change its case), call rl_modifying()
once, just before you modify the text. You must supply the indices of
the text range that you are going to modify.
!
!
- Function: int rl_modifying (int start, int end)
!
-
! Tell Readline to save the text between start and end as a
single undo unit. It is assumed that you will subsequently modify
that text.
!
!
!
!
!
- Function: void rl_redisplay (void)
!
-
! Change what's displayed on the screen to reflect the current contents
of
rl_line_buffer
.
!
!
- Function: int rl_forced_update_display (void)
!
-
! Force the line to be updated and redisplayed, whether or not
Readline thinks the screen display is correct.
!
!
- Function: int rl_on_new_line (void)
!
-
! Tell the update functions that we have moved onto a new (empty) line,
usually after ouputting a newline.
!
!
- Function: int rl_on_new_line_with_prompt (void)
!
-
! Tell the update functions that we have moved onto a new line, with
rl_prompt already displayed.
This could be used by applications that want to output the prompt string
--- 3049,3157 ----
UNDO_END
are tags added by rl_begin_undo_group()
and
rl_end_undo_group()
.
+
!
- Function: int rl_begin_undo_group (void)
!
- Begins saving undo information in a group construct. The undo
information usually comes from calls to
rl_insert_text()
and
rl_delete_text()
, but could be the result of calls to
rl_add_undo()
.
+
!
- Function: int rl_end_undo_group (void)
!
- Closes the current undo group started with
rl_begin_undo_group
()
. There should be one call to rl_end_undo_group()
for each call to rl_begin_undo_group()
.
+
!
- Function: void rl_add_undo (enum undo_code what, int start, int end, char *text)
!
- Remember how to undo an event (according to what). The affected
text runs from start to end, and encompasses text.
+
!
- Function: void rl_free_undo_list (void)
!
- Free the existing undo list.
+
!
- Function: int rl_do_undo (void)
!
- Undo the first thing on the undo list. Returns
0
if there was
nothing to undo, non-zero if something was undone.
+
Finally, if you neither insert nor delete text, but directly modify the
existing text (e.g., change its case), call rl_modifying()
once, just before you modify the text. You must supply the indices of
the text range that you are going to modify.
+
!
- Function: int rl_modifying (int start, int end)
!
- Tell Readline to save the text between start and end as a
single undo unit. It is assumed that you will subsequently modify
that text.
+
!
!
!
!
! 2.4.6 Redisplay
!
+
+
- Function: void rl_redisplay (void)
!
- Change what's displayed on the screen to reflect the current contents
of
rl_line_buffer
.
+
!
- Function: int rl_forced_update_display (void)
!
- Force the line to be updated and redisplayed, whether or not
Readline thinks the screen display is correct.
+
!
- Function: int rl_on_new_line (void)
!
- Tell the update functions that we have moved onto a new (empty) line,
usually after ouputting a newline.
+
!
- Function: int rl_on_new_line_with_prompt (void)
!
- Tell the update functions that we have moved onto a new line, with
rl_prompt already displayed.
This could be used by applications that want to output the prompt string
***************
*** 2837,2864 ****
It should be used after setting rl_already_prompted.
!
!
- Function: int rl_reset_line_state (void)
!
-
! Reset the display state to a clean state and redisplay the current line
starting on a new line.
!
!
- Function: int rl_crlf (void)
!
-
! Move the cursor to the start of the next screen line.
!
!
- Function: int rl_show_char (int c)
!
-
! Display character c on
rl_outstream
.
If Readline has not been set to display meta characters directly, this
will convert meta characters to a meta-prefixed key sequence.
--- 3160,3184 ----
It should be used after setting rl_already_prompted.
+
!
- Function: int rl_reset_line_state (void)
!
- Reset the display state to a clean state and redisplay the current line
starting on a new line.
+
!
- Function: int rl_crlf (void)
!
- Move the cursor to the start of the next screen line.
+
!
- Function: int rl_show_char (int c)
!
- Display character c on
rl_outstream
.
If Readline has not been set to display meta characters directly, this
will convert meta characters to a meta-prefixed key sequence.
***************
*** 2866,2876 ****
redisplay.
!
!
! - Function: int rl_message (const char *, ...)
!
-
! The arguments are a format string as would be supplied to
printf
,
possibly containing conversion specifications such as `%d', and
any additional arguments necessary to satisfy the conversion specifications.
--- 3186,3195 ----
redisplay.
+
!
! - Function: int rl_message (const char *, ...)
!
- The arguments are a format string as would be supplied to
printf
,
possibly containing conversion specifications such as `%d', and
any additional arguments necessary to satisfy the conversion specifications.
***************
*** 2878,2914 ****
is also used to display numeric arguments and search strings.
!
!
- Function: int rl_clear_message (void)
!
-
! Clear the message in the echo area.
!
!
- Function: void rl_save_prompt (void)
!
-
! Save the local Readline prompt display state in preparation for
displaying a new message in the message area with
rl_message()
.
!
!
- Function: void rl_restore_prompt (void)
!
-
! Restore the local Readline prompt display state saved by the most
recent call to
rl_save_prompt
.
!
!
- Function: int rl_expand_prompt (char *prompt)
!
-
! Expand any special character sequences in prompt and set up the
local Readline prompt redisplay variables.
This function is called by
readline()
. It may also be called to
--- 3197,3229 ----
is also used to display numeric arguments and search strings.
+
!
- Function: int rl_clear_message (void)
!
- Clear the message in the echo area.
+
!
- Function: void rl_save_prompt (void)
!
- Save the local Readline prompt display state in preparation for
displaying a new message in the message area with
rl_message()
.
+
!
- Function: void rl_restore_prompt (void)
!
- Restore the local Readline prompt display state saved by the most
recent call to
rl_save_prompt
.
+
!
- Function: int rl_expand_prompt (char *prompt)
!
- Expand any special character sequences in prompt and set up the
local Readline prompt redisplay variables.
This function is called by
readline()
. It may also be called to
***************
*** 2918,2967 ****
(possibly multi-line) prompt.
!
!
- Function: int rl_set_prompt (const char *prompt)
!
-
! Make Readline use prompt for subsequent redisplay. This calls
rl_expand_prompt()
to expand the prompt and sets rl_prompt
to the result.
!
!
!
!
!
- Function: int rl_insert_text (const char *text)
!
-
! Insert text into the line at the current cursor position.
!
!
- Function: int rl_delete_text (int start, int end)
!
-
! Delete the text between start and end in the current line.
!
!
- Function: char * rl_copy_text (int start, int end)
!
-
! Return a copy of the text between start and end in
the current line.
!
!
- Function: int rl_kill_text (int start, int end)
!
-
! Copy the text between start and end in the current line
to the kill ring, appending or prepending to the last kill if the
last command was a kill command. The text is deleted.
--- 3233,3291 ----
(possibly multi-line) prompt.
+
!
- Function: int rl_set_prompt (const char *prompt)
!
- Make Readline use prompt for subsequent redisplay. This calls
rl_expand_prompt()
to expand the prompt and sets rl_prompt
to the result.
+
!
!
!
!
! 2.4.7 Modifying Text
!
+
+
- Function: int rl_insert_text (const char *text)
!
- Insert text into the line at the current cursor position.
+
!
- Function: int rl_delete_text (int start, int end)
!
- Delete the text between start and end in the current line.
+
!
- Function: char * rl_copy_text (int start, int end)
!
- Return a copy of the text between start and end in
the current line.
+
!
- Function: int rl_kill_text (int start, int end)
!
- Copy the text between start and end in the current line
to the kill ring, appending or prepending to the last kill if the
last command was a kill command. The text is deleted.
***************
*** 2970,3141 ****
not a kill, a new kill ring slot is used.
!
!
- Function: int rl_push_macro_input (char *macro)
!
-
! Cause macro to be inserted into the line, as if it had been invoked
by a key bound to a macro. Not especially useful; use
rl_insert_text()
instead.
!
!
!
!
!
- Function: int rl_read_key (void)
!
-
! Return the next character available from Readline's current input stream.
This handles input inserted into
! the input stream via rl_pending_input (see section Readline Variables)
and
rl_stuff_char()
, macros, and characters read from the keyboard.
While waiting for input, this function will call any function assigned to
the rl_event_hook
variable.
!
!
- Function: int rl_getc (FILE *stream)
!
-
! Return the next character available from stream, which is assumed to
be the keyboard.
!
!
- Function: int rl_stuff_char (int c)
!
-
! Insert c into the Readline input stream. It will be "read"
before Readline attempts to read characters from the terminal with
rl_read_key()
.
!
!
- Function: int rl_execute_next (int c)
!
-
! Make c be the next command to be executed when
rl_read_key()
is called. This sets rl_pending_input.
!
!
- Function: int rl_clear_pending_input (void)
!
-
! Unset rl_pending_input, effectively negating the effect of any
previous call to
rl_execute_next()
. This works only if the
pending input has not already been read with rl_read_key()
.
!
!
- Function: int rl_set_keyboard_input_timeout (int u)
!
-
! While waiting for keyboard input in
rl_read_key()
, Readline will
wait for u microseconds for input before calling any function
assigned to rl_event_hook
. The default waiting period is
one-tenth of a second. Returns the old timeout value.
!
!
!
!
!
- Function: void rl_prep_terminal (int meta_flag)
!
-
! Modify the terminal settings for Readline's use, so
readline()
can read a single character at a time from the keyboard.
The meta_flag argument should be non-zero if Readline should
read eight-bit input.
!
!
- Function: void rl_deprep_terminal (void)
!
-
! Undo the effects of
rl_prep_terminal()
, leaving the terminal in
the state in which it was before the most recent call to
rl_prep_terminal()
.
!
!
- Function: void rl_tty_set_default_bindings (Keymap kmap)
!
-
! Read the operating system's terminal editing characters (as would be displayed
by
stty
) to their Readline equivalents. The bindings are performed
in kmap.
!
!
- Function: int rl_reset_terminal (const char *terminal_name)
!
-
! Reinitialize Readline's idea of the terminal settings using
terminal_name as the terminal type (e.g.,
vt100
).
If terminal_name is NULL
, the value of the TERM
environment variable is used.
!
!
!
!
!
- Function: int rl_extend_line_buffer (int len)
!
-
! Ensure that
rl_line_buffer
has enough space to hold len
characters, possibly reallocating it if necessary.
!
!
- Function: int rl_initialize (void)
!
-
! Initialize or re-initialize Readline's internal state.
It's not strictly necessary to call this;
readline()
calls it before
reading any input.
!
!
- Function: int rl_ding (void)
!
-
! Ring the terminal bell, obeying the setting of
bell-style
.
!
!
- Function: int rl_alphabetic (int c)
!
-
! Return 1 if c is an alphabetic character.
!
!
- Function: void rl_display_match_list (char **matches, int len, int max)
!
-
! A convenience function for displaying a list of strings in
columnar format on Readline's output stream.
matches
is the list
of strings, in argv format, such as a list of completion matches.
--- 3294,3491 ----
not a kill, a new kill ring slot is used.
+
!
- Function: int rl_push_macro_input (char *macro)
!
- Cause macro to be inserted into the line, as if it had been invoked
by a key bound to a macro. Not especially useful; use
rl_insert_text()
instead.
+
!
!
!
!
! 2.4.8 Character Input
!
+
+
- Function: int rl_read_key (void)
!
- Return the next character available from Readline's current input stream.
This handles input inserted into
! the input stream via rl_pending_input (see section 2.3 Readline Variables)
and
rl_stuff_char()
, macros, and characters read from the keyboard.
While waiting for input, this function will call any function assigned to
the rl_event_hook
variable.
+
!
- Function: int rl_getc (FILE *stream)
!
- Return the next character available from stream, which is assumed to
be the keyboard.
+
!
- Function: int rl_stuff_char (int c)
!
- Insert c into the Readline input stream. It will be "read"
before Readline attempts to read characters from the terminal with
rl_read_key()
.
+
!
- Function: int rl_execute_next (int c)
!
- Make c be the next command to be executed when
rl_read_key()
is called. This sets rl_pending_input.
+
!
- Function: int rl_clear_pending_input (void)
!
- Unset rl_pending_input, effectively negating the effect of any
previous call to
rl_execute_next()
. This works only if the
pending input has not already been read with rl_read_key()
.
+
!
- Function: int rl_set_keyboard_input_timeout (int u)
!
- While waiting for keyboard input in
rl_read_key()
, Readline will
wait for u microseconds for input before calling any function
assigned to rl_event_hook
. The default waiting period is
one-tenth of a second. Returns the old timeout value.
+
!
!
!
!
! 2.4.9 Terminal Management
!
+
+
- Function: void rl_prep_terminal (int meta_flag)
!
- Modify the terminal settings for Readline's use, so
readline()
can read a single character at a time from the keyboard.
The meta_flag argument should be non-zero if Readline should
read eight-bit input.
+
!
- Function: void rl_deprep_terminal (void)
!
- Undo the effects of
rl_prep_terminal()
, leaving the terminal in
the state in which it was before the most recent call to
rl_prep_terminal()
.
+
!
- Function: void rl_tty_set_default_bindings (Keymap kmap)
!
- Read the operating system's terminal editing characters (as would be displayed
by
stty
) to their Readline equivalents. The bindings are performed
in kmap.
+
!
- Function: int rl_reset_terminal (const char *terminal_name)
!
- Reinitialize Readline's idea of the terminal settings using
terminal_name as the terminal type (e.g.,
vt100
).
If terminal_name is NULL
, the value of the TERM
environment variable is used.
+
!
!
!
!
! 2.4.10 Utility Functions
!
+
+
- Function: int rl_extend_line_buffer (int len)
!
- Ensure that
rl_line_buffer
has enough space to hold len
characters, possibly reallocating it if necessary.
+
!
- Function: int rl_initialize (void)
!
- Initialize or re-initialize Readline's internal state.
It's not strictly necessary to call this;
readline()
calls it before
reading any input.
+
!
- Function: int rl_ding (void)
!
- Ring the terminal bell, obeying the setting of
bell-style
.
+
!
- Function: int rl_alphabetic (int c)
!
- Return 1 if c is an alphabetic character.
+
!
- Function: void rl_display_match_list (char **matches, int len, int max)
!
- A convenience function for displaying a list of strings in
columnar format on Readline's output stream.
matches
is the list
of strings, in argv format, such as a list of completion matches.
***************
*** 3143,3267 ****
is the length of the longest string in matches
. This function uses
the setting of print-completions-horizontally
to select how the
! matches are displayed (see section Readline Init File Syntax).
-
-
The following are implemented as macros, defined in chardefs.h
.
Applications should refrain from using them.
!
!
- Function: int _rl_uppercase_p (int c)
!
-
! Return 1 if c is an uppercase alphabetic character.
!
!
- Function: int _rl_lowercase_p (int c)
!
-
! Return 1 if c is a lowercase alphabetic character.
!
!
- Function: int _rl_digit_p (int c)
!
-
! Return 1 if c is a numeric character.
!
!
- Function: int _rl_to_upper (int c)
!
-
! If c is a lowercase alphabetic character, return the corresponding
uppercase character.
!
!
- Function: int _rl_to_lower (int c)
!
-
! If c is an uppercase alphabetic character, return the corresponding
lowercase character.
!
!
- Function: int _rl_digit_value (int c)
!
-
! If c is a number, return the value it represents.
!
!
!
!
!
- Function: int rl_macro_bind (const char *keyseq, const char *macro, Keymap map)
!
-
! Bind the key sequence keyseq to invoke the macro macro.
The binding is performed in map. When keyseq is invoked, the
macro will be inserted into the line. This function is deprecated;
use
rl_generic_bind()
instead.
!
!
- Function: void rl_macro_dumper (int readable)
!
-
! Print the key sequences bound to macros and their values, using
the current keymap, to
rl_outstream
.
If readable is non-zero, the list is formatted in such a way
that it can be made part of an inputrc
file and re-read.
!
!
- Function: int rl_variable_bind (const char *variable, const char *value)
!
-
! Make the Readline variable variable have value.
This behaves as if the readline command
`set variable value' had been executed in an
inputrc
! file (see section Readline Init File Syntax).
!
!
- Function: void rl_variable_dumper (int readable)
!
-
! Print the readline variable names and their current values
to
rl_outstream
.
If readable is non-zero, the list is formatted in such a way
that it can be made part of an inputrc
file and re-read.
!
!
- Function: int rl_set_paren_blink_timeout (int u)
!
-
! Set the time interval (in microseconds) that Readline waits when showing
a balancing character when
blink-matching-paren
has been enabled.
!
!
!
!
!
An alternate interface is available to plain readline()
. Some
applications need to interleave keyboard I/O with file, device, or
--- 3493,3644 ----
is the length of the longest string in matches
. This function uses
the setting of print-completions-horizontally
to select how the
! matches are displayed (see section 1.3.1 Readline Init File Syntax).
+
The following are implemented as macros, defined in chardefs.h
.
Applications should refrain from using them.
+
!
- Function: int _rl_uppercase_p (int c)
!
- Return 1 if c is an uppercase alphabetic character.
+
!
- Function: int _rl_lowercase_p (int c)
!
- Return 1 if c is a lowercase alphabetic character.
+
!
- Function: int _rl_digit_p (int c)
!
- Return 1 if c is a numeric character.
+
!
- Function: int _rl_to_upper (int c)
!
- If c is a lowercase alphabetic character, return the corresponding
uppercase character.
+
!
- Function: int _rl_to_lower (int c)
!
- If c is an uppercase alphabetic character, return the corresponding
lowercase character.
+
!
- Function: int _rl_digit_value (int c)
!
- If c is a number, return the value it represents.
+
!
!
!
!
! 2.4.11 Miscellaneous Functions
!
+
+
- Function: int rl_macro_bind (const char *keyseq, const char *macro, Keymap map)
!
- Bind the key sequence keyseq to invoke the macro macro.
The binding is performed in map. When keyseq is invoked, the
macro will be inserted into the line. This function is deprecated;
use
rl_generic_bind()
instead.
+
!
- Function: void rl_macro_dumper (int readable)
!
- Print the key sequences bound to macros and their values, using
the current keymap, to
rl_outstream
.
If readable is non-zero, the list is formatted in such a way
that it can be made part of an inputrc
file and re-read.
+
!
- Function: int rl_variable_bind (const char *variable, const char *value)
!
- Make the Readline variable variable have value.
This behaves as if the readline command
`set variable value' had been executed in an
inputrc
! file (see section 1.3.1 Readline Init File Syntax).
+
!
- Function: void rl_variable_dumper (int readable)
!
- Print the readline variable names and their current values
to
rl_outstream
.
If readable is non-zero, the list is formatted in such a way
that it can be made part of an inputrc
file and re-read.
+
!
- Function: int rl_set_paren_blink_timeout (int u)
!
- Set the time interval (in microseconds) that Readline waits when showing
a balancing character when
blink-matching-paren
has been enabled.
+
!
!
! - Function: char * rl_get_termcap (const char *cap)
!
- Retrieve the string value of the termcap capability cap.
! Readline fetches the termcap entry for the current terminal name and
! uses those capabilities to move around the screen line and perform other
! terminal-specific operations, like erasing a line. Readline does not
! use all of a terminal's capabilities, and this function will return
! values for only those capabilities Readline uses.
!
!
!
!
!
!
!
! 2.4.12 Alternate Interface
!
+
An alternate interface is available to plain readline()
. Some
applications need to interleave keyboard I/O with file, device, or
***************
*** 3270,3291 ****
also be invoked as a `callback' function from an event loop. There
are functions available to make this easy.
!
!
- Function: void rl_callback_handler_install (const char *prompt, rl_vcpfunc_t *lhandler)
!
-
! Set up the terminal for readline I/O and display the initial
expanded value of prompt. Save the value of lhandler to
use as a function to call when a complete line of input has been entered.
The function takes the text of the line as an argument.
!
!
- Function: void rl_callback_read_char (void)
!
-
! Whenever an application determines that keyboard input is available, it
should call
rl_callback_read_char()
, which will read the next
character from the current input source. If that character completes the
--- 3647,3666 ----
also be invoked as a `callback' function from an event loop. There
are functions available to make this easy.
+
!
- Function: void rl_callback_handler_install (const char *prompt, rl_vcpfunc_t *lhandler)
!
- Set up the terminal for readline I/O and display the initial
expanded value of prompt. Save the value of lhandler to
use as a function to call when a complete line of input has been entered.
The function takes the text of the line as an argument.
+
!
- Function: void rl_callback_read_char (void)
!
- Whenever an application determines that keyboard input is available, it
should call
rl_callback_read_char()
, which will read the next
character from the current input source. If that character completes the
***************
*** 3295,3314 ****
NULL
line.
!
!
- Function: void rl_callback_handler_remove (void)
!
-
! Restore the terminal to its initial state and remove the line handler.
This may be called from within a callback as well as independently.
!
!
!
!
!
Here is a function which changes lowercase characters to their uppercase
equivalents, and uppercase characters to lowercase. If
--- 3670,3701 ----
NULL
line.
+
!
- Function: void rl_callback_handler_remove (void)
!
- Restore the terminal to its initial state and remove the line handler.
This may be called from within a callback as well as independently.
+
!
!
!
!
! 2.4.13 A Readline Example
!
+
Here is a function which changes lowercase characters to their uppercase
equivalents, and uppercase characters to lowercase. If
***************
*** 3317,3325 ****
would change the case of the following 10 characters, leaving the cursor on
the last character changed.
!
!
!
! /* Invert the case of the COUNT following characters. */
int
invert_case_line (count, key)
--- 3704,3710 ----
would change the case of the following 10 characters, leaving the cursor on
the last character changed.
+
!
| /* Invert the case of the COUNT following characters. */
int
invert_case_line (count, key)
***************
*** 3375,3385 ****
return (0);
}
!
!
!
!
!
Signals are asynchronous events sent to a process by the Unix kernel,
sometimes on behalf of another process. They are intended to indicate
--- 3760,3783 ----
return (0);
}
! |
+
+
+
+
+ 2.5 Readline Signal Handling
+
+
Signals are asynchronous events sent to a process by the Unix kernel,
sometimes on behalf of another process. They are intended to indicate
***************
*** 3391,3397 ****
restore the terminal to a sane state, or provide application writers with
functions to do so manually.
-
-
Readline contains an internal signal handler that is installed for a
number of signals (SIGINT
, SIGQUIT
, SIGTERM
,
--- 3789,3794 ----
restore the terminal to a sane state, or provide application writers with
functions to do so manually.
+
Readline contains an internal signal handler that is installed for a
number of signals (SIGINT
, SIGQUIT
, SIGTERM
,
***************
*** 3407,3413 ****
some additional work, which will cause any partially-entered line to be
aborted (see the description of rl_free_line_state()
below).
-
-
There is an additional Readline signal handler, for SIGWINCH
, which
the kernel sends to a process whenever the terminal's size changes (for
--- 3804,3809 ----
some additional work, which will cause any partially-entered line to be
aborted (see the description of rl_free_line_state()
below).
+
There is an additional Readline signal handler, for SIGWINCH
, which
the kernel sends to a process whenever the terminal's size changes (for
***************
*** 3421,3427 ****
call rl_cleanup_after_signal()
(described below), to restore the
terminal state.
-
-
Readline provides two variables that allow application writers to
control whether or not it will catch certain signals and act on them
--- 3817,3822 ----
call rl_cleanup_after_signal()
(described below), to restore the
terminal state.
+
Readline provides two variables that allow application writers to
control whether or not it will catch certain signals and act on them
***************
*** 3429,3462 ****
values of these variables only when calling readline()
, not in
a signal handler, so Readline's internal signal state is not corrupted.
!
!
- Variable: int rl_catch_signals
!
-
! If this variable is non-zero, Readline will install signal handlers for
SIGINT
, SIGQUIT
, SIGTERM
, SIGALRM
,
SIGTSTP
, SIGTTIN
, and SIGTTOU
.
-
-
The default value of rl_catch_signals
is 1.
!
!
- Variable: int rl_catch_sigwinch
!
-
! If this variable is non-zero, Readline will install a signal handler for
SIGWINCH
.
-
-
The default value of rl_catch_sigwinch
is 1.
-
-
If an application does not wish to have Readline catch any signals, or
to handle signals other than those Readline catches (SIGHUP
,
--- 3824,3852 ----
values of these variables only when calling readline()
, not in
a signal handler, so Readline's internal signal state is not corrupted.
+
!
- Variable: int rl_catch_signals
!
- If this variable is non-zero, Readline will install signal handlers for
SIGINT
, SIGQUIT
, SIGTERM
, SIGALRM
,
SIGTSTP
, SIGTTIN
, and SIGTTOU
.
+
The default value of rl_catch_signals
is 1.
+
!
- Variable: int rl_catch_sigwinch
!
- If this variable is non-zero, Readline will install a signal handler for
SIGWINCH
.
+
The default value of rl_catch_sigwinch
is 1.
+
If an application does not wish to have Readline catch any signals, or
to handle signals other than those Readline catches (SIGHUP
,
***************
*** 3464,3485 ****
Readline provides convenience functions to do the necessary terminal
and internal state cleanup upon receipt of a signal.
!
!
- Function: void rl_cleanup_after_signal (void)
!
-
! This function will reset the state of the terminal to what it was before
readline()
was called, and remove the Readline signal handlers for
all signals, depending on the values of rl_catch_signals
and
rl_catch_sigwinch
.
!
!
- Function: void rl_free_line_state (void)
!
-
! This will free any partial state associated with the current input line
(undo information, any partial history entry, any partially-entered
keyboard macro, and any partially-entered numeric argument). This
--- 3854,3873 ----
Readline provides convenience functions to do the necessary terminal
and internal state cleanup upon receipt of a signal.
+
!
- Function: void rl_cleanup_after_signal (void)
!
- This function will reset the state of the terminal to what it was before
readline()
was called, and remove the Readline signal handlers for
all signals, depending on the values of rl_catch_signals
and
rl_catch_sigwinch
.
+
!
- Function: void rl_free_line_state (void)
!
- This will free any partial state associated with the current input line
(undo information, any partial history entry, any partially-entered
keyboard macro, and any partially-entered numeric argument). This
***************
*** 3488,3571 ****
current input line.
!
!
- Function: void rl_reset_after_signal (void)
!
-
! This will reinitialize the terminal and reinstall any Readline signal
handlers, depending on the values of
rl_catch_signals
and
rl_catch_sigwinch
.
-
-
If an application does not wish Readline to catch SIGWINCH
, it may
call rl_resize_terminal()
or rl_set_screen_size()
to force
Readline to update its idea of the terminal size when a SIGWINCH
is received.
!
!
- Function: void rl_resize_terminal (void)
!
-
! Update Readline's internal screen size by reading values from the kernel.
!
!
- Function: void rl_set_screen_size (int rows, int cols)
!
-
! Set Readline's idea of the terminal size to rows rows and
cols columns.
-
-
If an application does not want to install a SIGWINCH
handler, but
is still interested in the screen dimensions, Readline's idea of the screen
size may be queried.
!
!
- Function: void rl_get_screen_size (int *rows, int *cols)
!
-
! Return Readline's idea of the terminal's size in the
variables pointed to by the arguments.
-
-
The following functions install and remove Readline's signal handlers.
!
!
- Function: int rl_set_signals (void)
!
-
! Install Readline's signal handler for
SIGINT
, SIGQUIT
,
SIGTERM
, SIGALRM
, SIGTSTP
, SIGTTIN
,
SIGTTOU
, and SIGWINCH
, depending on the values of
rl_catch_signals
and rl_catch_sigwinch
.
!
!
- Function: int rl_clear_signals (void)
!
-
! Remove all of the Readline signal handlers installed by
rl_set_signals()
.
!
!
!
!
!
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
--- 3876,3963 ----
current input line.
+
!
- Function: void rl_reset_after_signal (void)
!
- This will reinitialize the terminal and reinstall any Readline signal
handlers, depending on the values of
rl_catch_signals
and
rl_catch_sigwinch
.
+
If an application does not wish Readline to catch SIGWINCH
, it may
call rl_resize_terminal()
or rl_set_screen_size()
to force
Readline to update its idea of the terminal size when a SIGWINCH
is received.
+
!
- Function: void rl_resize_terminal (void)
!
- Update Readline's internal screen size by reading values from the kernel.
+
!
- Function: void rl_set_screen_size (int rows, int cols)
!
- Set Readline's idea of the terminal size to rows rows and
cols columns.
+
If an application does not want to install a SIGWINCH
handler, but
is still interested in the screen dimensions, Readline's idea of the screen
size may be queried.
+
!
- Function: void rl_get_screen_size (int *rows, int *cols)
!
- Return Readline's idea of the terminal's size in the
variables pointed to by the arguments.
+
The following functions install and remove Readline's signal handlers.
+
!
- Function: int rl_set_signals (void)
!
- Install Readline's signal handler for
SIGINT
, SIGQUIT
,
SIGTERM
, SIGALRM
, SIGTSTP
, SIGTTIN
,
SIGTTOU
, and SIGWINCH
, depending on the values of
rl_catch_signals
and rl_catch_sigwinch
.
+
!
- Function: int rl_clear_signals (void)
!
- Remove all of the Readline signal handlers installed by
rl_set_signals()
.
+
!
!
!
!
! 2.6 Custom Completers
!
+
Typically, a program that reads commands from the user has a way of
disambiguating commands and data. If your program is one of these, then
***************
*** 3573,3591 ****
The following sections describe how your program and Readline
cooperate to provide this service.
!
!
!
!
!
!
!
!
In order to complete some text, the full list of possible completions
must be available. That is, it is not possible to accurately
--- 3965,3996 ----
The following sections describe how your program and Readline
cooperate to provide this service.
+
!
!
!
!
!
!
!
! 2.6.1 How Completing Works
!
+
In order to complete some text, the full list of possible completions
must be available. That is, it is not possible to accurately
***************
*** 3596,3609 ****
of text, you must write your own completion function. This section
describes exactly what such functions must do, and provides an example.
-
-
There are three major functions used to perform completion:
!
!
-
-
The user-interface function
rl_complete()
. This function is
called with the same arguments as other bindable Readline functions:
--- 4001,4011 ----
of text, you must write your own completion function. This section
describes exactly what such functions must do, and provides an example.
+
There are three major functions used to perform completion:
!
-
The user-interface function
rl_complete()
. This function is
called with the same arguments as other bindable Readline functions:
***************
*** 3614,3620 ****
completions, or actually performs the
completion, depending on which behavior is desired.
-
-
The internal function
rl_completion_matches()
uses an
application-supplied generator function to generate the list of
--- 4016,4022 ----
completions, or actually performs the
completion, depending on which behavior is desired.
+
-
The internal function
rl_completion_matches()
uses an
application-supplied generator function to generate the list of
***************
*** 3622,3628 ****
The caller should place the address of its generator function in
rl_completion_entry_function
.
-
-
The generator function is called repeatedly from
rl_completion_matches()
, returning a string each time. The
--- 4024,4030 ----
The caller should place the address of its generator function in
rl_completion_entry_function
.
+
-
The generator function is called repeatedly from
rl_completion_matches()
, returning a string each time. The
***************
*** 3638,3659 ****
returns as a match must be allocated with malloc()
; Readline
frees the strings when it has finished with them.
-
- Function: int rl_complete (int ignore, int invoking_key)
!
-
! Complete the word at or before point. You have supplied the function
that does the initial simple matching selection algorithm (see
rl_completion_matches()
). The default is to do filename completion.
!
!
- Variable: rl_compentry_func_t * rl_completion_entry_function
!
-
! This is a pointer to the generator function for
rl_completion_matches()
.
If the value of rl_completion_entry_function
is
--- 4040,4061 ----
returns as a match must be allocated with malloc()
; Readline
frees the strings when it has finished with them.
+
+
+
- Function: int rl_complete (int ignore, int invoking_key)
!
- Complete the word at or before point. You have supplied the function
that does the initial simple matching selection algorithm (see
rl_completion_matches()
). The default is to do filename completion.
+
!
- Variable: rl_compentry_func_t * rl_completion_entry_function
!
- This is a pointer to the generator function for
rl_completion_matches()
.
If the value of rl_completion_entry_function
is
***************
*** 3661,3680 ****
function, rl_filename_completion_function()
, is used.
!
!
!
!
!
Here is the complete list of callable completion functions present in
Readline.
!
!
- Function: int rl_complete_internal (int what_to_do)
!
-
! Complete the word at or before point. what_to_do says what to do
with the completion. A value of `?' means list the possible
completions. `TAB' means do standard completion. `*' means
--- 4063,4094 ----
function,
rl_filename_completion_function()
, is used.
+
!
!
!
!
! 2.6.2 Completion Functions
!
+
Here is the complete list of callable completion functions present in
Readline.
+
!
- Function: int rl_complete_internal (int what_to_do)
!
- Complete the word at or before point. what_to_do says what to do
with the completion. A value of `?' means list the possible
completions. `TAB' means do standard completion. `*' means
***************
*** 3683,3693 ****
performing partial completion.
!
!
- Function: int rl_complete (int ignore, int invoking_key)
!
-
! Complete the word at or before point. You have supplied the function
that does the initial simple matching selection algorithm (see
rl_completion_matches()
and rl_completion_entry_function
).
--- 4097,4106 ----
performing partial completion.
+
!
- Function: int rl_complete (int ignore, int invoking_key)
!
- Complete the word at or before point. You have supplied the function
that does the initial simple matching selection algorithm (see
rl_completion_matches()
and rl_completion_entry_function
).
***************
*** 3696,3733 ****
argument depending on invoking_key.
!
!
- Function: int rl_possible_completions (int count, int invoking_key)
!
-
! List the possible completions. See description of
rl_complete
()
. This calls rl_complete_internal()
with an argument of
`?'.
!
!
- Function: int rl_insert_completions (int count, int invoking_key)
!
-
! Insert the list of possible completions into the line, deleting the
partially-completed word. See description of
rl_complete()
.
This calls rl_complete_internal()
with an argument of `*'.
!
!
- Function: char ** rl_completion_matches (const char *text, rl_compentry_func_t *entry_func)
!
-
! Returns an array of strings which is a list of completions for
text. If there are no completions, returns
NULL
.
The first entry in the returned array is the substitution for text.
The remaining entries are the possible completions. The array is
terminated with a NULL
pointer.
-
-
entry_func is a function of two args, and returns a
char *
. The first argument is text. The second is a
--- 4109,4142 ----
argument depending on invoking_key.
+
!
- Function: int rl_possible_completions (int count, int invoking_key)
!
- List the possible completions. See description of
rl_complete
()
. This calls rl_complete_internal()
with an argument of
`?'.
+
!
- Function: int rl_insert_completions (int count, int invoking_key)
!
- Insert the list of possible completions into the line, deleting the
partially-completed word. See description of
rl_complete()
.
This calls rl_complete_internal()
with an argument of `*'.
+
!
- Function: char ** rl_completion_matches (const char *text, rl_compentry_func_t *entry_func)
!
- Returns an array of strings which is a list of completions for
text. If there are no completions, returns
NULL
.
The first entry in the returned array is the substitution for text.
The remaining entries are the possible completions. The array is
terminated with a NULL
pointer.
+
entry_func is a function of two args, and returns a
char *
. The first argument is text. The second is a
***************
*** 3736,3746 ****
when there are no more matches.
!
!
- Function: char * rl_filename_completion_function (const char *text, int state)
!
-
! A generator function for filename completion in the general case.
text is a partial filename.
The Bash source is a useful reference for writing custom
--- 4145,4154 ----
when there are no more matches.
+
!
- Function: char * rl_filename_completion_function (const char *text, int state)
!
- A generator function for filename completion in the general case.
text is a partial filename.
The Bash source is a useful reference for writing custom
***************
*** 3748,3783 ****
Readline functions).
!
!
- Function: char * rl_username_completion_function (const char *text, int state)
!
-
! A completion generator for usernames. text contains a partial
username preceded by a random character (usually `~'). As with all
completion generators, state is zero on the first call and non-zero
for subsequent calls.
!
!
!
!
!
- Variable: rl_compentry_func_t * rl_completion_entry_function
!
-
! A pointer to the generator function for
rl_completion_matches()
.
NULL
means to use rl_filename_completion_function()
, the default
filename completer.
!
!
- Variable: rl_completion_func_t * rl_attempted_completion_function
!
-
! A pointer to an alternative function to create matches.
The function is called with text, start, and end.
start and end are indices in
rl_line_buffer
defining
--- 4156,4202 ----
Readline functions).
+
!
- Function: char * rl_username_completion_function (const char *text, int state)
!
- A completion generator for usernames. text contains a partial
username preceded by a random character (usually `~'). As with all
completion generators, state is zero on the first call and non-zero
for subsequent calls.
+
!
!
!
!
! 2.6.3 Completion Variables
!
+
+
- Variable: rl_compentry_func_t * rl_completion_entry_function
!
- A pointer to the generator function for
rl_completion_matches()
.
NULL
means to use rl_filename_completion_function()
, the default
filename completer.
+
!
- Variable: rl_completion_func_t * rl_attempted_completion_function
!
- A pointer to an alternative function to create matches.
The function is called with text, start, and end.
start and end are indices in
rl_line_buffer
defining
***************
*** 3791,3801 ****
completion even if this function returns no matches.
!
!
- Variable: rl_quote_func_t * rl_filename_quoting_function
!
-
! A pointer to a function that will quote a filename in an
application-specific fashion. This is called if filename completion is being
attempted and one of the characters in
rl_filename_quote_characters
--- 4210,4219 ----
completion even if this function returns no matches.
+
!
- Variable: rl_quote_func_t * rl_filename_quoting_function
!
- A pointer to a function that will quote a filename in an
application-specific fashion. This is called if filename completion is being
attempted and one of the characters in
rl_filename_quote_characters
***************
*** 3809,3819 ****
to reset this character.
!
!
- Variable: rl_dequote_func_t * rl_filename_dequoting_function
!
-
! A pointer to a function that will remove application-specific quoting
characters from a filename before completion is attempted, so those
characters do not interfere with matching the text against names in
--- 4227,4236 ----
to reset this character.
+
!
- Variable: rl_dequote_func_t * rl_filename_dequoting_function
!
- A pointer to a function that will remove application-specific quoting
characters from a filename before completion is attempted, so those
characters do not interfere with matching the text against names in
***************
*** 3823,3833 ****
quote_char is zero, the filename was not in an embedded string.
!
!
- Variable: rl_linebuf_func_t * rl_char_is_quoted_p
!
-
! A pointer to a function to call that determines whether or not a specific
character in the line buffer is quoted, according to whatever quoting
mechanism the program calling Readline uses. The function is called with
--- 4240,4249 ----
quote_char is zero, the filename was not in an embedded string.
+
!
- Variable: rl_linebuf_func_t * rl_char_is_quoted_p
!
- A pointer to a function to call that determines whether or not a specific
character in the line buffer is quoted, according to whatever quoting
mechanism the program calling Readline uses. The function is called with
***************
*** 3837,3906 ****
used to break words for the completer.
!
!
- Variable: int rl_completion_query_items
!
-
! Up to this many items will be displayed in response to a
possible-completions call. After that, we ask the user if she is sure
she wants to see them all. The default value is 100.
!
!
- Variable: const char * rl_basic_word_break_characters
!
-
! The basic list of characters that signal a break between words for the
completer routine. The default value of this variable is the characters
which break words for completion in Bash:
!
" \t\n\"\\'`@$><=;|&{("
.
!
!
- Variable: const char * rl_basic_quote_characters
!
-
! A list of quote characters which can cause a word break.
!
!
- Variable: const char * rl_completer_word_break_characters
!
-
! The list of characters that signal a break between words for
rl_complete_internal()
. The default list is the value of
rl_basic_word_break_characters
.
!
!
- Variable: const char * rl_completer_quote_characters
!
-
! A list of characters which can be used to quote a substring of the line.
Completion occurs on the entire substring, and within the substring
rl_completer_word_break_characters
are treated as any other character,
unless they also appear within this list.
!
!
- Variable: const char * rl_filename_quote_characters
!
-
! A list of characters that cause a filename to be quoted by the completer
when they appear in a completed filename. The default is the null string.
!
!
- Variable: const char * rl_special_prefixes
!
-
! The list of characters that are word break characters, but should be
left in text when it is passed to the completion function.
Programs can use this to help determine what kind of completing to do.
--- 4253,4315 ----
used to break words for the completer.
+
!
- Variable: int rl_completion_query_items
!
- Up to this many items will be displayed in response to a
possible-completions call. After that, we ask the user if she is sure
she wants to see them all. The default value is 100.
+
!
- Variable: const char * rl_basic_word_break_characters
!
- The basic list of characters that signal a break between words for the
completer routine. The default value of this variable is the characters
which break words for completion in Bash:
!
" \t\n\"\\'`@$><=;|&{("
.
+
!
- Variable: const char * rl_basic_quote_characters
!
- A list of quote characters which can cause a word break.
+
!
- Variable: const char * rl_completer_word_break_characters
!
- The list of characters that signal a break between words for
rl_complete_internal()
. The default list is the value of
rl_basic_word_break_characters
.
+
!
- Variable: const char * rl_completer_quote_characters
!
- A list of characters which can be used to quote a substring of the line.
Completion occurs on the entire substring, and within the substring
rl_completer_word_break_characters
are treated as any other character,
unless they also appear within this list.
+
!
- Variable: const char * rl_filename_quote_characters
!
- A list of characters that cause a filename to be quoted by the completer
when they appear in a completed filename. The default is the null string.
+
!
- Variable: const char * rl_special_prefixes
!
- The list of characters that are word break characters, but should be
left in text when it is passed to the completion function.
Programs can use this to help determine what kind of completing to do.
***************
*** 3908,3918 ****
shell variables and hostnames.
!
!
- Variable: int rl_completion_append_character
!
-
! When a single completion alternative matches at the end of the command
line, this character is appended to the inserted completion text. The
default is a space character (` '). Setting this to the null
--- 4317,4326 ----
shell variables and hostnames.
+
!
- Variable: int rl_completion_append_character
!
- When a single completion alternative matches at the end of the command
line, this character is appended to the inserted completion text. The
default is a space character (` '). Setting this to the null
***************
*** 3922,3941 ****
an application-specific command line syntax specification.
!
!
- Variable: int rl_ignore_completion_duplicates
!
-
! If non-zero, then duplicates in the matches are removed.
The default is 1.
!
!
- Variable: int rl_filename_completion_desired
!
-
! Non-zero means that the results of the matches are to be treated as
filenames. This is always zero on entry, and can only be changed
within a completion entry generator function. If it is set to a non-zero
--- 4330,4347 ----
an application-specific command line syntax specification.
+
!
- Variable: int rl_ignore_completion_duplicates
!
- If non-zero, then duplicates in the matches are removed.
The default is 1.
+
!
- Variable: int rl_filename_completion_desired
!
- Non-zero means that the results of the matches are to be treated as
filenames. This is always zero on entry, and can only be changed
within a completion entry generator function. If it is set to a non-zero
***************
*** 3945,3955 ****
is set to a non-zero value.
!
!
- Variable: int rl_filename_quoting_desired
!
-
! Non-zero means that the results of the matches are to be quoted using
double quotes (or an application-specific quoting mechanism) if the
completed filename contains any characters in
--- 4351,4360 ----
is set to a non-zero value.
+
!
- Variable: int rl_filename_quoting_desired
!
- Non-zero means that the results of the matches are to be quoted using
double quotes (or an application-specific quoting mechanism) if the
completed filename contains any characters in
***************
*** 3959,3969 ****
by
rl_filename_quoting_function
.
!
!
- Variable: int rl_attempted_completion_over
!
-
! If an application-specific completion function assigned to
rl_attempted_completion_function
sets this variable to a non-zero
value, Readline will not perform its default filename completion even
--- 4364,4373 ----
by rl_filename_quoting_function
.
+
!
- Variable: int rl_attempted_completion_over
!
- If an application-specific completion function assigned to
rl_attempted_completion_function
sets this variable to a non-zero
value, Readline will not perform its default filename completion even
***************
*** 3971,4000 ****
It should be set only by an application's completion function.
!
!
- Variable: int rl_completion_type
!
-
! Set to a character describing the type of completion Readline is currently
attempting; see the description of
rl_complete_internal()
! (see section Completion Functions) for the list of characters.
!
!
- Variable: int rl_inhibit_completion
!
-
! If this variable is non-zero, completion is inhibited. The completion
character will be inserted as any other bound to
self-insert
.
!
!
- Variable: rl_compignore_func_t * rl_ignore_some_completions_function
!
-
! This function, if defined, is called by the completer when real filename
completion is done, after all the matching names have been generated.
It is passed a
NULL
terminated array of matches.
--- 4375,4401 ----
It should be set only by an application's completion function.
+
!
- Variable: int rl_completion_type
!
- Set to a character describing the type of completion Readline is currently
attempting; see the description of
rl_complete_internal()
! (see section 2.6.2 Completion Functions) for the list of characters.
+
!
- Variable: int rl_inhibit_completion
!
- If this variable is non-zero, completion is inhibited. The completion
character will be inserted as any other bound to
self-insert
.
+
!
- Variable: rl_compignore_func_t * rl_ignore_some_completions_function
!
- This function, if defined, is called by the completer when real filename
completion is done, after all the matching names have been generated.
It is passed a
NULL
terminated array of matches.
***************
*** 4004,4014 ****
from the array must be freed.
!
!
- Variable: rl_icppfunc_t * rl_directory_completion_hook
!
-
! This function, if defined, is allowed to modify the directory portion
of filenames Readline completes. It is called with the address of a
string (the current directory name) as an argument, and may modify that string.
--- 4405,4414 ----
from the array must be freed.
+
!
- Variable: rl_icppfunc_t * rl_directory_completion_hook
!
- This function, if defined, is allowed to modify the directory portion
of filenames Readline completes. It is called with the address of a
string (the current directory name) as an argument, and may modify that string.
***************
*** 4021,4031 ****
It could be used to expand symbolic links or shell variables in pathnames.
!
!
- Variable: rl_compdisp_func_t * rl_completion_display_matches_hook
!
-
! If non-zero, then this is the address of a function to call when
completing a word would normally display the list of possible matches.
This function is called in lieu of Readline displaying the list.
--- 4421,4430 ----
It could be used to expand symbolic links or shell variables in pathnames.
+
!
- Variable: rl_compdisp_func_t * rl_completion_display_matches_hook
!
- If non-zero, then this is the address of a function to call when
completing a word would normally display the list of possible matches.
This function is called in lieu of Readline displaying the list.
***************
*** 4039,4049 ****
function may be called from this hook.
!
!
!
!
!
Here is a small application demonstrating the use of the GNU Readline
library. It is called fileman
, and the source code resides in
--- 4438,4461 ----
function may be called from this hook.
+
!
!
!
!
! 2.6.4 A Short Completion Example
!
+
Here is a small application demonstrating the use of the GNU Readline
library. It is called fileman
, and the source code resides in
***************
*** 4051,4059 ****
completion of command names, line editing features, and access to the
history list.
!
!
!
! /* fileman.c -- A tiny application which demonstrates how to use the
GNU Readline library. This application interactively allows users
to manipulate files and their modes. */
--- 4463,4469 ----
completion of command names, line editing features, and access to the
history list.
+
!
| /* fileman.c -- A tiny application which demonstrates how to use the
GNU Readline library. This application interactively allows users
to manipulate files and their modes. */
***************
*** 4489,4907 ****
return (1);
}
!
-
-
- Jump to:
- c
- -
- e
- -
- i
- -
- k
- -
- n
- -
- r
- -
- v
- -
- y
-
-
-
- command editing
-
-
-
- editing command lines
-
-
-
- initialization file, readline
- interaction, readline
-
-
-
- kill ring
- killing text
-
-
-
- notation, readline
-
-
-
- readline, function
-
-
-
- variables, readline
-
-
-
- yanking text
-
-
-
-
-
-
-
- Jump to:
- _
- -
- a
- -
- b
- -
- c
- -
- d
- -
- e
- -
- f
- -
- h
- -
- i
- -
- k
- -
- m
- -
- n
- -
- o
- -
- p
- -
- q
- -
- r
- -
- s
- -
- t
- -
- u
- -
- v
- -
- y
-
-
-
- _rl_digit_p
- _rl_digit_value
- _rl_lowercase_p
- _rl_to_lower
- _rl_to_upper
- _rl_uppercase_p
-
-
-
- abort (C-g)
- accept-line (Newline or Return)
-
-
-
- backward-char (C-b)
- backward-delete-char (Rubout)
- backward-kill-line (C-x Rubout)
- backward-kill-word (M-DEL)
- backward-word (M-b)
- beginning-of-history (M-<)
- beginning-of-line (C-a)
- bell-style
-
-
-
- call-last-kbd-macro (C-x e)
- capitalize-word (M-c)
- character-search (C-])
- character-search-backward (M-C-])
- clear-screen (C-l)
- comment-begin
- complete (TAB)
- completion-query-items
- convert-meta
- copy-backward-word ()
- copy-forward-word ()
- copy-region-as-kill ()
-
-
-
- delete-char (C-d)
- delete-char-or-list ()
- delete-horizontal-space ()
- digit-argument (M-0, M-1, ... M--)
- disable-completion
- do-uppercase-version (M-a, M-b, M-x, ...)
- downcase-word (M-l)
- dump-functions ()
- dump-macros ()
- dump-variables ()
-
-
-
- editing-mode
- enable-keypad
- end-kbd-macro (C-x ))
- end-of-history (M->)
- end-of-line (C-e)
- exchange-point-and-mark (C-x C-x)
- expand-tilde
-
-
-
- forward-backward-delete-char ()
- forward-char (C-f)
- forward-search-history (C-s)
- forward-word (M-f)
-
-
-
- history-search-backward ()
- history-search-forward ()
- horizontal-scroll-mode
-
-
-
- input-meta
- insert-comment (M-#)
- insert-completions (M-*)
- isearch-terminators
-
-
-
- keymap
- kill-line (C-k)
- kill-region ()
- kill-whole-line ()
- kill-word (M-d)
-
-
-
- mark-modified-lines
- menu-complete ()
- meta-flag
-
-
-
- next-history (C-n)
- non-incremental-forward-search-history (M-n)
- non-incremental-reverse-search-history (M-p)
-
-
-
- output-meta
-
-
-
- possible-completions (M-?)
- prefix-meta (ESC)
- previous-history (C-p)
-
-
-
- quoted-insert (C-q or C-v)
-
-
-
- re-read-init-file (C-x C-r)
- readline
- redraw-current-line ()
- reverse-search-history (C-r)
- revert-line (M-r)
- rl_add_defun
- rl_add_funmap_entry
- rl_add_undo
- rl_alphabetic
- rl_already_prompted
- rl_attempted_completion_function
- rl_attempted_completion_over
- rl_basic_quote_characters
- rl_basic_word_break_characters
- rl_begin_undo_group
- rl_bind_key
- rl_bind_key_in_map
- rl_binding_keymap
- rl_callback_handler_install
- rl_callback_handler_remove
- rl_callback_read_char
- rl_catch_signals
- rl_catch_sigwinch
- rl_char_is_quoted_p
- rl_cleanup_after_signal
- rl_clear_message
- rl_clear_pending_input
- rl_clear_signals
- rl_complete, rl_complete
- rl_complete_internal
- rl_completer_quote_characters
- rl_completer_word_break_characters
- rl_completion_append_character
- rl_completion_display_matches_hook
- rl_completion_entry_function, rl_completion_entry_function
- rl_completion_matches
- rl_completion_query_items
- rl_completion_type
- rl_copy_keymap
- rl_copy_text
- rl_crlf
- rl_delete_text
- rl_deprep_term_function
- rl_deprep_terminal
- rl_ding
- rl_directory_completion_hook
- rl_discard_keymap
- rl_dispatching
- rl_display_match_list
- rl_do_undo
- rl_done
- rl_editing_mode
- rl_end
- rl_end_undo_group
- rl_erase_empty_line
- rl_event_hook
- rl_execute_next
- rl_executing_keymap
- rl_executing_macro
- rl_expand_prompt
- rl_explicit_arg
- rl_extend_line_buffer
- rl_filename_completion_desired
- rl_filename_completion_function
- rl_filename_dequoting_function
- rl_filename_quote_characters
- rl_filename_quoting_desired
- rl_filename_quoting_function
- rl_forced_update_display
- rl_free_line_state
- rl_free_undo_list
- rl_function_dumper
- rl_function_of_keyseq
- rl_funmap_names
- rl_generic_bind
- rl_get_keymap
- rl_get_keymap_by_name
- rl_get_keymap_name
- rl_get_screen_size
- rl_getc
- rl_getc_function
- rl_gnu_readline_p
- rl_ignore_completion_duplicates
- rl_ignore_some_completions_function
- rl_inhibit_completion
- rl_initialize
- rl_insert_completions
- rl_insert_text
- rl_instream
- rl_invoking_keyseqs
- rl_invoking_keyseqs_in_map
- rl_kill_text
- rl_last_func
- rl_library_version
- rl_line_buffer
- rl_list_funmap_names
- rl_macro_bind
- rl_macro_dumper
- rl_make_bare_keymap
- rl_make_keymap
- rl_mark
- rl_message
- rl_modifying
- rl_named_function
- rl_num_chars_to_read
- rl_numeric_arg
- rl_on_new_line
- rl_on_new_line_with_prompt
- rl_outstream
- rl_parse_and_bind
- rl_pending_input
- rl_point
- rl_possible_completions
- rl_pre_input_hook
- rl_prep_term_function
- rl_prep_terminal
- rl_prompt
- rl_push_macro_input
- rl_read_init_file
- rl_read_key
- rl_readline_name
- rl_readline_state
- rl_redisplay
- rl_redisplay_function
- rl_reset_after_signal
- rl_reset_line_state
- rl_reset_terminal
- rl_resize_terminal
- rl_restore_prompt
- rl_save_prompt
- rl_set_key
- rl_set_keyboard_input_timeout
- rl_set_keymap
- rl_set_paren_blink_timeout
- rl_set_prompt
- rl_set_screen_size
- rl_set_signals
- rl_show_char
- rl_special_prefixes
- rl_startup_hook
- rl_stuff_char
- rl_terminal_name
- rl_tty_set_default_bindings
- rl_unbind_command_in_map
- rl_unbind_function_in_map
- rl_unbind_key
- rl_unbind_key_in_map
- rl_username_completion_function
- rl_variable_bind
- rl_variable_dumper
-
-
-
- self-insert (a, b, A, 1, !, ...)
- set-mark (C-@)
- show-all-if-ambiguous
- start-kbd-macro (C-x ()
-
-
-
- tab-insert (M-TAB)
- tilde-expand (M-~)
- transpose-chars (C-t)
- transpose-words (M-t)
-
-
-
- undo (C-_ or C-x C-u)
- universal-argument ()
- unix-line-discard (C-u)
- unix-word-rubout (C-w)
- upcase-word (M-u)
-
-
-
- visible-stats
-
-
-
- yank (C-y)
- yank-last-arg (M-. or M-_)
- yank-nth-arg (M-C-y)
- yank-pop (M-y)
-
-
-
-
- This document was generated on 16 April 2001 using the
- texi2html
- translator version 1.52.
--- 4899,5773 ----
return (1);
}
! |
+
+
+
+
+ Concept Index
+
+ Jump to: | C
+
+ E
+
+ I
+
+ K
+
+ N
+
+ R
+
+ V
+
+ Y
+
+ |
---|
+ Jump to: | C
+
+ E
+
+ I
+
+ K
+
+ N
+
+ R
+
+ V
+
+ Y
+
+ |
---|
+
+
+
+
+
+ Function and Variable Index
+
+ Jump to: | _
+
+
+ A
+
+ B
+
+ C
+
+ D
+
+ E
+
+ F
+
+ H
+
+ I
+
+ K
+
+ M
+
+ N
+
+ O
+
+ P
+
+ Q
+
+ R
+
+ S
+
+ T
+
+ U
+
+ V
+
+ Y
+
+ |
---|
+
+ | Index Entry | Section |
+
|
+ _ | | |
+ | _rl_digit_p | 2.4.10 Utility Functions |
+ | _rl_digit_value | 2.4.10 Utility Functions |
+ | _rl_lowercase_p | 2.4.10 Utility Functions |
+ | _rl_to_lower | 2.4.10 Utility Functions |
+ | _rl_to_upper | 2.4.10 Utility Functions |
+ | _rl_uppercase_p | 2.4.10 Utility Functions |
+
|
+ A | | |
+ | abort (C-g) | 1.4.8 Some Miscellaneous Commands |
+ | abort (C-g) | 1.4.8 Some Miscellaneous Commands |
+ | accept-line (Newline or Return) | 1.4.2 Commands For Manipulating The History |
+ | accept-line (Newline or Return) | 1.4.2 Commands For Manipulating The History |
+
|
+ B | | |
+ | backward-char (C-b) | 1.4.1 Commands For Moving |
+ | backward-char (C-b) | 1.4.1 Commands For Moving |
+ | backward-delete-char (Rubout) | 1.4.3 Commands For Changing Text |
+ | backward-delete-char (Rubout) | 1.4.3 Commands For Changing Text |
+ | backward-kill-line (C-x Rubout) | 1.4.4 Killing And Yanking |
+ | backward-kill-line (C-x Rubout) | 1.4.4 Killing And Yanking |
+ | backward-kill-word (M-DEL) | 1.4.4 Killing And Yanking |
+ | backward-kill-word (M-DEL) | 1.4.4 Killing And Yanking |
+ | backward-word (M-b) | 1.4.1 Commands For Moving |
+ | backward-word (M-b) | 1.4.1 Commands For Moving |
+ | beginning-of-history (M-<) | 1.4.2 Commands For Manipulating The History |
+ | beginning-of-history (M-<) | 1.4.2 Commands For Manipulating The History |
+ | beginning-of-line (C-a) | 1.4.1 Commands For Moving |
+ | beginning-of-line (C-a) | 1.4.1 Commands For Moving |
+ | bell-style | 1.3.1 Readline Init File Syntax |
+
|
+ C | | |
+ | call-last-kbd-macro (C-x e) | 1.4.7 Keyboard Macros |
+ | call-last-kbd-macro (C-x e) | 1.4.7 Keyboard Macros |
+ | capitalize-word (M-c) | 1.4.3 Commands For Changing Text |
+ | capitalize-word (M-c) | 1.4.3 Commands For Changing Text |
+ | character-search (C-]) | 1.4.8 Some Miscellaneous Commands |
+ | character-search (C-]) | 1.4.8 Some Miscellaneous Commands |
+ | character-search-backward (M-C-]) | 1.4.8 Some Miscellaneous Commands |
+ | character-search-backward (M-C-]) | 1.4.8 Some Miscellaneous Commands |
+ | clear-screen (C-l) | 1.4.1 Commands For Moving |
+ | clear-screen (C-l) | 1.4.1 Commands For Moving |
+ | comment-begin | 1.3.1 Readline Init File Syntax |
+ | complete (TAB) | 1.4.6 Letting Readline Type For You |
+ | complete (TAB) | 1.4.6 Letting Readline Type For You |
+ | completion-query-items | 1.3.1 Readline Init File Syntax |
+ | convert-meta | 1.3.1 Readline Init File Syntax |
+ | copy-backward-word () | 1.4.4 Killing And Yanking |
+ | copy-backward-word () | 1.4.4 Killing And Yanking |
+ | copy-forward-word () | 1.4.4 Killing And Yanking |
+ | copy-forward-word () | 1.4.4 Killing And Yanking |
+ | copy-region-as-kill () | 1.4.4 Killing And Yanking |
+ | copy-region-as-kill () | 1.4.4 Killing And Yanking |
+
|
+ D | | |
+ | delete-char (C-d) | 1.4.3 Commands For Changing Text |
+ | delete-char (C-d) | 1.4.3 Commands For Changing Text |
+ | delete-char-or-list () | 1.4.6 Letting Readline Type For You |
+ | delete-char-or-list () | 1.4.6 Letting Readline Type For You |
+ | delete-horizontal-space () | 1.4.4 Killing And Yanking |
+ | delete-horizontal-space () | 1.4.4 Killing And Yanking |
+ | digit-argument (M-0, M-1, <small>...</small> M--) | 1.4.5 Specifying Numeric Arguments |
+ | digit-argument (M-0, M-1, <small>...</small> M--) | 1.4.5 Specifying Numeric Arguments |
+ | disable-completion | 1.3.1 Readline Init File Syntax |
+ | do-uppercase-version (M-a, M-b, M-x, <small>...</small>) | 1.4.8 Some Miscellaneous Commands |
+ | do-uppercase-version (M-a, M-b, M-x, <small>...</small>) | 1.4.8 Some Miscellaneous Commands |
+ | downcase-word (M-l) | 1.4.3 Commands For Changing Text |
+ | downcase-word (M-l) | 1.4.3 Commands For Changing Text |
+ | dump-functions () | 1.4.8 Some Miscellaneous Commands |
+ | dump-functions () | 1.4.8 Some Miscellaneous Commands |
+ | dump-macros () | 1.4.8 Some Miscellaneous Commands |
+ | dump-macros () | 1.4.8 Some Miscellaneous Commands |
+ | dump-variables () | 1.4.8 Some Miscellaneous Commands |
+ | dump-variables () | 1.4.8 Some Miscellaneous Commands |
+
|
+ E | | |
+ | editing-mode | 1.3.1 Readline Init File Syntax |
+ | enable-keypad | 1.3.1 Readline Init File Syntax |
+ | end-kbd-macro (C-x )) | 1.4.7 Keyboard Macros |
+ | end-kbd-macro (C-x )) | 1.4.7 Keyboard Macros |
+ | end-of-history (M->) | 1.4.2 Commands For Manipulating The History |
+ | end-of-history (M->) | 1.4.2 Commands For Manipulating The History |
+ | end-of-line (C-e) | 1.4.1 Commands For Moving |
+ | end-of-line (C-e) | 1.4.1 Commands For Moving |
+ | exchange-point-and-mark (C-x C-x) | 1.4.8 Some Miscellaneous Commands |
+ | exchange-point-and-mark (C-x C-x) | 1.4.8 Some Miscellaneous Commands |
+ | expand-tilde | 1.3.1 Readline Init File Syntax |
+
|
+ F | | |
+ | forward-backward-delete-char () | 1.4.3 Commands For Changing Text |
+ | forward-backward-delete-char () | 1.4.3 Commands For Changing Text |
+ | forward-char (C-f) | 1.4.1 Commands For Moving |
+ | forward-char (C-f) | 1.4.1 Commands For Moving |
+ | forward-search-history (C-s) | 1.4.2 Commands For Manipulating The History |
+ | forward-search-history (C-s) | 1.4.2 Commands For Manipulating The History |
+ | forward-word (M-f) | 1.4.1 Commands For Moving |
+ | forward-word (M-f) | 1.4.1 Commands For Moving |
+
|
+ H | | |
+ | history-preserve-point | 1.3.1 Readline Init File Syntax |
+ | history-search-backward () | 1.4.2 Commands For Manipulating The History |
+ | history-search-backward () | 1.4.2 Commands For Manipulating The History |
+ | history-search-forward () | 1.4.2 Commands For Manipulating The History |
+ | history-search-forward () | 1.4.2 Commands For Manipulating The History |
+ | horizontal-scroll-mode | 1.3.1 Readline Init File Syntax |
+
|
+ I | | |
+ | input-meta | 1.3.1 Readline Init File Syntax |
+ | insert-comment (M-#) | 1.4.8 Some Miscellaneous Commands |
+ | insert-comment (M-#) | 1.4.8 Some Miscellaneous Commands |
+ | insert-completions (M-*) | 1.4.6 Letting Readline Type For You |
+ | insert-completions (M-*) | 1.4.6 Letting Readline Type For You |
+ | isearch-terminators | 1.3.1 Readline Init File Syntax |
+
|
+ K | | |
+ | keymap | 1.3.1 Readline Init File Syntax |
+ | kill-line (C-k) | 1.4.4 Killing And Yanking |
+ | kill-line (C-k) | 1.4.4 Killing And Yanking |
+ | kill-region () | 1.4.4 Killing And Yanking |
+ | kill-region () | 1.4.4 Killing And Yanking |
+ | kill-whole-line () | 1.4.4 Killing And Yanking |
+ | kill-whole-line () | 1.4.4 Killing And Yanking |
+ | kill-word (M-d) | 1.4.4 Killing And Yanking |
+ | kill-word (M-d) | 1.4.4 Killing And Yanking |
+
|
+ M | | |
+ | mark-modified-lines | 1.3.1 Readline Init File Syntax |
+ | match-hidden-files | 1.3.1 Readline Init File Syntax |
+ | menu-complete () | 1.4.6 Letting Readline Type For You |
+ | menu-complete () | 1.4.6 Letting Readline Type For You |
+ | meta-flag | 1.3.1 Readline Init File Syntax |
+
|
+ N | | |
+ | next-history (C-n) | 1.4.2 Commands For Manipulating The History |
+ | next-history (C-n) | 1.4.2 Commands For Manipulating The History |
+ | non-incremental-forward-search-history (M-n) | 1.4.2 Commands For Manipulating The History |
+ | non-incremental-forward-search-history (M-n) | 1.4.2 Commands For Manipulating The History |
+ | non-incremental-reverse-search-history (M-p) | 1.4.2 Commands For Manipulating The History |
+ | non-incremental-reverse-search-history (M-p) | 1.4.2 Commands For Manipulating The History |
+
|
+ O | | |
+ | output-meta | 1.3.1 Readline Init File Syntax |
+
|
+ P | | |
+ | possible-completions (M-?) | 1.4.6 Letting Readline Type For You |
+ | possible-completions (M-?) | 1.4.6 Letting Readline Type For You |
+ | prefix-meta (ESC) | 1.4.8 Some Miscellaneous Commands |
+ | prefix-meta (ESC) | 1.4.8 Some Miscellaneous Commands |
+ | previous-history (C-p) | 1.4.2 Commands For Manipulating The History |
+ | previous-history (C-p) | 1.4.2 Commands For Manipulating The History |
+
|
+ Q | | |
+ | quoted-insert (C-q or C-v) | 1.4.3 Commands For Changing Text |
+ | quoted-insert (C-q or C-v) | 1.4.3 Commands For Changing Text |
+
|
+ R | | |
+ | re-read-init-file (C-x C-r) | 1.4.8 Some Miscellaneous Commands |
+ | re-read-init-file (C-x C-r) | 1.4.8 Some Miscellaneous Commands |
+ | readline | 2.1 Basic Behavior |
+ | redraw-current-line () | 1.4.1 Commands For Moving |
+ | redraw-current-line () | 1.4.1 Commands For Moving |
+ | reverse-search-history (C-r) | 1.4.2 Commands For Manipulating The History |
+ | reverse-search-history (C-r) | 1.4.2 Commands For Manipulating The History |
+ | revert-line (M-r) | 1.4.8 Some Miscellaneous Commands |
+ | revert-line (M-r) | 1.4.8 Some Miscellaneous Commands |
+ | rl_add_defun | 2.4.1 Naming a Function |
+ | rl_add_funmap_entry | 2.4.4 Associating Function Names and Bindings |
+ | rl_add_undo | 2.4.5 Allowing Undoing |
+ | rl_alphabetic | 2.4.10 Utility Functions |
+ | rl_already_prompted | 2.3 Readline Variables |
+ | rl_attempted_completion_function | 2.6.3 Completion Variables |
+ | rl_attempted_completion_over | 2.6.3 Completion Variables |
+ | rl_basic_quote_characters | 2.6.3 Completion Variables |
+ | rl_basic_word_break_characters | 2.6.3 Completion Variables |
+ | rl_begin_undo_group | 2.4.5 Allowing Undoing |
+ | rl_bind_key | 2.4.3 Binding Keys |
+ | rl_bind_key_in_map | 2.4.3 Binding Keys |
+ | rl_binding_keymap | 2.3 Readline Variables |
+ | rl_callback_handler_install | 2.4.12 Alternate Interface |
+ | rl_callback_handler_remove | 2.4.12 Alternate Interface |
+ | rl_callback_read_char | 2.4.12 Alternate Interface |
+ | rl_catch_signals | 2.5 Readline Signal Handling |
+ | rl_catch_sigwinch | 2.5 Readline Signal Handling |
+ | rl_char_is_quoted_p | 2.6.3 Completion Variables |
+ | rl_cleanup_after_signal | 2.5 Readline Signal Handling |
+ | rl_clear_message | 2.4.6 Redisplay |
+ | rl_clear_pending_input | 2.4.8 Character Input |
+ | rl_clear_signals | 2.5 Readline Signal Handling |
+ | rl_complete | 2.6.1 How Completing Works |
+ | rl_complete | 2.6.2 Completion Functions |
+ | rl_complete_internal | 2.6.2 Completion Functions |
+ | rl_completer_quote_characters | 2.6.3 Completion Variables |
+ | rl_completer_word_break_characters | 2.6.3 Completion Variables |
+ | rl_completion_append_character | 2.6.3 Completion Variables |
+ | rl_completion_display_matches_hook | 2.6.3 Completion Variables |
+ | rl_completion_entry_function | 2.6.1 How Completing Works |
+ | rl_completion_entry_function | 2.6.3 Completion Variables |
+ | rl_completion_matches | 2.6.2 Completion Functions |
+ | rl_completion_query_items | 2.6.3 Completion Variables |
+ | rl_completion_type | 2.6.3 Completion Variables |
+ | rl_copy_keymap | 2.4.2 Selecting a Keymap |
+ | rl_copy_text | 2.4.7 Modifying Text |
+ | rl_crlf | 2.4.6 Redisplay |
+ | rl_delete_text | 2.4.7 Modifying Text |
+ | rl_deprep_term_function | 2.3 Readline Variables |
+ | rl_deprep_terminal | 2.4.9 Terminal Management |
+ | rl_ding | 2.4.10 Utility Functions |
+ | rl_directory_completion_hook | 2.6.3 Completion Variables |
+ | rl_discard_keymap | 2.4.2 Selecting a Keymap |
+ | rl_dispatching | 2.3 Readline Variables |
+ | rl_display_match_list | 2.4.10 Utility Functions |
+ | rl_do_undo | 2.4.5 Allowing Undoing |
+ | rl_done | 2.3 Readline Variables |
+ | rl_editing_mode | 2.3 Readline Variables |
+ | rl_end | 2.3 Readline Variables |
+ | rl_end_undo_group | 2.4.5 Allowing Undoing |
+ | rl_erase_empty_line | 2.3 Readline Variables |
+ | rl_event_hook | 2.3 Readline Variables |
+ | rl_execute_next | 2.4.8 Character Input |
+ | rl_executing_keymap | 2.3 Readline Variables |
+ | rl_executing_macro | 2.3 Readline Variables |
+ | rl_expand_prompt | 2.4.6 Redisplay |
+ | rl_explicit_arg | 2.3 Readline Variables |
+ | rl_extend_line_buffer | 2.4.10 Utility Functions |
+ | rl_filename_completion_desired | 2.6.3 Completion Variables |
+ | rl_filename_completion_function | 2.6.2 Completion Functions |
+ | rl_filename_dequoting_function | 2.6.3 Completion Variables |
+ | rl_filename_quote_characters | 2.6.3 Completion Variables |
+ | rl_filename_quoting_desired | 2.6.3 Completion Variables |
+ | rl_filename_quoting_function | 2.6.3 Completion Variables |
+ | rl_forced_update_display | 2.4.6 Redisplay |
+ | rl_free_line_state | 2.5 Readline Signal Handling |
+ | rl_free_undo_list | 2.4.5 Allowing Undoing |
+ | rl_function_dumper | 2.4.4 Associating Function Names and Bindings |
+ | rl_function_of_keyseq | 2.4.4 Associating Function Names and Bindings |
+ | rl_funmap_names | 2.4.4 Associating Function Names and Bindings |
+ | rl_generic_bind | 2.4.3 Binding Keys |
+ | rl_get_keymap | 2.4.2 Selecting a Keymap |
+ | rl_get_keymap_by_name | 2.4.2 Selecting a Keymap |
+ | rl_get_keymap_name | 2.4.2 Selecting a Keymap |
+ | rl_get_screen_size | 2.5 Readline Signal Handling |
+ | rl_get_termcap | 2.4.11 Miscellaneous Functions |
+ | rl_getc | 2.4.8 Character Input |
+ | rl_getc_function | 2.3 Readline Variables |
+ | rl_gnu_readline_p | 2.3 Readline Variables |
+ | rl_ignore_completion_duplicates | 2.6.3 Completion Variables |
+ | rl_ignore_some_completions_function | 2.6.3 Completion Variables |
+ | rl_inhibit_completion | 2.6.3 Completion Variables |
+ | rl_initialize | 2.4.10 Utility Functions |
+ | rl_insert_completions | 2.6.2 Completion Functions |
+ | rl_insert_text | 2.4.7 Modifying Text |
+ | rl_instream | 2.3 Readline Variables |
+ | rl_invoking_keyseqs | 2.4.4 Associating Function Names and Bindings |
+ | rl_invoking_keyseqs_in_map | 2.4.4 Associating Function Names and Bindings |
+ | rl_kill_text | 2.4.7 Modifying Text |
+ | rl_last_func | 2.3 Readline Variables |
+ | rl_library_version | 2.3 Readline Variables |
+ | rl_line_buffer | 2.3 Readline Variables |
+ | rl_list_funmap_names | 2.4.4 Associating Function Names and Bindings |
+ | rl_macro_bind | 2.4.11 Miscellaneous Functions |
+ | rl_macro_dumper | 2.4.11 Miscellaneous Functions |
+ | rl_make_bare_keymap | 2.4.2 Selecting a Keymap |
+ | rl_make_keymap | 2.4.2 Selecting a Keymap |
+ | rl_mark | 2.3 Readline Variables |
+ | rl_message | 2.4.6 Redisplay |
+ | rl_modifying | 2.4.5 Allowing Undoing |
+ | rl_named_function | 2.4.4 Associating Function Names and Bindings |
+ | rl_num_chars_to_read | 2.3 Readline Variables |
+ | rl_numeric_arg | 2.3 Readline Variables |
+ | rl_on_new_line | 2.4.6 Redisplay |
+ | rl_on_new_line_with_prompt | 2.4.6 Redisplay |
+ | rl_outstream | 2.3 Readline Variables |
+ | rl_parse_and_bind | 2.4.3 Binding Keys |
+ | rl_pending_input | 2.3 Readline Variables |
+ | rl_point | 2.3 Readline Variables |
+ | rl_possible_completions | 2.6.2 Completion Functions |
+ | rl_pre_input_hook | 2.3 Readline Variables |
+ | rl_prep_term_function | 2.3 Readline Variables |
+ | rl_prep_terminal | 2.4.9 Terminal Management |
+ | rl_prompt | 2.3 Readline Variables |
+ | rl_push_macro_input | 2.4.7 Modifying Text |
+ | rl_read_init_file | 2.4.3 Binding Keys |
+ | rl_read_key | 2.4.8 Character Input |
+ | rl_readline_name | 2.3 Readline Variables |
+ | rl_readline_state | 2.3 Readline Variables |
+ | rl_readline_version | 2.3 Readline Variables |
+ | rl_redisplay | 2.4.6 Redisplay |
+ | rl_redisplay_function | 2.3 Readline Variables |
+ | rl_reset_after_signal | 2.5 Readline Signal Handling |
+ | rl_reset_line_state | 2.4.6 Redisplay |
+ | rl_reset_terminal | 2.4.9 Terminal Management |
+ | rl_resize_terminal | 2.5 Readline Signal Handling |
+ | rl_restore_prompt | 2.4.6 Redisplay |
+ | rl_save_prompt | 2.4.6 Redisplay |
+ | rl_set_key | 2.4.3 Binding Keys |
+ | rl_set_keyboard_input_timeout | 2.4.8 Character Input |
+ | rl_set_keymap | 2.4.2 Selecting a Keymap |
+ | rl_set_paren_blink_timeout | 2.4.11 Miscellaneous Functions |
+ | rl_set_prompt | 2.4.6 Redisplay |
+ | rl_set_screen_size | 2.5 Readline Signal Handling |
+ | rl_set_signals | 2.5 Readline Signal Handling |
+ | rl_show_char | 2.4.6 Redisplay |
+ | rl_special_prefixes | 2.6.3 Completion Variables |
+ | rl_startup_hook | 2.3 Readline Variables |
+ | rl_stuff_char | 2.4.8 Character Input |
+ | rl_terminal_name | 2.3 Readline Variables |
+ | rl_tty_set_default_bindings | 2.4.9 Terminal Management |
+ | rl_unbind_command_in_map | 2.4.3 Binding Keys |
+ | rl_unbind_function_in_map | 2.4.3 Binding Keys |
+ | rl_unbind_key | 2.4.3 Binding Keys |
+ | rl_unbind_key_in_map | 2.4.3 Binding Keys |
+ | rl_username_completion_function | 2.6.2 Completion Functions |
+ | rl_variable_bind | 2.4.11 Miscellaneous Functions |
+ | rl_variable_dumper | 2.4.11 Miscellaneous Functions |
+
|
+ S | | |
+ | self-insert (a, b, A, 1, !, <small>...</small>) | 1.4.3 Commands For Changing Text |
+ | self-insert (a, b, A, 1, !, <small>...</small>) | 1.4.3 Commands For Changing Text |
+ | set-mark (C-@) | 1.4.8 Some Miscellaneous Commands |
+ | set-mark (C-@) | 1.4.8 Some Miscellaneous Commands |
+ | show-all-if-ambiguous | 1.3.1 Readline Init File Syntax |
+ | start-kbd-macro (C-x () | 1.4.7 Keyboard Macros |
+ | start-kbd-macro (C-x () | 1.4.7 Keyboard Macros |
+
|
+ T | | |
+ | tab-insert (M-TAB) | 1.4.3 Commands For Changing Text |
+ | tab-insert (M-TAB) | 1.4.3 Commands For Changing Text |
+ | tilde-expand (M-~) | 1.4.8 Some Miscellaneous Commands |
+ | tilde-expand (M-~) | 1.4.8 Some Miscellaneous Commands |
+ | transpose-chars (C-t) | 1.4.3 Commands For Changing Text |
+ | transpose-chars (C-t) | 1.4.3 Commands For Changing Text |
+ | transpose-words (M-t) | 1.4.3 Commands For Changing Text |
+ | transpose-words (M-t) | 1.4.3 Commands For Changing Text |
+
|
+ U | | |
+ | undo (C-_ or C-x C-u) | 1.4.8 Some Miscellaneous Commands |
+ | undo (C-_ or C-x C-u) | 1.4.8 Some Miscellaneous Commands |
+ | universal-argument () | 1.4.5 Specifying Numeric Arguments |
+ | universal-argument () | 1.4.5 Specifying Numeric Arguments |
+ | unix-line-discard (C-u) | 1.4.4 Killing And Yanking |
+ | unix-line-discard (C-u) | 1.4.4 Killing And Yanking |
+ | unix-word-rubout (C-w) | 1.4.4 Killing And Yanking |
+ | unix-word-rubout (C-w) | 1.4.4 Killing And Yanking |
+ | upcase-word (M-u) | 1.4.3 Commands For Changing Text |
+ | upcase-word (M-u) | 1.4.3 Commands For Changing Text |
+
|
+ V | | |
+ | visible-stats | 1.3.1 Readline Init File Syntax |
+
|
+ Y | | |
+ | yank (C-y) | 1.4.4 Killing And Yanking |
+ | yank (C-y) | 1.4.4 Killing And Yanking |
+ | yank-last-arg (M-. or M-_) | 1.4.2 Commands For Manipulating The History |
+ | yank-last-arg (M-. or M-_) | 1.4.2 Commands For Manipulating The History |
+ | yank-nth-arg (M-C-y) | 1.4.2 Commands For Manipulating The History |
+ | yank-nth-arg (M-C-y) | 1.4.2 Commands For Manipulating The History |
+ | yank-pop (M-y) | 1.4.4 Killing And Yanking |
+ | yank-pop (M-y) | 1.4.4 Killing And Yanking |
+
|
+
Jump to: | _
+
+
+ A
+
+ B
+
+ C
+
+ D
+
+ E
+
+ F
+
+ H
+
+ I
+
+ K
+
+ M
+
+ N
+
+ O
+
+ P
+
+ Q
+
+ R
+
+ S
+
+ T
+
+ U
+
+ V
+
+ Y
+
+ |
---|
+
+
+
+
+ Table of Contents
+
+
+
+
+ Short Table of Contents
+
+ 1. Command Line Editing
+
+ 2. Programming with GNU Readline
+
+ Concept Index
+
+ Function and Variable Index
+
+
+
+
+
+
+ About this document
+ This document was generated by Chet Ramey on October, 9 2001
+ using texi2html
+
+ The buttons in the navigation panels have the following meaning:
+
+
+
+ Button |
+ Name |
+ Go to |
+ From 1.2.3 go to |
+
+
+
+ [ < ] |
+
+ Back
+ |
+
+ previous section in reading order
+ |
+
+ 1.2.2
+ |
+
+
+
+ [ > ] |
+
+ Forward
+ |
+
+ next section in reading order
+ |
+
+ 1.2.4
+ |
+
+
+
+ [ << ] |
+
+ FastBack
+ |
+
+ previous or up-and-previous section
+ |
+
+ 1.1
+ |
+
+
+
+ [ Up ] |
+
+ Up
+ |
+
+ up section
+ |
+
+ 1.2
+ |
+
+
+
+ [ >> ] |
+
+ FastForward
+ |
+
+ next or up-and-next section
+ |
+
+ 1.3
+ |
+
+
+
+ [Top] |
+
+ Top
+ |
+
+ cover (top) of document
+ |
+
+
+ |
+
+
+
+ [Contents] |
+
+ Contents
+ |
+
+ table of contents
+ |
+
+
+ |
+
+
+
+ [Index] |
+
+ Index
+ |
+
+ concept index
+ |
+
+
+ |
+
+
+
+ [ ? ] |
+
+ About
+ |
+
+ this page
+ |
+
+
+ |
+
+
+
+ where the Example assumes that the current position
+ is at Subsubsection One-Two-Three of a document of
+ the following structure:
+
+ - 1. Section One
+
+ - 1.1 Subsection One-One
+
+ - 1.2 Subsection One-Two
+
+ - 1.2.1 Subsubsection One-Two-One
+
- 1.2.2 Subsubsection One-Two-Two
+
- 1.2.3 Subsubsection One-Two-Three
+ <== Current Position
+
- 1.2.4 Subsubsection One-Two-Four
+
+ - 1.3 Subsection One-Three
+
+ - 1.4 Subsection One-Four
+
+
+
+
+
+ This document was generated
+ by Chet Ramey on October, 9 2001
+ using texi2html
diff -Nrc2 readline-4.2/doc/readline.info readline-4.2a/doc/readline.info
*** readline-4.2/doc/readline.info Mon Apr 16 11:05:39 2001
--- readline-4.2a/doc/readline.info Tue Oct 9 15:08:02 2001
***************
*** 237,241 ****
`M-'
! Kill from the cursor the start of the previous word, or, if between
words, to the start of the previous word. Word boundaries are the
same as those used by `M-b'.
--- 237,241 ----
`M-'
! 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'.
***************
*** 310,313 ****
--- 310,317 ----
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
***************
*** 424,427 ****
--- 428,435 ----
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
***************
*** 463,466 ****
--- 471,481 ----
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
***************
*** 583,593 ****
`\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
(one to three 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
--- 598,608 ----
`\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
***************
*** 933,937 ****
`transpose-words (M-t)'
Drag the word before point past the word after point, moving point
! past that word as well.
`upcase-word (M-u)'
--- 948,953 ----
`transpose-words (M-t)'
Drag the word before point past the word after point, moving point
! past that word as well. If the insertion point is at the end of
! the line, this transposes the last two words on the line.
`upcase-word (M-u)'
***************
*** 1333,1336 ****
--- 1349,1361 ----
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:
***************
*** 1499,1502 ****
--- 1524,1534 ----
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
***************
*** 2196,2199 ****
--- 2228,2239 ----
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.
+
File: readline.info, Node: Alternate Interface, Next: A Readline Example, Prev: Miscellaneous Functions, Up: Readline Convenience Functions
***************
*** 3251,3254 ****
--- 3291,3295 ----
* 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.
***************
*** 3264,3267 ****
--- 3305,3309 ----
* 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.
***************
*** 3355,3358 ****
--- 3397,3401 ----
* 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.
***************
*** 3398,3401 ****
--- 3441,3445 ----
* rl_readline_name: Readline Variables.
* rl_readline_state: Readline Variables.
+ * rl_readline_version: Readline Variables.
* rl_redisplay: Redisplay.
* rl_redisplay_function: Readline Variables.
***************
*** 3453,3500 ****
Node: Readline Movement Commands7000
Node: Readline Killing Commands7957
! Node: Readline Arguments9867
! Node: Searching10903
! Node: Readline Init File12859
! Node: Readline Init File Syntax13920
! Node: Conditional Init Constructs23842
! Node: Sample Init File26367
! Node: Bindable Readline Commands29537
! Node: Commands For Moving30587
! Node: Commands For History31436
! Node: Commands For Text34294
! Node: Commands For Killing36281
! Node: Numeric Arguments38232
! Node: Commands For Completion39360
! Node: Keyboard Macros40892
! Node: Miscellaneous Commands41451
! Node: Readline vi Mode44244
! Node: Programming with GNU Readline46062
! Node: Basic Behavior47030
! Node: Custom Functions50443
! Node: Readline Typedefs51421
! Node: Function Writing53050
! Node: Readline Variables54134
! Node: Readline Convenience Functions63133
! Node: Function Naming64115
! Node: Keymaps65367
! Node: Binding Keys67123
! Node: Associating Function Names and Bindings70049
! Node: Allowing Undoing72294
! Node: Redisplay74829
! Node: Modifying Text77900
! Node: Character Input79033
! Node: Terminal Management80678
! Node: Utility Functions81853
! Node: Miscellaneous Functions83920
! Node: Alternate Interface85512
! Node: A Readline Example87135
! Node: Readline Signal Handling89072
! Node: Custom Completers94675
! Node: How Completing Works95390
! Node: Completion Functions98388
! Node: Completion Variables101392
! Node: A Short Completion Example110763
! Node: Concept Index123288
! Node: Function and Variable Index124110
End Tag Table
--- 3497,3544 ----
Node: Readline Movement Commands7000
Node: Readline Killing Commands7957
! Node: Readline Arguments9866
! Node: Searching10902
! Node: Readline Init File13045
! Node: Readline Init File Syntax14106
! Node: Conditional Init Constructs24556
! Node: Sample Init File27081
! Node: Bindable Readline Commands30251
! Node: Commands For Moving31301
! Node: Commands For History32150
! Node: Commands For Text35008
! Node: Commands For Killing37099
! Node: Numeric Arguments39050
! Node: Commands For Completion40178
! Node: Keyboard Macros41710
! Node: Miscellaneous Commands42269
! Node: Readline vi Mode45062
! Node: Programming with GNU Readline46880
! Node: Basic Behavior47848
! Node: Custom Functions51261
! Node: Readline Typedefs52739
! Node: Function Writing54368
! Node: Readline Variables55452
! Node: Readline Convenience Functions64784
! Node: Function Naming65766
! Node: Keymaps67018
! Node: Binding Keys68774
! Node: Associating Function Names and Bindings71700
! Node: Allowing Undoing73945
! Node: Redisplay76480
! Node: Modifying Text79551
! Node: Character Input80684
! Node: Terminal Management82329
! Node: Utility Functions83504
! Node: Miscellaneous Functions85571
! Node: Alternate Interface87635
! Node: A Readline Example89258
! Node: Readline Signal Handling91195
! Node: Custom Completers96798
! Node: How Completing Works97513
! Node: Completion Functions100511
! Node: Completion Variables103515
! Node: A Short Completion Example112886
! Node: Concept Index125411
! Node: Function and Variable Index126233
End Tag Table
diff -Nrc2 readline-4.2/doc/readline.ps readline-4.2a/doc/readline.ps
*** readline-4.2/doc/readline.ps Mon Apr 16 11:05:46 2001
--- readline-4.2a/doc/readline.ps Tue Oct 9 15:08:12 2001
***************
*** 2,6 ****
%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
%%Title: readline.dvi
! %%Pages: 62
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
--- 2,6 ----
%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
%%Title: readline.dvi
! %%Pages: 64
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
***************
*** 9,13 ****
%DVIPSCommandLine: dvips -D 300 -t letter -o readline.ps readline.dvi
%DVIPSParameters: dpi=300, compressed
! %DVIPSSource: TeX output 2001.04.16:1105
%%BeginProcSet: texc.pro
%!
--- 9,13 ----
%DVIPSCommandLine: dvips -D 300 -t letter -o readline.ps readline.dvi
%DVIPSParameters: dpi=300, compressed
! %DVIPSSource: TeX output 2001.10.09:1508
%%BeginProcSet: texc.pro
%!
***************
*** 390,395 ****
>I E
%EndDVIPSBitmapFont
! %DVIPSBitmapFont: Fk cmsl10 10.95 46
! /Fk 46 122 df12
DI E
%EndDVIPSBitmapFont
! %DVIPSBitmapFont: Fk cmsl10 10.95 48
! /Fk 48 122 df12
DI<0007B512F83900F800780178133815185B1508A53901E00800A314181438EBFFF8
! 3803C0301410A491C7FC485AA648C8FC7FEAFFFC1D1F7E9E1E>I<3807FF803800F80013
! 78A25BA6485AA6485AA6485AA648C7FC7FEAFFF0111F7E9E10>73
! D<3A07FF803FE03A00F8001F000178130C5D4913205D5D4AC7FC1402140848485A5C1460
! 14F013E1EBE4F83803C878EBD07CEBE03CEBC03E141E141F48487E81140781140381380F
! 00016D487E39FFF00FFE231F7E9E23>75 D<3807FFE0D800FCC7FC1378A25BA6485AA648
! 5AA41580EC0100EA0780A25C14021406140E380F001E147CB512FC191F7E9E1C>I78 DI<
! 0007B5FC3900F803C090387800F015785B157CA41578484813F815F0EC01E0EC03C0EC0F
! 00EBFFFCD803C0C7FCA6485AA648C8FC7FEAFFF81E1F7E9E1F>I<3807FFFE3900F80780
! 90387801E0EC00F05B15F8A415F03801E00115E0EC03C0EC0780EC1E00EBFFF03803C038
! 80141E140EA2140F48485AA51501D80F0013029038800F8239FFF8078CC7EA01F020207E
! 9E22>82 DI<003FB512F0383C07800030
! 1430126039400F0010A212C01280A3D8001E1300A65BA65BA65B7F383FFFE01C1F7A9E21
! >I<39FFF00FF8391F0003E06CEB01801400001EEB0100A6481302A6485BA600705BA25C
! A200785B1238001813C06C48C7FCEA0706EA01F81D20799E22>I<3BFFF07FF81FF03B1F
! 000FC007C0001E903907800380001FED01006C1502140F5EEC17C002135B142301805C00
! 0713435E14C3913883E0401481D981015B13C1D803C213E193C7FC13C415F2EBC80015F4
! EA01F015F85B5D5B15605B000014402C207A9E2F>87 D97 D<1207123F120F7EA2120EA65A137CEA1D83381E0180001C13C0EB00E05A14
! F0A5387001E0A214C013031480EB0700EAE80EEACC38EA83E014207B9F19>I<13FEEA03
! 83380E0780121C0038130090C7FC12785AA45AA37E5BEA70026C5AEA1C18EA07E011147D
! 9314>I<1438EB01F8EB00781438A21470A614E013FCEA0382EA0601121CEA3C00383801
! C0127812F0A438E00380A412F0EA700738380F00381C37803807C7E015207D9F19>I<13
! F8EA070EEA0E07381C038012381278127012F0B5FC00F0C7FCA25AA46C5AEA7002EA3004
! EA1C18EA07E011147D9314>II<140EEB3E11EBE1A33801
! C1C2380381E0EA07801301120FA3380703C01480EB8700EA04FC48C7FCA21218121CEA0F
! FF14C014E0381800F04813305A5AA3006013606C13C0381C0700EA07FC181F809417>I<
! 13E0120712011200A2485AA6485AEB8F80EB90E013A0EBC0601380000713E01300A5380E
! 01C0A6381C0380001E13C038FF8FF014207E9F19>II<13E0120712
! 011200A2485AA6485AEB81FCEB80F014C0EB81801400EA07045B13181338137C131C120E
! 7FA2130F7F1480EA1C03381E07C038FF8FF016207E9F18>107 D<13E0120712011200A2
! EA01C0A6EA0380A6EA0700A6120EA65A121EEAFF800B207F9F0C>I<390387C07C391F98
! 61863907A072073903C03403EB80380007EB7807EB0070A5000EEBE00EA64848485A001E
! EBE01E3AFFCFFCFFC022147E9326>I<38038F80381F90E0EA07A03803C0601380000713
! E01300A5380E01C0A6381C0380001E13C038FF8FF014147E9319>I<13FCEA0387380E01
! 80381C00C04813E0A24813F012F0A438E001E0A214C0130300F0138038700700EA380E6C
! 5AEA07E014147D9317>IIII<
! 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
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fl cmti10 10.95 20
--- 410,479 ----
EBE0383803C010A4EC00081510485AA21520A2156015C0380F00011407B612801E1F7E9E
1F>I<0007B512F83900F800780178133815185B1508A53901E00800A314181438EBFFF8
! 3803C0301410A491C7FC485AA648C8FC7FEAFFFC1D1F7E9E1E>I<3A07FF83FFC03A00F8
! 007C000178133CA2495BA648485BA490B5FCEBE0004848485AA64848485AA64848485A01
! 807F39FFF07FF8221F7E9E22>72 D<3807FF803800F8001378A25BA6485AA6485AA6485A
! A648C7FC7FEAFFF0111F7E9E10>I<3A07FF803FE03A00F8001F000178130C5D4913205D
! 5D4AC7FC1402140848485A5C146014F013E1EBE4F83803C878EBD07CEBE03CEBC03E141E
! 141F48487E81140781140381380F00016D487E39FFF00FFE231F7E9E23>75
! D<3807FFE0D800FCC7FC1378A25BA6485AA6485AA41580EC0100EA0780A25C1402140614
! 0E380F001E147CB512FC191F7E9E1C>IIII<0007B5FC3900F803C090387800F015785B157CA41578484813F815F0EC
! 01E0EC03C0EC0F00EBFFFCD803C0C7FCA6485AA648C8FC7FEAFFF81E1F7E9E1F>I<3807
! FFFE3900F8078090387801E0EC00F05B15F8A415F03801E00115E0EC03C0EC0780EC1E00
! EBFFF03803C03880141E140EA2140F48485AA51501D80F0013029038800F8239FFF8078C
! C7EA01F020207E9E22>82 DI<003FB512
! F0383C078000301430126039400F0010A212C01280A3D8001E1300A65BA65BA65B7F383F
! FFE01C1F7A9E21>I<39FFF00FF8391F0003E06CEB01801400001EEB0100A6481302A648
! 5BA600705BA25CA200785B1238001813C06C48C7FCEA0706EA01F81D20799E22>I<3BFF
! F07FF81FF03B1F000FC007C0001E903907800380001FED01006C1502140F5EEC17C00213
! 5B142301805C000713435E14C3913883E0401481D981015B13C1D803C213E193C7FC13C4
! 15F2EBC80015F4EA01F015F85B5D5B15605B000014402C207A9E2F>87
! D97 D<1207123F120F7EA2120EA65A137CEA1D
! 83381E0180001C13C0EB00E05A14F0A5387001E0A214C013031480EB0700EAE80EEACC38
! EA83E014207B9F19>I<13FEEA0383380E0780121C0038130090C7FC12785AA45AA37E5B
! EA70026C5AEA1C18EA07E011147D9314>I<1438EB01F8EB00781438A21470A614E013FC
! EA0382EA0601121CEA3C00383801C0127812F0A438E00380A412F0EA700738380F00381C
! 37803807C7E015207D9F19>I<13F8EA070EEA0E07381C038012381278127012F0B5FC00
! F0C7FCA25AA46C5AEA7002EA3004EA1C18EA07E011147D9314>II<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>IIIII<
! 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
***************
*** 706,711 ****
D900FEC7FC272B7DA02E>13 D E
%EndDVIPSBitmapFont
! %DVIPSBitmapFont: Fs cmbx12 14.4 54
! /Fs 54 122 df<123C127FEAFF80A213C0A3127F123E1200A2EA0180A3EA0300A2120612
0E5A5A12100A157B8813>44 D<121C127FA2EAFF80A3EA7F00A2121C09097B8813>46
D<130E131E137EEA07FE12FFA212F81200B3ABB512FEA317277BA622>49
--- 710,715 ----
D900FEC7FC272B7DA02E>13 D E
%EndDVIPSBitmapFont
! %DVIPSBitmapFont: Fs cmbx12 14.4 55
! /Fs 55 122 df<123C127FEAFF80A213C0A3127F123E1200A2EA0180A3EA0300A2120612
0E5A5A12100A157B8813>44 D<121C127FA2EAFF80A3EA7F00A2121C09097B8813>46
D<130E131E137EEA07FE12FFA212F81200B3ABB512FEA317277BA622>49
***************
*** 723,787 ****
8091C7FC127EA3EAFE02EB1FF0EB3FFCEB603EEB801F00FF14809038000FC0A24814E0A4
127EA4123E003F14C07EEC1F80D80F8013003807E07E6CB45A6C5B38003FC01B277DA622
! >I
! 57 D65 DI<91387FE003903907FFFC07011FEBFF0F90397FF0
! 0F9F9039FF0001FFD801FC7F4848147F4848143F4848141F485A160F485A1607127FA290
! C9FC5AA97E7F1607123FA26C7E160E6C7E6C6C141C6C6C143C6C6C14786CB4EB01F09039
! 7FF007C0011FB512800107EBFE009038007FF028297CA831>IIII<91387F
! E003903907FFFC07011FEBFF0F90397FF00F9F9039FF0001FFD801FC7F48488048488048
! 4880485A82485A82127FA290CAFC5AA892B512F87E7F03001300123FA26C7EA26C7E6C7E
! 6C7E6C7E6CB45B90387FF007011FB5129F0107EBFE0F9039007FF0032D297CA835>III75 DII
! III<
! ECFFC0010F13FC90383FC0FF9039FE001FC048486D7ED803F0EB03F000078148486D7E48
! 486D7EA24848147FA2007F1680A290C8123FA24816C0AA6C16806D147FA2003F1600A26C
! 6C14FE143E3A0FE07F81FC00079038C1C1F83A03F18063F0D801F9EB67E0D800FFEB3FC0
! 90263FC07FC7FC90380FFFFC01004913C0EC003C811601ED1F8316FF6F1380A21700816F
! 5A6F5A6F5A2A357CA833>II<9038FF80600003EBF0E0
! 000F13F8381F80FD383F001F003E1307481303A200FC1301A214007EA26C140013C0EA7F
! FCEBFFE06C13F86C13FE80000714806C14C0C6FC010F13E0EB007FEC1FF0140F140700E0
! 1303A46C14E0A26C13076C14C0B4EB0F80EBE03F39E3FFFE0000E15B38C01FF01C297CA8
! 25>I<007FB71280A39039807F807FD87C00140F00781507A20070150300F016C0A24815
! 01A5C791C7FCB3A490B612C0A32A287EA72F>IIII89
D<3803FF80000F13F0381F01FC383F80FE147F801580EA1F00C7FCA4EB3FFF3801FC3FEA
0FE0EA1F80EA3F00127E5AA4145F007E13DF393F839FFC381FFE0F3803FC031E1B7E9A21
--- 727,793 ----
8091C7FC127EA3EAFE02EB1FF0EB3FFCEB603EEB801F00FF14809038000FC0A24814E0A4
127EA4123E003F14C07EEC1F80D80F8013003807E07E6CB45A6C5B38003FC01B277DA622
! >I<1238123E003FB512F0A34814E015C0158015003870000EA25C485B5C5CC6485AA249
! 5A130791C7FC5B5B131E133EA2137E137CA213FCA41201A76C5A13701C297CA822>I57
! D65 DI<91387FE003903907FFFC07011FEBFF0F90397FF00F9F
! 9039FF0001FFD801FC7F4848147F4848143F4848141F485A160F485A1607127FA290C9FC
! 5AA97E7F1607123FA26C7E160E6C7E6C6C141C6C6C143C6C6C14786CB4EB01F090397FF0
! 07C0011FB512800107EBFE009038007FF028297CA831>IIII<91387FE003
! 903907FFFC07011FEBFF0F90397FF00F9F9039FF0001FFD801FC7F484880484880484880
! 485A82485A82127FA290CAFC5AA892B512F87E7F03001300123FA26C7EA26C7E6C7E6C7E
! 6C7E6CB45B90387FF007011FB5129F0107EBFE0F9039007FF0032D297CA835>II<
! B512F0A33803FC00B3B1B512F0A314297EA819>I75 DIII<
! ECFFC0010F13FC90383F807F9039FE001FC0D801F8EB07E048486D7E48486D7E000F8148
! 486D7EA24848147FA2007F168090C8123FA34816C0AA6C16806D147FA2003F1600A26C6C
! 14FEA26C6C495A6C6C495A6C6C495A6C6C495A6C6C495A90263FC0FFC7FC90380FFFFC01
! 0013C02A297CA833>IIII<9038FF80600003EBF0E000
! 0F13F8381F80FD383F001F003E1307481303A200FC1301A214007EA26C140013C0EA7FFC
! EBFFE06C13F86C13FE80000714806C14C0C6FC010F13E0EB007FEC1FF0140F140700E013
! 03A46C14E0A26C13076C14C0B4EB0F80EBE03F39E3FFFE0000E15B38C01FF01C297CA825
! >I<007FB71280A39039807F807FD87C00140F00781507A20070150300F016C0A2481501
! A5C791C7FCB3A490B612C0A32A287EA72F>IIII89
D<3803FF80000F13F0381F01FC383F80FE147F801580EA1F00C7FCA4EB3FFF3801FC3FEA
0FE0EA1F80EA3F00127E5AA4145F007E13DF393F839FFC381FFE0F3803FC031E1B7E9A21
***************
*** 1125,1131 ****
%%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
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
--- 1131,1137 ----
%%Page: 1 1
1 0 bop 75 659 a Fv(GNU)33 b(Readline)h(Library)p 75
! 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
***************
*** 1361,1370 ****
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
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
--- 1367,1376 ----
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)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
***************
*** 1434,1441 ****
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
(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
(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
--- 1440,1447 ----
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 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
! 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
***************
*** 1444,1789 ****
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
(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
(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
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
%%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
(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
(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
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
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
(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
(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
(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
(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
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)
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
(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
(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
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
(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
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
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
(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
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
(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
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
(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
%%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
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)
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
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
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
(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
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
(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
(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
(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)
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
(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
%%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
(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
(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
(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
(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
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
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
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
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
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
(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
(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
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
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
%%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
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
(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)
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
(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)
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
(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
(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
(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
(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
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
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
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
(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
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
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
(\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
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
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.)
p eop
%%Page: 10 12
--- 1450,1811 ----
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
! 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 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 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 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)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
! 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 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
! 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 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
! 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 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 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
! 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 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
! 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
! 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
! 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 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
! 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 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 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
! 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 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 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 2493 y(w)o(ord)g
(completion.)21 b(The)15 b(default)h(is)f(`)p Ft(off)p
! 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(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 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
! 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
! 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 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
! 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
! 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
! 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 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 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
! 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
! 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 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
! 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
! 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
! 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 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 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 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 1997
y Ft(")p Fk(k)o(eyseq)q Ft(")p Fu(:)k Fk(function-name)e
! 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 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
! 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 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 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 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(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 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 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 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
! 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 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 2476 y(the)e(result)h
(of)f(tests.)k(There)c(are)g(four)g(parser)g(directiv)o(es)h(used.)75
! 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 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
! 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 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
! 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 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
! 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 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 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
! 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 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 2027 y(and)f(conditional)i(syn)o(tax.)
p eop
%%Page: 10 12
***************
*** 1963,2008 ****
(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
(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
(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
(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
(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
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
(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
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
(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)
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
(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
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
--- 1985,2033 ----
(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 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
! 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
! 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
! 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 959
y(sequences)f(lik)o(e)h Fo(C-q)p Fu(,)d(for)h(example.)75
! 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
! 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 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 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 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
! 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
***************
*** 2294,4026 ****
(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)
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
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
(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
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
(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
(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
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
(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
(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
(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
(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
(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
(de,)h(an)f(application)i(writer)d(should)i(include)h(the)e(\014le)75
! 2041 y Ft()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
Ft(stdio)f Fu(library)l(,)h(the)g(\014le)g Ft()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)
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
%%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
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
(**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
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
(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
(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
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
(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
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
(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
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
(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
(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
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)
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)
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
(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
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)
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
(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
(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
(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
%%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
(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
(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
(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
(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
(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
%%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
(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
(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
(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
(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
(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
(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
(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
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
(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)
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
(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
(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
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
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
%%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
(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
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
(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)
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
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
(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
(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
(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
%%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
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
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
(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
(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
(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
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
(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
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
(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
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
(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
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
(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,)
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
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
(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
%%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
(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
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
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
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
(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
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
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
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
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
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
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
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
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
%%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
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
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
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
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
(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
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
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
(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
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
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)
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
(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
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
%%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
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)
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
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
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
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
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
(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)
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
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
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
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
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
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
(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
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
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
(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
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
(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
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
(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
(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
(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
(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)
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
(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)
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
%%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
(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)
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
(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
(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
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
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
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
(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
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
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
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
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
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
(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
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
%%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
(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
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
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
(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
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
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
%%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
(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
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
(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)
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
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
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
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
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
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
(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
(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
%%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
(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
(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
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
(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)
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
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)
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
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
(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
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
(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
(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
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
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
(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
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
(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
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
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
(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
(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
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
(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
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
(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
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
%%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
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
(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
(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
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
(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
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,)
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
(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
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
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
(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
(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
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
(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
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\(\))
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
(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
(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
(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
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
(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
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
(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
(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)
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
(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
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
(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
(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
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
(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
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
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
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
(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
(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
(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
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
(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
(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
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
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
(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
(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
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
(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
(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
(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
(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
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
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(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
(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)
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)
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)
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
b(simple)f(matc)o(hing)e(selection)i(algorithm)f(\(see)f
! Ft(rl_completion_matches\(\))p Fu(\).)33 b(The)195 1485
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
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)
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
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
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
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
(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
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
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
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
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
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
(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
(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)
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
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
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
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
(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
(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
(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
(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
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
(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
(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
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
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
(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
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
(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
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
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
(\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
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
%%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
(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
(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
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
(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
(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
(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
(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
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
(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
(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)
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)
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
(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
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
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
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
(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
(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
(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()195 409 y(#include)g()195
- 461 y(#include)g()195 513 y(#include)g()195
- 565 y(#include)g()195 668 y(#include)g
- ()195 720 y(#include)g()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
%%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
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
--- 2319,4087 ----
(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 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 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 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 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 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
! 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 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 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
! (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 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 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 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
! 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
! 2012 y Ft()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 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()f
! 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.)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(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 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
! 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
! 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 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 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 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 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)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
! 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 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 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.)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 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 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 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 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
! 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
! 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
! 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
! 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
! 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(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 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 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 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 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 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_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 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
! 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 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 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 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 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 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(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 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 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
! 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 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 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
! 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_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 971 y Ft(RL_STATE_DISPATCHING)435 1026
y Fu(Readline)g(is)g(dispatc)o(hing)h(to)d(a)h(command.)195
! 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
! 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 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
! 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 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
! 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 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(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
! 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 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 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 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
! 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
! 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 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 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 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 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
! 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 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 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
! 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 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
! 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(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 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 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 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 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 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 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 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 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 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 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 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 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(.)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(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
! 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 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
! 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
! 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 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 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 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
! 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
! 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
! 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 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 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(.)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(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 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 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 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 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 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
! 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 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 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 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 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 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(.)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(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
! 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 795 y
Fk(start)d Fu(to)g Fk(end)p Fu(,)g(and)g(encompasses)h
! 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
! 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 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 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
! 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 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
! 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 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 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 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 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 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 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(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 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 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 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 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
! 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
! 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
! 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
! 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 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 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 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 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 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
! 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.)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(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 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
! 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 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
! 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 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 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)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
! 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
! 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 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
! 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
! 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
! 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 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
! 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 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 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
! 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(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 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 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 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
! 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 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
! 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
! 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 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
! 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 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 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 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
! 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)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 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 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 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 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 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 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
! 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 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 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 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 2255 y Ft(/*)24
b(Invert)f(the)g(case)g(of)h(the)f(COUNT)h(following)e(characters.)h
! (*/)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(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 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 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 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
! 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 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 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 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 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 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
! 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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.)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
! 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
! 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 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
! 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
! 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 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
! 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(.)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 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 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 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
! 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
! 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 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 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
! 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
! 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
! 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 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 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 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
! 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 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
! 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 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 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 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 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 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 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 2378
y(default)16 b(is)f(to)g(do)g(\014lename)h(completion.)1773
! 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 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 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 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 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 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 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 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 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 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 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
! 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
! 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
! 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 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 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 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
! 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 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
! 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 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 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 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 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 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 1608
y(complete)h(shell)h(v)m(ariables)f(and)g(hostnames.)1773
! 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 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
! 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 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 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
! 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
! 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
! 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(\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 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 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
! 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
! 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
! 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
! 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
! 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 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 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 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 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 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 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 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 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
! 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
! 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 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: 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 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()195
! 409 y(#include)g()195 461 y(#include)g()195
! 513 y(#include)g()195 565 y(#include)g()195
! 668 y(#include)g()195 720 y(#include)g
! ()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)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
***************
*** 4041,4060 ****
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
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
--- 4102,4120 ----
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: 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
***************
*** 4073,4081 ****
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
(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
--- 4133,4141 ----
2640 y(/*)i(Allow)g(conditional)g(parsing)g(of)g(the)h(~/.inputrc)e
(file.)h(*/)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(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
***************
*** 4111,4119 ****
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
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
--- 4171,4179 ----
338 2536 y(len)h(=)f(strlen)g(\(text\);)290 2588 y(})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(/*)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
***************
*** 4139,4155 ****
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
(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
--- 4199,4216 ----
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: 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
***************
*** 4166,4183 ****
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
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
--- 4227,4244 ----
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: 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
***************
*** 4189,4218 ****
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
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(.)
--- 4250,4282 ----
243 2640 y(s)g(=)h(getcwd)f(\(dir,)g(sizeof\(dir\))g(-)g(1\);)p
eop
%%Page: 53 55
! 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(.)
***************
*** 4244,4253 ****
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
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
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(.)
--- 4308,4317 ----
g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)17
b Ff(2)p eop
! %%Page: 56 58
! 56 57 bop 75 -58 a Fu(56)1299 b(GNU)15 b(Readline)h(Library)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 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(.)
***************
*** 4257,4261 ****
(.)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
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(.)
--- 4321,4325 ----
(.)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(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(.)
***************
*** 4265,4269 ****
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
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
--- 4329,4333 ----
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(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
***************
*** 4290,4294 ****
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)
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
--- 4354,4358 ----
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(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
***************
*** 4346,4417 ****
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
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
(.)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
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
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
(.)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)
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
(.)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
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
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
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
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
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
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(.)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
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(\(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
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
(.)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
(.)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
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
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
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)
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
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
--- 4410,4486 ----
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 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 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 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 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 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 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 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 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 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 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 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 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 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(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 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 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 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
! 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 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 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 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 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 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
! 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
***************
*** 4464,4477 ****
(.)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
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 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
(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
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
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
--- 4533,4546 ----
(.)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(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(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(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(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(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
***************
*** 4504,4521 ****
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
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
(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
(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
(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
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
--- 4573,4590 ----
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(.)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(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(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(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(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
***************
*** 4524,4539 ****
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
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
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
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
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
--- 4593,4608 ----
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(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(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(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(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
***************
*** 4564,4573 ****
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
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
(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
--- 4633,4642 ----
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(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(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
***************
*** 4581,4585 ****
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
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
--- 4650,4654 ----
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(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
***************
*** 4594,4598 ****
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
(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
--- 4663,4667 ----
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(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
***************
*** 4600,4604 ****
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
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(.)
--- 4669,4673 ----
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(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(.)
***************
*** 4608,4612 ****
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
(.)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
--- 4677,4681 ----
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(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
***************
*** 4622,4850 ****
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
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
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
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
(.)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
(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)
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
(.)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
(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
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
(.)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
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 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)
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
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
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(.)
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
(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
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
(.)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
(.)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
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
(.)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
(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)
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(.)
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
(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
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
(.)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
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
(.)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
(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
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 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
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(.)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)
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
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
(.)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
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
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(.)
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
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
(.)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
(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
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(.)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
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
(.)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
(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
(.)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
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
(.)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
(_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
(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
(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
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
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
(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
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
(.)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
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
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 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
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
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
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
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
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
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
(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
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
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
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
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 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
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
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
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
eop
! %%Page: -1 61
! -1 60 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
--- 4691,4925 ----
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_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 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
! 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 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 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 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 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 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(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 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 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 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 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 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 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 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 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 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(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 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 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 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 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 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 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 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 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 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 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
! 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 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 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(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 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(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(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 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 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 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 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 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 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)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 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 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 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 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 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 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
! 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 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 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 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 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 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 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(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(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 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
! 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 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 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 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(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 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 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 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 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 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 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
! 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 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 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
! 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(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 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 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 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: 60 62
! 60 61 bop 75 -58 a Fu(60)1299 b(GNU)15 b(Readline)h(Library)p
eop
! %%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
***************
*** 4947,4951 ****
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
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(.)
--- 5022,5026 ----
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(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(.)
***************
*** 4959,4986 ****
(.)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
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
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
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
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
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
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
(.)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
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
%%Trailer
end
--- 5034,5061 ----
(.)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 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(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(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(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(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(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(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(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(57)p eop
%%Trailer
end
diff -Nrc2 readline-4.2/doc/readline_3.ps readline-4.2a/doc/readline_3.ps
*** readline-4.2/doc/readline_3.ps Mon Mar 5 14:37:30 2001
--- readline-4.2a/doc/readline_3.ps Tue Oct 9 15:08:13 2001
***************
*** 1,5 ****
%!PS-Adobe-3.0
%%Creator: groff version 1.16.1
! %%CreationDate: Mon Mar 5 14:37:30 2001
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
--- 1,5 ----
%!PS-Adobe-3.0
%%Creator: groff version 1.16.1
! %%CreationDate: Tue Oct 9 15:08:13 2001
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
***************
*** 7,11 ****
%%+ font Courier
%%DocumentSuppliedResources: procset grops 1.16 1
! %%Pages: 13
%%PageOrder: Ascend
%%Orientation: Portrait
--- 7,11 ----
%%+ font Courier
%%DocumentSuppliedResources: procset grops 1.16 1
! %%Pages: 14
%%PageOrder: Ascend
%%Orientation: Portrait
***************
*** 309,314 ****
(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
%%Page: 2 2
%%BeginPageSetup
--- 309,314 ----
(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.2a)
! 72 768 Q(2001 October 9)123.745 E(1)197.895 E EP
%%Page: 2 2
%%BeginPageSetup
***************
*** 392,407 ****
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
%%Page: 3 3
%%BeginPageSetup
--- 392,408 ----
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 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
***************
*** 483,507 ****
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
.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 \
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
.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
%%Page: 4 4
%%BeginPageSetup
--- 484,506 ----
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(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
! .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 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 .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
***************
*** 509,602 ****
%%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
(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)
-.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
(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
(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
(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
(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)
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\
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)
-.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
(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
(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
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)
-.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
.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\
and the portion of the terminal name)-.05 F(before the \214rst)180
! 535.2 Q F12.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
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
(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
%%Page: 5 5
%%BeginPageSetup
--- 508,608 ----
%%EndPageSetup
/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
! /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 .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.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 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
! 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(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 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 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 .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 .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 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 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 .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 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 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
! 631.2 Q F12.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 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
! 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 .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
***************
*** 604,695 ****
%%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
(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
(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
(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
(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
(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)
.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
(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
(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\
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
(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
(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
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
(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
%%Page: 6 6
%%BeginPageSetup
--- 610,703 ----
%%EndPageSetup
/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
! /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
! .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.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.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 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
! .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.308(ther k).15 F -.15(ey)-.1 G .317
(sequence bound to a readline command will terminate the search and e)
! 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 436.8 Q .567(Non-incremental searches read the entire sea\
rch string before starting to search for matching history lines.)108
! 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.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 .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 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 720 Q(GNU Readline 4.2a)72 768 Q
! (2001 October 9)123.745 E(5)197.895 E EP
%%Page: 6 6
%%BeginPageSetup
***************
*** 697,787 ****
%%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
(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
(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
(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
(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
(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
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
(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
%%Page: 7 7
%%BeginPageSetup
--- 705,794 ----
%%EndPageSetup
/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
! /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 .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 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 .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 .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 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 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
! .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
***************
*** 789,871 ****
%%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
(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
(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
-.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
(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
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
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
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
(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
(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
(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.)
-.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
(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
(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
(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
(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
%%Page: 8 8
%%BeginPageSetup
--- 796,879 ----
%%EndPageSetup
/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
! /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 .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 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 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 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 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
! 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 484.8 Q F0
(Kill all characters on the current line, no matter where point is.)144
! 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 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 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 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
! 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
! 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 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 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
***************
*** 873,966 ****
%%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
(gument \(M\2550, M\2551, ..., M\255\255\))-.1 E F0 .642
! (Add this digit to the ar)144 108 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
(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)
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
(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
(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
(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)
-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
(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
(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 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
(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
(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\
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
(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
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
(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
(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
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)
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
(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
.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
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
(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
(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
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.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
%%Page: 9 9
%%BeginPageSetup
--- 881,976 ----
%%EndPageSetup
/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
! /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 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 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
! 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 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 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 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 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 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 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 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 381.6 R .929
(If none of these produces a match, \214lename)5.929 F 1.273
! (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 405.6 S(riab\
les, and only attempts \214lename completion under certain circumstance\
! 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
! 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 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 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 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 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 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 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 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 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 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 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 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
***************
*** 968,1103 ****
%%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
(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
(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
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
(xpansion on the current w)-.15 E(ord.)-.1 E F1
! (set\255mark \(C\255@, M\255\))108 228 Q F0
! (Set the mark to the point.)144 240 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
(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
.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
(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
(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
(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
(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
(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
.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
(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
(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
.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)
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
(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)
-.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
(ault emacs and vi bindings.)-.1 F .064
(Characters with the eighth bit set are written as)5.064 F .615
! (M\255, and are referred to as)108 604.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
(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
.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
%%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
%%Page: 11 11
%%BeginPageSetup
--- 978,1117 ----
%%EndPageSetup
/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
! /Times-Bold@0 SF(Miscellaneous)87 84 Q -.18(re)108 96 S.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 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 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 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\))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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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, 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 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
! 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(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 .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
***************
*** 1105,1143 ****
%%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
%%Page: 12 12
%%BeginPageSetup
--- 1119,1158 ----
%%EndPageSetup
/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R 2.5
! ("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
***************
*** 1145,1179 ****
%%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
%%Page: 13 13
%%BeginPageSetup
--- 1160,1196 ----
%%EndPageSetup
/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R 2.5
! ("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
***************
*** 1181,1229 ****
%%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)
-.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)
-.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
(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
-.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
(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
(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
(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
(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
%%Trailer
end
--- 1198,1256 ----
%%EndPageSetup
/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R 2.5
! ("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 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 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 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 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 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 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 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
! (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
diff -Nrc2 readline-4.2/doc/rltech.texinfo readline-4.2a/doc/rltech.texinfo
*** readline-4.2/doc/rltech.texinfo Mon Mar 12 05:42:09 2001
--- readline-4.2a/doc/rltech.texinfo Tue May 1 12:53:55 2001
***************
*** 177,180 ****
--- 177,190 ----
@code{} 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.
***************
*** 349,352 ****
--- 359,370 ----
@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
***************
*** 1075,1078 ****
--- 1093,1105 ----
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
diff -Nrc2 readline-4.2/doc/rluser.texinfo readline-4.2a/doc/rluser.texinfo
*** readline-4.2/doc/rluser.texinfo Mon Mar 5 11:11:53 2001
--- readline-4.2a/doc/rluser.texinfo Tue Oct 9 15:05:53 2001
***************
*** 11,15 ****
GNU Readline Library.
! Copyright (C) 1988-2000 Free Software Foundation, Inc.
Authored by Brian Fox and Chet Ramey.
--- 11,15 ----
GNU Readline Library.
! Copyright (C) 1988-2001 Free Software Foundation, Inc.
Authored by Brian Fox and Chet Ramey.
***************
*** 236,240 ****
@item M-@key{DEL}
! Kill from the cursor the start of the previous word, or, if between
words, to the start of the previous word.
Word boundaries are the same as those used by @kbd{M-b}.
--- 236,240 ----
@item M-@key{DEL}
! Kill from the cursor the start of the current word, or, if between
words, to the start of the previous word.
Word boundaries are the same as those used by @kbd{M-b}.
***************
*** 313,316 ****
--- 313,320 ----
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
***************
*** 453,456 ****
--- 457,465 ----
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
***************
*** 504,507 ****
--- 513,524 ----
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
***************
*** 645,653 ****
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}
(one to three digits)
@end table
--- 662,670 ----
vertical tab
@item \@var{nnn}
! the eight-bit character whose value is the octal value @var{nnn}
(one to three digits)
+ @item \x@var{HH}
+ the eight-bit character whose value is the hexadecimal value @var{HH}
+ (one or two hex digits)
@end table
***************
*** 1022,1025 ****
--- 1039,1044 ----
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)
***************
*** 1535,1539 ****
@btindex complete
@example
! @code{complete [-abcdefjkvu] [-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{}]}
--- 1554,1558 ----
@btindex complete
@example
! @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{}]}
***************
*** 1617,1620 ****
--- 1636,1642 ----
@item function
Names of shell functions.
+
+ @item group
+ Group names. May also be specified as @option{-g}.
@item helptopic
Binary files readline-4.2/doc/rluserman.dvi and readline-4.2a/doc/rluserman.dvi differ
diff -Nrc2 readline-4.2/doc/rluserman.html readline-4.2a/doc/rluserman.html
*** readline-4.2/doc/rluserman.html Mon Apr 16 11:05:46 2001
--- readline-4.2a/doc/rluserman.html Tue Oct 9 15:08:12 2001
***************
*** 1,125 ****
!
- GNU Readline Library
-
- GNU Readline Library User Interface
- Edition 4.2, for Readline Library
Version 4.2.
- Apr 2001
- Brian Fox, Free Software Foundation
- Chet Ramey, Case Western Reserve University
-
-
-
Table of Contents
-
-
!
This document describes the end user interface of the GNU Readline Library,
a utility which aids in the consistency of user interface across discrete
programs that need to provide a command line interface.
!
!
! Published by the Free Software Foundation
! 59 Temple Place, Suite 330,
! Boston, MA 02111 USA
!
!
!
! Permission is granted to make and distribute verbatim copies of
! this manual provided the copyright notice and this permission notice
! are preserved on all copies.
!
!
- Permission is granted to copy and distribute modified versions of this
- manual under the conditions for verbatim copying, provided that the entire
- resulting derived work is distributed under the terms of a permission
- notice identical to this one.
-
-
-
- Permission is granted to copy and distribute translations of this manual
- into another language, under the above conditions for modified versions,
- except that this permission notice may be stated in a translation approved
- by the Free Software Foundation.
-
-
-
- Copyright (C) 1988-2001 Free Software Foundation, Inc.
-
-
-
-
-
-
-
This chapter describes the basic features of the GNU
command line editing interface.
!
!
!
!
!
!
!
!
The following paragraphs describe the notation used to represent
keystrokes.
-
-
The text C-k is read as `Control-K' and describes the character
produced when the k key is pressed while the Control key
is depressed.
-
-
The text M-k is read as `Meta-K' and describes the character
produced when the Meta key (if you have one) is depressed, and the k
--- 1,106 ----
+
+
+
! GNU Readline Library:
!
!
!
!
!
!
!
!
!
!
! GNU Readline Library
!
This document describes the end user interface of the GNU Readline Library,
a utility which aids in the consistency of user interface across discrete
programs that need to provide a command line interface.
+
!
!
!
!
!
!
! [ < ] |
! [ > ] |
! | [ << ] |
! [ Up ] |
! [ >> ] |
! | | | | [Top] |
! [Contents] |
! [Index] |
! [ ? ] |
!
!
! 1. Command Line Editing
!
This chapter describes the basic features of the GNU
command line editing interface.
+
!
!
!
!
!
!
!
! [ < ] |
! [ > ] |
! | [ << ] |
! [ Up ] |
! [ >> ] |
! | | | | [Top] |
! [Contents] |
! [Index] |
! [ ? ] |
!
! 1.1 Introduction to Line Editing
!
+
The following paragraphs describe the notation used to represent
keystrokes.
+
The text C-k is read as `Control-K' and describes the character
produced when the k key is pressed while the Control key
is depressed.
+
The text M-k is read as `Meta-K' and describes the character
produced when the Meta key (if you have one) is depressed, and the k
***************
*** 132,168 ****
Meta key or may be configured as some other modifier, such as a
Compose key for typing accented characters.
-
-
If you do not have a Meta or ALT key, or another key working as
a Meta key, the identical keystroke can be generated by typing ESC
first, and then typing k.
Either process is known as metafying the k key.
-
-
The text M-C-k is read as `Meta-Control-k' and describes the
character produced by metafying C-k.
-
-
In addition, several keys have their own names. Specifically,
DEL, ESC, LFD, SPC, RET, and TAB all
stand for themselves when seen in this text, or in an init file
! (see section Readline Init File).
If your keyboard lacks a LFD key, typing C-j will
produce the desired character.
The RET key may be labeled Return or Enter on
some keyboards.
!
!
!
!
-
-
-
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
--- 113,156 ----
Meta key or may be configured as some other modifier, such as a
Compose key for typing accented characters.
+
If you do not have a Meta or ALT key, or another key working as
a Meta key, the identical keystroke can be generated by typing ESC
first, and then typing k.
Either process is known as metafying the k key.
+
The text M-C-k is read as `Meta-Control-k' and describes the
character produced by metafying C-k.
+
In addition, several keys have their own names. Specifically,
DEL, ESC, LFD, SPC, RET, and TAB all
stand for themselves when seen in this text, or in an init file
! (see section 1.3 Readline Init File).
If your keyboard lacks a LFD key, typing C-j will
produce the desired character.
The RET key may be labeled Return or Enter on
some keyboards.
+
!
!
!
!
! 1.2 Readline Interaction
!
Often during an interactive session you type in a long line of text,
only to notice that the first word on the line is misspelled. The
***************
*** 175,206 ****
end of the line to press RET; the entire line is accepted
regardless of the location of the cursor within the line.
!
!
!
!
!
!
!
-
-
-
-
-
In order to enter characters into the line, simply type them. The typed
character appears where the cursor was, and then the cursor moves one
space to the right. If you mistype a character, you can use your
erase character to back up and delete the mistyped character.
-
-
Sometimes you may mistype a character, and
not notice the error until you have typed several other characters. In
--- 163,201 ----
end of the line to press RET; the entire line is accepted
regardless of the location of the cursor within the line.
+
!
!
!
!
!
!
!
! 1.2.1 Readline Bare Essentials
!
In order to enter characters into the line, simply type them. The typed
character appears where the cursor was, and then the cursor moves one
space to the right. If you mistype a character, you can use your
erase character to back up and delete the mistyped character.
+
Sometimes you may mistype a character, and
not notice the error until you have typed several other characters. In
***************
*** 208,214 ****
correct your mistake. Afterwards, you can move the cursor to the right
with C-f.
-
-
When you add text in the middle of a line, you will notice that characters
to the right of the cursor are `pushed over' to make room for the text
--- 203,208 ----
correct your mistake. Afterwards, you can move the cursor to the right
with C-f.
+
When you add text in the middle of a line, you will notice that characters
to the right of the cursor are `pushed over' to make room for the text
***************
*** 217,257 ****
blank space created by the removal of the text. A list of the bare
essentials for editing the text of an input line follows.
-
-
- C-b
!
-
! Move back one character.
- C-f
!
-
! Move forward one character.
- DEL or Backspace
!
-
! Delete the character to the left of the cursor.
- C-d
!
-
! Delete the character underneath the cursor.
- Printing characters
!
-
! Insert the character into the line at the cursor.
- C-_ or C-x C-u
!
-
! Undo the last editing command. You can undo all the way back to an
empty line.
-
(Depending on your configuration, the Backspace key be set to
delete the character to the left of the cursor and the DEL key set
to delete the character underneath the cursor, like C-d, rather
than the character to the left of the cursor.)
!
!
!
!
!
The above table describes the most basic keystrokes that you need
in order to do editing of the input line. For your convenience, many
--- 211,257 ----
blank space created by the removal of the text. A list of the bare
essentials for editing the text of an input line follows.
+
- C-b
!
- Move back one character.
- C-f
!
- Move forward one character.
- DEL or Backspace
!
- Delete the character to the left of the cursor.
- C-d
!
- Delete the character underneath the cursor.
- Printing characters
!
- Insert the character into the line at the cursor.
- C-_ or C-x C-u
!
- Undo the last editing command. You can undo all the way back to an
empty line.
+
(Depending on your configuration, the Backspace key be set to
delete the character to the left of the cursor and the DEL key set
to delete the character underneath the cursor, like C-d, rather
than the character to the left of the cursor.)
+
!
!
!
!
! 1.2.2 Readline Movement Commands
!
+
The above table describes the most basic keystrokes that you need
in order to do editing of the input line. For your convenience, many
***************
*** 259,312 ****
C-d, and DEL. Here are some commands for moving more rapidly
about the line.
-
-
- C-a
!
-
! Move to the start of the line.
- C-e
!
-
! Move to the end of the line.
- M-f
!
-
! Move forward a word, where a word is composed of letters and digits.
- M-b
!
-
! Move backward a word.
- C-l
!
-
! Clear the screen, reprinting the current line at the top.
-
Notice how C-f moves forward a character, while M-f moves
forward a word. It is a loose convention that control keystrokes
operate on characters while meta keystrokes operate on words.
!
!
!
!
!
-
-
!
!
Killing text means to delete the text from the line, but to save
it away for later use, usually by yanking (re-inserting)
it back into the line.
(`Cut' and `paste' are more recent jargon for `kill' and `yank'.)
-
-
If the description for a command says that it `kills' text, then you can
be sure that you can get the text back in a different (or the same)
place later.
-
-
When you use a kill command, the text is saved in a kill-ring.
Any number of consecutive kills save all of the killed text together, so
--- 259,316 ----
C-d, and DEL. Here are some commands for moving more rapidly
about the line.
+
- C-a
!
- Move to the start of the line.
- C-e
!
- Move to the end of the line.
- M-f
!
- Move forward a word, where a word is composed of letters and digits.
- M-b
!
- Move backward a word.
- C-l
!
- Clear the screen, reprinting the current line at the top.
+
Notice how C-f moves forward a character, while M-f moves
forward a word. It is a loose convention that control keystrokes
operate on characters while meta keystrokes operate on words.
+
!
!
!
!
! 1.2.3 Readline Killing Commands
!
!
!
!
!
Killing text means to delete the text from the line, but to save
it away for later use, usually by yanking (re-inserting)
it back into the line.
(`Cut' and `paste' are more recent jargon for `kill' and `yank'.)
+
If the description for a command says that it `kills' text, then you can
be sure that you can get the text back in a different (or the same)
place later.
+
When you use a kill command, the text is saved in a kill-ring.
Any number of consecutive kills save all of the killed text together, so
***************
*** 315,372 ****
typed line is available to be yanked back later, when you are typing
another line.
!
-
-
Here is the list of commands for killing text.
-
-
- C-k
!
-
! Kill the text from the current cursor position to the end of the line.
- M-d
!
-
! Kill from the cursor to the end of the current word, or, if between
words, to the end of the next word.
Word boundaries are the same as those used by M-f.
- M-DEL
!
-
! Kill from the cursor the start of the previous word, or, if between
words, to the start of the previous word.
Word boundaries are the same as those used by M-b.
- C-w
!
-
! Kill from the cursor to the previous whitespace. This is different than
M-DEL because the word boundaries differ.
-
Here is how to yank the text back into the line. Yanking
means to copy the most-recently-killed text from the kill buffer.
-
-
- C-y
!
-
! Yank the most recently killed text back into the buffer at the cursor.
- M-y
!
-
! Rotate the kill-ring, and yank the new top. You can only do this if
the prior command is C-y or M-y.
!
!
!
!
You can pass numeric arguments to Readline commands. Sometimes the
argument acts as a repeat count, other times it is the sign of the
--- 319,386 ----
typed line is available to be yanked back later, when you are typing
another line.
!
!
Here is the list of commands for killing text.
+
- C-k
!
- Kill the text from the current cursor position to the end of the line.
!
- M-d
!
- Kill from the cursor to the end of the current word, or, if between
words, to the end of the next word.
Word boundaries are the same as those used by M-f.
+
- M-DEL
!
- Kill from the cursor the start of the current word, or, if between
words, to the start of the previous word.
Word boundaries are the same as those used by M-b.
+
- C-w
!
- Kill from the cursor to the previous whitespace. This is different than
M-DEL because the word boundaries differ.
+
+
Here is how to yank the text back into the line. Yanking
means to copy the most-recently-killed text from the kill buffer.
+
- C-y
!
- Yank the most recently killed text back into the buffer at the cursor.
!
- M-y
!
- Rotate the kill-ring, and yank the new top. You can only do this if
the prior command is C-y or M-y.
+
!
!
!
!
! 1.2.4 Readline Arguments
!
+
You can pass numeric arguments to Readline commands. Sometimes the
argument acts as a repeat count, other times it is the sign of the
***************
*** 375,381 ****
act in a backward direction. For example, to kill text back to the
start of the line, you might type `M-- C-k'.
-
-
The general way to pass numeric arguments to a command is to type meta
digits before the command. If the first `digit' typed is a minus
--- 389,394 ----
act in a backward direction. For example, to kill text back to the
start of the line, you might type `M-- C-k'.
+
The general way to pass numeric arguments to a command is to type meta
digits before the command. If the first `digit' typed is a minus
***************
*** 385,401 ****
the C-d command an argument of 10, you could type `M-1 0 C-d',
which will delete the next ten characters on the input line.
!
!
!
!
!
Readline provides commands for searching through the command history
for lines containing a specified string.
There are two search modes: incremental and non-incremental.
-
-
Incremental searches begin before the user has finished typing the
search string.
--- 398,426 ----
the C-d command an argument of 10, you could type `M-1 0 C-d',
which will delete the next ten characters on the input line.
+
!
!
!
!
! 1.2.5 Searching for Commands in the History
!
+
Readline provides commands for searching through the command history
for lines containing a specified string.
There are two search modes: incremental and non-incremental.
+
Incremental searches begin before the user has finished typing the
search string.
***************
*** 413,419 ****
When the search is terminated, the history entry containing the
search string becomes the current line.
-
-
To find other matching entries in the history list, type C-r or
C-s as appropriate.
--- 438,443 ----
When the search is terminated, the history entry containing the
search string becomes the current line.
+
To find other matching entries in the history list, type C-r or
C-s as appropriate.
***************
*** 426,445 ****
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.
!
!
!
!
-
-
-
Although the Readline library comes with a set of Emacs-like
keybindings installed by default, it is possible to use a different set
--- 450,483 ----
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-rs 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.
+
!
!
!
!
! 1.3 Readline Init File
!
Although the Readline library comes with a set of Emacs-like
keybindings installed by default, it is possible to use a different set
***************
*** 448,522 ****
commands in an inputrc file, conventionally in his home directory.
The name of this
! file is taken from the value of the environment variable @env{INPUTRC}. If
that variable is unset, the default is `~/.inputrc'.
-
-
When a program which uses the Readline library starts up, the
init file is read, and the key bindings are set.
-
-
In addition, the C-x C-r
command re-reads this init file, thus
incorporating any changes that you might have made to it.
!
!
!
!
!
!
!
!
There are only a few basic constructs allowed in the
Readline init file. Blank lines are ignored.
Lines beginning with a `#' are comments.
Lines beginning with a `$' indicate conditional
! constructs (see section Conditional Init Constructs). Other lines
denote variable settings and key bindings.
-
-
- Variable Settings
!
-
! You can modify the run-time behavior of Readline by
altering the values of variables in Readline
using the
set
command within the init file.
The syntax is simple:
!
!
! set variable value
!
Here, for example, is how to
change from the default Emacs-like key binding to use
vi
line editing commands:
!
!
! set editing-mode vi
!
Variable names and values, where appropriate, are recognized without regard
to case.
A great deal of run-time behavior is changeable with the following
variables.
!
bell-style
! -
!
Controls what happens when Readline wants to ring the terminal bell.
If set to `none', Readline never rings the bell. If set to
--- 486,574 ----
commands in an inputrc file, conventionally in his home directory.
The name of this
! file is taken from the value of the environment variable
INPUTRC
. If
that variable is unset, the default is `~/.inputrc'.
+
When a program which uses the Readline library starts up, the
init file is read, and the key bindings are set.
+
In addition, the C-x C-r
command re-reads this init file, thus
incorporating any changes that you might have made to it.
+
!
!
!
!
!
!
!
!
!
!
!
!
!
! 1.3.1 Readline Init File Syntax
!
+
There are only a few basic constructs allowed in the
Readline init file. Blank lines are ignored.
Lines beginning with a `#' are comments.
Lines beginning with a `$' indicate conditional
! constructs (see section 1.3.2 Conditional Init Constructs). Other lines
denote variable settings and key bindings.
+
- Variable Settings
!
- You can modify the run-time behavior of Readline by
altering the values of variables in Readline
using the
set
command within the init file.
The syntax is simple:
+
!
Here, for example, is how to
change from the default Emacs-like key binding to use
vi
line editing commands:
+
!
Variable names and values, where appropriate, are recognized without regard
to case.
+
A great deal of run-time behavior is changeable with the following
variables.
+
!
bell-style
! -
Controls what happens when Readline wants to ring the terminal bell.
If set to `none', Readline never rings the bell. If set to
***************
*** 524,544 ****
If set to `audible' (the default), Readline attempts to ring
the terminal's bell.
comment-begin
! -
!
The string to insert at the beginning of the line when the
insert-comment
command is executed. The default value
is "#"
.
completion-ignore-case
! -
! If set to `on', Readline performs filename matching and completion
in a case-insensitive fashion.
The default value is `off'.
completion-query-items
! -
!
The number of possible completions that determines when the user is
asked whether he wants to see the list of possibilities. If the
--- 576,596 ----
If set to `audible' (the default), Readline attempts to ring
the terminal's bell.
+
comment-begin
! -
The string to insert at the beginning of the line when the
insert-comment
command is executed. The default value
is "#"
.
+
completion-ignore-case
! - If set to `on', Readline performs filename matching and completion
in a case-insensitive fashion.
The default value is `off'.
+
completion-query-items
! -
The number of possible completions that determines when the user is
asked whether he wants to see the list of possibilities. If the
***************
*** 548,591 ****
This variable must be set to an integer value greater than or equal to 0.
The default limit is
100
.
convert-meta
! -
!
If set to `on', Readline will convert characters with the
eighth bit set to an ASCII key sequence by stripping the eighth
bit and prefixing an ESC character, converting them to a
meta-prefixed key sequence. The default value is `on'.
disable-completion
! -
!
If set to `On', Readline will inhibit word completion.
Completion characters will be inserted into the line as if they had
been mapped to
self-insert
. The default is `off'.
editing-mode
! -
!
The
editing-mode
variable controls which default set of
key bindings is used. By default, Readline starts up in Emacs editing
mode, where the keystrokes are most similar to Emacs. This variable can be
set to either `emacs' or `vi'.
enable-keypad
! -
!
When set to `on', Readline will try to enable the application
keypad when it is called. Some systems need this to enable the
arrow keys. The default is `off'.
expand-tilde
! -
!
If set to `on', tilde expansion is performed when Readline
attempts word completion. The default is `off'.
horizontal-scroll-mode
! -
!
This variable can be set to either `on' or `off'. Setting it
to `on' means that the text of the lines being edited will scroll
--- 600,649 ----
This variable must be set to an integer value greater than or equal to 0.
The default limit is
100
.
+
convert-meta
! -
If set to `on', Readline will convert characters with the
eighth bit set to an ASCII key sequence by stripping the eighth
bit and prefixing an ESC character, converting them to a
meta-prefixed key sequence. The default value is `on'.
+
disable-completion
! -
If set to `On', Readline will inhibit word completion.
Completion characters will be inserted into the line as if they had
been mapped to
self-insert
. The default is `off'.
+
editing-mode
! -
The
editing-mode
variable controls which default set of
key bindings is used. By default, Readline starts up in Emacs editing
mode, where the keystrokes are most similar to Emacs. This variable can be
set to either `emacs' or `vi'.
+
enable-keypad
! -
When set to `on', Readline will try to enable the application
keypad when it is called. Some systems need this to enable the
arrow keys. The default is `off'.
+
expand-tilde
! -
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 scroll
***************
*** 593,601 ****
of the screen, instead of wrapping onto a new screen line. By default,
this variable is set to `off'.
input-meta
! -
!
!
If set to `on', Readline will enable eight-bit input (it
will not clear the eighth bit in the characters it reads),
--- 651,659 ----
of the screen, instead of wrapping onto a new screen line. By default,
this variable is set to `off'.
+
input-meta
! -
!
If set to `on', Readline will enable eight-bit input (it
will not clear the eighth bit in the characters it reads),
***************
*** 603,618 ****
default value is `off'. The name
meta-flag
is a
synonym for this variable.
isearch-terminators
! -
!
The string of characters that should terminate an incremental search without
! subsequently executing the character as a command (see section Searching for Commands in the History).
If this variable has not been given a value, the characters ESC and
C-J will terminate an incremental search.
keymap
! -
!
Sets Readline's idea of the current keymap for key binding commands.
Acceptable
keymap
names are
--- 661,676 ----
default value is `off'. The name meta-flag
is a
synonym for this variable.
+
isearch-terminators
! -
The string of characters that should terminate an incremental search without
! subsequently executing the character as a command (see section 1.2.5 Searching for Commands in the History).
If this variable has not been given a value, the characters ESC and
C-J will terminate an incremental search.
+
keymap
! -
Sets Readline's idea of the current keymap for key binding commands.
Acceptable
keymap
names are
***************
*** 629,661 ****
The value of the editing-mode
variable also affects the
default keymap.
mark-directories
! -
! If set to `on', completed directory names have a slash
appended. The default is `on'.
mark-modified-lines
! -
!
This variable, when set to `on', causes Readline to display an
asterisk (`*') at the start of history lines which have been modified.
This variable is `off' by default.
output-meta
! -
!
If set to `on', Readline will display characters with the
eighth bit set directly rather than as a meta-prefixed escape
sequence. The default is `off'.
print-completions-horizontally
! -
! If set to `on', Readline will display completions with matches
sorted horizontally in alphabetical order, rather than down the screen.
The default is `off'.
show-all-if-ambiguous
! -
!
This alters the default behavior of the completion functions. If
set to `on',
--- 687,728 ----
The value of the
editing-mode
variable also affects the
default keymap.
+
mark-directories
! - If set to `on', completed directory names have a slash
appended. The default is `on'.
+
mark-modified-lines
! -
This variable, when set to `on', causes Readline to display an
asterisk (`*') at the start of history lines which have been modified.
This variable is `off' by default.
+
+
+
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
sequence. The default is `off'.
+
print-completions-horizontally
! - If set to `on', Readline will display completions with matches
sorted horizontally in alphabetical order, rather than down the screen.
The default is `off'.
+
show-all-if-ambiguous
! -
This alters the default behavior of the completion functions. If
set to `on',
***************
*** 663,683 ****
matches to be listed immediately instead of ringing the bell.
The default value is `off'.
visible-stats
! -
!
If set to `on', a character denoting a file's type
is appended to the filename when listing possible
completions. The default is `off'.
- Key Bindings
!
-
! The syntax for controlling key bindings in the init file is
simple. First you need to find the name of the command that you
want to change. The following sections contain tables of the command
name, the default keybinding, if any, and a short description of what
the command does.
Once you know the name of the command, simply place on a line
--- 730,752 ----
matches to be listed immediately instead of ringing the bell.
The default value is `off'.
+
visible-stats
! -
If set to `on', a character denoting a file's type
is appended to the filename when listing possible
completions. The default is `off'.
+
+
- Key Bindings
!
- The syntax for controlling key bindings in the init file is
simple. First you need to find the name of the command that you
want to change. The following sections contain tables of the command
name, the default keybinding, if any, and a short description of what
the command does.
+
Once you know the name of the command, simply place on a line
***************
*** 687,705 ****
can be expressed in different ways, depending on what you find most
comfortable.
In addition to command names, readline allows keys to be bound
to a string that is inserted when the key is pressed (a macro).
-
- keyname: function-name or macro
!
-
! keyname is the name of a key spelled out in English. For example:
!
!
! Control-u: universal-argument
Meta-Rubout: backward-kill-word
Control-o: "> output"
!
In the above example, C-u is bound to the function
--- 756,772 ----
can be expressed in different ways, depending on what you find most
comfortable.
+
In addition to command names, readline allows keys to be bound
to a string that is inserted when the key is pressed (a macro).
+
- keyname: function-name or macro
!
- keyname is the name of a key spelled out in English. For example:
!
| Control-u: universal-argument
Meta-Rubout: backward-kill-word
Control-o: "> output"
! |
In the above example, C-u is bound to the function
***************
*** 709,712 ****
--- 776,780 ----
expressed on the right hand side (that is, to insert the text
`> output' into the line).
+
A number of symbolic character names are recognized while
***************
*** 724,742 ****
and
TAB.
- "keyseq": function-name or macro
!
-
! keyseq differs from keyname above in that strings
denoting an entire key sequence can be specified, by placing
the key sequence in double quotes. Some GNU Emacs style key
escapes can be used, as in the following example, but the
special character names are not recognized.
!
!
! "\C-u": universal-argument
"\C-x\C-r": re-read-init-file
"\e[11~": "Function Key 1"
!
In the above example, C-u is again bound to the function
--- 792,809 ----
and
TAB.
+
- "keyseq": function-name or macro
!
- keyseq differs from keyname above in that strings
denoting an entire key sequence can be specified, by placing
the key sequence in double quotes. Some GNU Emacs style key
escapes can be used, as in the following example, but the
special character names are not recognized.
+
!
| "\C-u": universal-argument
"\C-x\C-r": re-read-init-file
"\e[11~": "Function Key 1"
! |
In the above example, C-u is again bound to the function
***************
*** 745,814 ****
and `ESC [ 1 1 ~' is bound to insert
the text `Function Key 1'.
The following GNU Emacs style escape sequences are available when
specifying key sequences:
-
\C-
! -
! control prefix
\M-
! -
! meta prefix
\e
! -
! an escape character
\\
! -
! backslash
\"
! -
! ", a double quotation mark
\'
! -
! ', a single quote or apostrophe
In addition to the GNU Emacs style escape sequences, a second
set of backslash escapes is available:
-
\a
! -
! alert (bell)
\b
! -
! backspace
\d
! -
! delete
\f
! -
! form feed
\n
! -
! newline
\r
! -
! carriage return
\t
! -
! horizontal tab
\v
! -
! vertical tab
\nnn
! -
! the character whose ASCII code is the octal value nnn
! (one to three digits)
!
\xnnn
! -
! the character whose ASCII code is the hexadecimal value nnn
(one to three digits)
When entering the text of a macro, single or double quotes must
--- 812,869 ----
and `ESC [ 1 1 ~' is bound to insert
the text `Function Key 1'.
+
+
The following GNU Emacs style escape sequences are available when
specifying key sequences:
+
\C-
! - control prefix
\M-
! - meta prefix
\e
! - an escape character
\\
! - backslash
\"
! - ", a double quotation mark
\'
! - ', a single quote or apostrophe
+
In addition to the GNU Emacs style escape sequences, a second
set of backslash escapes is available:
+
\a
! - alert (bell)
\b
! - backspace
\d
! - delete
\f
! - form feed
\n
! - newline
\r
! - carriage return
\t
! - horizontal tab
\v
! - vertical tab
\nnn
! - the eight-bit character whose value is the octal value nnn
(one to three digits)
+
\xHH
+ - the eight-bit character whose value is the hexadecimal value HH
+ (one or two hex digits)
+
When entering the text of a macro, single or double quotes must
***************
*** 820,855 ****
For example, the following binding will make `C-x \'
insert a single `\' into the line:
!
!
! "\C-x\\": "\\"
!
!
!
!
!
Readline implements a facility similar in spirit to the conditional
compilation features of the C preprocessor which allows key
bindings and variable settings to be performed as the result
of tests. There are four parser directives used.
-
-
$if
! -
! The
$if
construct allows bindings to be made based on the
editing mode, the terminal being used, or the application using
Readline. The text of the test extends to the end of the line;
no characters are required to isolate it.
-
mode
! -
! The
mode=
form of the $if
directive is used to test
whether Readline is in emacs
or vi
mode.
This may be used in conjunction
--- 875,919 ----
For example, the following binding will make `C-x \'
insert a single `\' into the line:
!
+
!
!
!
!
! 1.3.2 Conditional Init Constructs
!
+
Readline implements a facility similar in spirit to the conditional
compilation features of the C preprocessor which allows key
bindings and variable settings to be performed as the result
of tests. There are four parser directives used.
+
$if
! - The
$if
construct allows bindings to be made based on the
editing mode, the terminal being used, or the application using
Readline. The text of the test extends to the end of the line;
no characters are required to isolate it.
+
mode
! - The
mode=
form of the $if
directive is used to test
whether Readline is in emacs
or vi
mode.
This may be used in conjunction
***************
*** 857,864 ****
the emacs-standard
and emacs-ctlx
keymaps only if
Readline is starting out in emacs
mode.
term
! -
! The
term=
form may be used to include terminal-specific
key bindings, perhaps to bind the key sequences output by the
terminal's function keys. The word on the right side of the
--- 921,928 ----
the emacs-standard
and emacs-ctlx
keymaps only if
Readline is starting out in emacs
mode.
+
term
! - The
term=
form may be used to include terminal-specific
key bindings, perhaps to bind the key sequences output by the
terminal's function keys. The word on the right side of the
***************
*** 867,874 ****
allows sun
to match both sun
and sun-cmd
,
for instance.
application
! -
! The application construct is used to include
application-specific settings. Each program using the Readline
library sets the application name, and you can test for
--- 931,938 ----
allows
sun
to match both sun
and sun-cmd
,
for instance.
+
application
! - The application construct is used to include
application-specific settings. Each program using the Readline
library sets the application name, and you can test for
***************
*** 877,924 ****
a specific program. For instance, the following command adds a
key sequence that quotes the current or previous word in Bash:
!
!
! $if Bash
# Quote the current or previous word
"\C-xq": "\eb\"\ef\""
$endif
!
!
!
$endif
! -
! This command, as seen in the previous example, terminates an
$if
command.
$else
! -
! Commands in this branch of the
$if
directive are executed if
the test fails.
$include
! -
! This directive takes a single filename as an argument and reads commands
and bindings from that file.
For example, the following directive reads from `/etc/inputrc':
!
! $include /etc/inputrc
!
!
!
!
!
!
!
!
Here is an example of an inputrc file. This illustrates key
binding, variable assignment, and conditional syntax.
!
!
!
! # This file controls the behaviour of line input editing for
# programs that use the Gnu Readline library. Existing programs
# include FTP, Bash, and Gdb.
--- 941,992 ----
a specific program. For instance, the following command adds a
key sequence that quotes the current or previous word in Bash:
!
| $if Bash
# Quote the current or previous word
"\C-xq": "\eb\"\ef\""
$endif
! |
!
$endif
! - This command, as seen in the previous example, terminates an
$if
command.
+
$else
! - Commands in this branch of the
$if
directive are executed if
the test fails.
+
$include
! - This directive takes a single filename as an argument and reads commands
and bindings from that file.
For example, the following directive reads from `/etc/inputrc':
+
+
!
!
!
!
! 1.3.3 Sample Init File
!
+
Here is an example of an inputrc file. This illustrates key
binding, variable assignment, and conditional syntax.
+
!
| # This file controls the behaviour of line input editing for
# programs that use the Gnu Readline library. Existing programs
# include FTP, Bash, and Gdb.
***************
*** 1017,1110 ****
"\M-.": yank-last-arg
$endif
!
!
!
!
!
!
!
!
This section describes Readline commands that may be bound to key
sequences.
Command names without an accompanying key sequence are unbound by default.
-
-
In the following descriptions, point refers to the current cursor
position, and mark refers to a cursor position saved by the
set-mark command.
The text between the point and mark is referred to as the region.
!
!
!
!
!
beginning-of-line (C-a)
! -
!
Move to the start of the current line.
end-of-line (C-e)
! -
!
Move to the end of the line.
forward-char (C-f)
! -
!
Move forward a character.
-
backward-char (C-b)
- -
Move back a character.
forward-word (M-f)
! -
!
Move forward to the end of the next word. Words are composed of
letters and digits.
backward-word (M-b)
! -
!
Move back to the start of the current or previous word. Words are
composed of letters and digits.
clear-screen (C-l)
! -
!
Clear the screen and redraw the current line,
leaving the current line at the top of the screen.
redraw-current-line ()
! -
!
Refresh the current line. By default, this is unbound.
!
!
!
!
accept-line (Newline or Return)
! -
!
Accept the line regardless of where the cursor is.
If this line is
--- 1085,1224 ----
"\M-.": yank-last-arg
$endif
!
|
+
+
+
+
+ 1.4 Bindable Readline Commands
+
+
+
+
+
This section describes Readline commands that may be bound to key
sequences.
Command names without an accompanying key sequence are unbound by default.
+
In the following descriptions, point refers to the current cursor
position, and mark refers to a cursor position saved by the
set-mark
command.
The text between the point and mark is referred to as the region.
+
!
!
!
!
! 1.4.1 Commands For Moving
!
!
beginning-of-line (C-a)
! -
Move to the start of the current line.
+
+
end-of-line (C-e)
! -
Move to the end of the line.
+
+
forward-char (C-f)
! -
Move forward a character.
+
+
backward-char (C-b)
+ -
Move back a character.
+
+
forward-word (M-f)
! -
Move forward to the end of the next word. Words are composed of
letters and digits.
+
+
backward-word (M-b)
! -
Move back to the start of the current or previous word. Words are
composed of letters and digits.
+
+
clear-screen (C-l)
! -
Clear the screen and redraw the current line,
leaving the current line at the top of the screen.
+
+
redraw-current-line ()
! -
Refresh the current line. By default, this is unbound.
+
+
!
!
!
!
! 1.4.2 Commands For Manipulating The History
!
!
!
accept-line (Newline or Return)
! -
Accept the line regardless of where the cursor is.
If this line is
***************
*** 1113,1182 ****
If this line is a modified history line, the history line is restored
to its original state.
previous-history (C-p)
! -
!
Move `back' through the history list, fetching the previous command.
next-history (C-n)
! -
!
Move `forward' through the history list, fetching the next command.
beginning-of-history (M-<)
! -
!
Move to the first line in the history.
end-of-history (M->)
! -
!
Move to the end of the input history, i.e., the line currently
being entered.
reverse-search-history (C-r)
! -
!
Search backward starting at the current line and moving `up' through
the history as necessary. This is an incremental search.
forward-search-history (C-s)
! -
!
Search forward starting at the current line and moving `down' through
the the history as necessary. This is an incremental search.
non-incremental-reverse-search-history (M-p)
! -
!
Search backward starting at the current line and moving `up'
through the history as necessary using a non-incremental search
for a string supplied by the user.
non-incremental-forward-search-history (M-n)
! -
!
Search forward starting at the current line and moving `down'
through the the history as necessary using a non-incremental search
for a string supplied by the user.
history-search-forward ()
! -
!
Search forward through the history for the string of characters
between the start of the current line and the point.
This is a non-incremental search.
By default, this command is unbound.
history-search-backward ()
! -
!
Search backward through the history for the string of characters
between the start of the current line and the point. This
is a non-incremental search. By default, this command is unbound.
yank-nth-arg (M-C-y)
! -
!
Insert the first argument to the previous command (usually
the second word on the previous line) at point.
--- 1227,1307 ----
If this line is a modified history line, the history line is restored
to its original state.
+
+
previous-history (C-p)
! -
Move `back' through the history list, fetching the previous command.
+
+
next-history (C-n)
! -
Move `forward' through the history list, fetching the next command.
+
+
beginning-of-history (M-<)
! -
Move to the first line in the history.
+
+
end-of-history (M->)
! -
Move to the end of the input history, i.e., the line currently
being entered.
+
+
reverse-search-history (C-r)
! -
Search backward starting at the current line and moving `up' through
the history as necessary. This is an incremental search.
+
+
forward-search-history (C-s)
! -
Search forward starting at the current line and moving `down' through
the the history as necessary. This is an incremental search.
+
+
non-incremental-reverse-search-history (M-p)
! -
Search backward starting at the current line and moving `up'
through the history as necessary using a non-incremental search
for a string supplied by the user.
+
+
non-incremental-forward-search-history (M-n)
! -
Search forward starting at the current line and moving `down'
through the the history as necessary using a non-incremental search
for a string supplied by the user.
+
+
history-search-forward ()
! -
Search forward through the history for the string of characters
between the start of the current line and the point.
This is a non-incremental search.
By default, this command is unbound.
+
+
history-search-backward ()
! -
Search backward through the history for the string of characters
between the start of the current line and the point. This
is a non-incremental search. By default, this command is unbound.
+
+
yank-nth-arg (M-C-y)
! -
Insert the first argument to the previous command (usually
the second word on the previous line) at point.
***************
*** 1185,1192 ****
in the previous command begin with word 0). A negative argument
inserts the nth word from the end of the previous command.
yank-last-arg (M-. or M-_)
! -
!
Insert last argument to the previous command (the last word of the
previous history entry). With an
--- 1310,1318 ----
in the previous command begin with word 0). A negative argument
inserts the nth word from the end of the previous command.
+
+
yank-last-arg (M-. or M-_)
! -
Insert last argument to the previous command (the last word of the
previous history entry). With an
***************
*** 1194,1246 ****
Successive calls to
yank-last-arg
move back through the history
list, inserting the last argument of each line in turn.
!
!
!
!
delete-char (C-d)
! -
!
Delete the character at point. If point is at the
beginning of the line, there are no characters in the line, and
the last character typed was not bound to
delete-char
, then
return EOF.
backward-delete-char (Rubout)
! -
!
Delete the character behind the cursor. A numeric argument means
to kill the characters instead of deleting them.
forward-backward-delete-char ()
! -
!
Delete the character under the cursor, unless the cursor is at the
end of the line, in which case the character behind the cursor is
deleted. By default, this is not bound to a key.
quoted-insert (C-q or C-v)
! -
!
Add the next character typed to the line verbatim. This is
how to insert key sequences like C-q, for example.
tab-insert (M-TAB)
! -
!
Insert a tab character.
!
self-insert (a, b, A, 1, !, ...)
! -
!
Insert yourself.
transpose-chars (C-t)
! -
!
Drag the character before the cursor forward over
the character at the cursor, moving the
--- 1320,1393 ----
Successive calls to
yank-last-arg
move back through the history
list, inserting the last argument of each line in turn.
+
+
!
!
!
!
! 1.4.3 Commands For Changing Text
!
!
!
delete-char (C-d)
! -
Delete the character at point. If point is at the
beginning of the line, there are no characters in the line, and
the last character typed was not bound to
delete-char
, then
return EOF.
+
+
backward-delete-char (Rubout)
! -
Delete the character behind the cursor. A numeric argument means
to kill the characters instead of deleting them.
+
+
forward-backward-delete-char ()
! -
Delete the character under the cursor, unless the cursor is at the
end of the line, in which case the character behind the cursor is
deleted. By default, this is not bound to a key.
+
+
quoted-insert (C-q or C-v)
! -
Add the next character typed to the line verbatim. This is
how to insert key sequences like C-q, for example.
+
+
tab-insert (M-TAB)
! -
Insert a tab character.
+
!
!
self-insert (a, b, A, 1, !, ...)
! -
Insert yourself.
+
+
transpose-chars (C-t)
! -
Drag the character before the cursor forward over
the character at the cursor, moving the
***************
*** 1249,1382 ****
transposes the last two characters of the line.
Negative arguments have no effect.
transpose-words (M-t)
! -
!
Drag the word before point past the word after point,
moving point past that word as well.
upcase-word (M-u)
! -
!
Uppercase the current (or following) word. With a negative argument,
uppercase the previous word, but do not move the cursor.
downcase-word (M-l)
! -
!
Lowercase the current (or following) word. With a negative argument,
lowercase the previous word, but do not move the cursor.
capitalize-word (M-c)
! -
!
Capitalize the current (or following) word. With a negative argument,
capitalize the previous word, but do not move the cursor.
!
!
!
kill-line (C-k)
! -
!
Kill the text from point to the end of the line.
backward-kill-line (C-x Rubout)
! -
!
Kill backward to the beginning of the line.
unix-line-discard (C-u)
! -
!
Kill backward from the cursor to the beginning of the current line.
kill-whole-line ()
! -
!
Kill all characters on the current line, no matter where point is.
By default, this is unbound.
kill-word (M-d)
! -
!
Kill from point to the end of the current word, or if between
words, to the end of the next word.
Word boundaries are the same as
forward-word
.
backward-kill-word (M-DEL)
! -
!
Kill the word behind point.
Word boundaries are the same as
backward-word
.
unix-word-rubout (C-w)
! -
!
Kill the word behind point, using white space as a word boundary.
The killed text is saved on the kill-ring.
delete-horizontal-space ()
! -
!
Delete all spaces and tabs around point. By default, this is unbound.
kill-region ()
! -
!
Kill the text in the current region.
By default, this command is unbound.
copy-region-as-kill ()
! -
!
Copy the text in the region to the kill buffer, so it can be yanked
right away. By default, this command is unbound.
copy-backward-word ()
! -
!
Copy the word before point to the kill buffer.
The word boundaries are the same as
backward-word
.
By default, this command is unbound.
copy-forward-word ()
! -
!
Copy the word following point to the kill buffer.
The word boundaries are the same as
forward-word
.
By default, this command is unbound.
yank (C-y)
! -
!
Yank the top of the kill ring into the buffer at point.
yank-pop (M-y)
! -
!
Rotate the kill-ring, and yank the new top. You can only do this if
the prior command is
yank
or yank-pop
.
!
!
!
! digit-argument (M-0, M-1, ... M--)
! -
!
Add this digit to the argument already accumulating, or start a new
argument. M-- starts a negative argument.
universal-argument ()
! -
!
This is another way to specify an argument.
If this command is followed by one or more digits, optionally with a
--- 1396,1579 ----
transposes the last two characters of the line.
Negative arguments have no effect.
+
+
transpose-words (M-t)
! -
Drag the word before point past the word after point,
moving point past that word as well.
+ If the insertion point is at the end of the line, this transposes
+ the last two words on the line.
+
+
upcase-word (M-u)
! -
Uppercase the current (or following) word. With a negative argument,
uppercase the previous word, but do not move the cursor.
+
+
downcase-word (M-l)
! -
Lowercase the current (or following) word. With a negative argument,
lowercase the previous word, but do not move the cursor.
+
+
capitalize-word (M-c)
! -
Capitalize the current (or following) word. With a negative argument,
capitalize the previous word, but do not move the cursor.
+
+
!
!
!
!
! 1.4.4 Killing And Yanking
!
!
+
kill-line (C-k)
! -
Kill the text from point to the end of the line.
+
+
backward-kill-line (C-x Rubout)
! -
Kill backward to the beginning of the line.
+
+
unix-line-discard (C-u)
! -
Kill backward from the cursor to the beginning of the current line.
+
+
kill-whole-line ()
! -
Kill all characters on the current line, no matter where point is.
By default, this is unbound.
+
+
kill-word (M-d)
! -
Kill from point to the end of the current word, or if between
words, to the end of the next word.
Word boundaries are the same as
forward-word
.
+
+
backward-kill-word (M-DEL)
! -
Kill the word behind point.
Word boundaries are the same as
backward-word
.
+
+
unix-word-rubout (C-w)
! -
Kill the word behind point, using white space as a word boundary.
The killed text is saved on the kill-ring.
+
+
delete-horizontal-space ()
! -
Delete all spaces and tabs around point. By default, this is unbound.
+
+
kill-region ()
! -
Kill the text in the current region.
By default, this command is unbound.
+
+
copy-region-as-kill ()
! -
Copy the text in the region to the kill buffer, so it can be yanked
right away. By default, this command is unbound.
+
+
copy-backward-word ()
! -
Copy the word before point to the kill buffer.
The word boundaries are the same as
backward-word
.
By default, this command is unbound.
+
+
copy-forward-word ()
! -
Copy the word following point to the kill buffer.
The word boundaries are the same as
forward-word
.
By default, this command is unbound.
+
+
yank (C-y)
! -
Yank the top of the kill ring into the buffer at point.
+
+
yank-pop (M-y)
! -
Rotate the kill-ring, and yank the new top. You can only do this if
the prior command is
yank
or yank-pop
.
+
!
!
!
!
! 1.4.5 Specifying Numeric Arguments
!
!
! digit-argument (M-0, M-1, ... M--)
! -
Add this digit to the argument already accumulating, or start a new
argument. M-- starts a negative argument.
+
+
universal-argument ()
! -
This is another way to specify an argument.
If this command is followed by one or more digits, optionally with a
***************
*** 1392,1423 ****
By default, this is not bound to a key.
!
!
!
!
complete (TAB)
! -
!
Attempt to perform completion on the text before point.
The actual completion performed is application-specific.
The default is filename completion.
possible-completions (M-?)
! -
!
List the possible completions of the text before point.
insert-completions (M-*)
! -
!
Insert all completions of the text before point that would have
been generated by
possible-completions
.
menu-complete ()
! -
!
Similar to
complete
, but replaces the word to be completed
with a single match from the list of possible completions.
--- 1589,1637 ----
By default, this is not bound to a key.
+
!
!
!
!
! 1.4.6 Letting Readline Type For You
!
!
!
complete (TAB)
! -
Attempt to perform completion on the text before point.
The actual completion performed is application-specific.
The default is filename completion.
+
+
possible-completions (M-?)
! -
List the possible completions of the text before point.
+
+
insert-completions (M-*)
! -
Insert all completions of the text before point that would have
been generated by
possible-completions
.
+
+
menu-complete ()
! -
Similar to
complete
, but replaces the word to be completed
with a single match from the list of possible completions.
***************
*** 1432,1439 ****
This command is intended to be bound to TAB, but is unbound
by default.
delete-char-or-list ()
! -
!
Deletes the character under the cursor if not at the beginning or
end of the line (like
delete-char
).
--- 1646,1654 ----
This command is intended to be bound to TAB, but is unbound
by default.
+
+
delete-char-or-list ()
! -
Deletes the character under the cursor if not at the beginning or
end of the line (like
delete-char
).
***************
*** 1441,1595 ****
possible-completions
.
This command is unbound by default.
!
!
!
start-kbd-macro (C-x ()
! -
!
Begin saving the characters typed into the current keyboard macro.
end-kbd-macro (C-x ))
! -
!
Stop saving the characters typed into the current keyboard macro
and save the definition.
call-last-kbd-macro (C-x e)
! -
!
Re-execute the last keyboard macro defined, by making the characters
in the macro appear as if typed at the keyboard.
!
!
!
re-read-init-file (C-x C-r)
! -
!
Read in the contents of the inputrc file, and incorporate
any bindings or variable assignments found there.
abort (C-g)
! -
!
Abort the current editing command and
ring the terminal's bell (subject to the setting of
bell-style
).
! do-uppercase-version (M-a, M-b, M-x, ...)
! -
!
If the metafied character x is lowercase, run the command
that is bound to the corresponding uppercase character.
prefix-meta (ESC)
! -
!
Metafy the next character typed. This is for keyboards
without a meta key. Typing `ESC f' is equivalent to typing
M-f.
undo (C-_ or C-x C-u)
! -
!
Incremental undo, separately remembered for each line.
revert-line (M-r)
! -
!
Undo all changes made to this line. This is like executing the
undo
command enough times to get back to the beginning.
tilde-expand (M-~)
! -
!
Perform tilde expansion on the current word.
set-mark (C-@)
! -
!
Set the mark to the point. If a
numeric argument is supplied, the mark is set to that position.
exchange-point-and-mark (C-x C-x)
! -
!
Swap the point with the mark. The current cursor position is set to
the saved position, and the old cursor position is saved as the mark.
character-search (C-])
! -
!
A character is read and point is moved to the next occurrence of that
character. A negative count searches for previous occurrences.
character-search-backward (M-C-])
! -
!
A character is read and point is moved to the previous occurrence
of that character. A negative count searches for subsequent
occurrences.
insert-comment (M-#)
! -
!
The value of the
comment-begin
variable is inserted at the beginning of the current line,
and the line is accepted as if a newline had been typed.
dump-functions ()
! -
!
Print all of the functions and their key bindings to the
Readline output stream. If a numeric argument is supplied,
the output is formatted in such a way that it can be made part
of an inputrc file. This command is unbound by default.
dump-variables ()
! -
!
Print all of the settable variables and their values to the
Readline output stream. If a numeric argument is supplied,
the output is formatted in such a way that it can be made part
of an inputrc file. This command is unbound by default.
dump-macros ()
! -
!
Print all of the Readline key sequences bound to macros and the
strings they output. If a numeric argument is supplied,
the output is formatted in such a way that it can be made part
of an inputrc file. This command is unbound by default.
!
!
!
!
While the Readline library does not have a full set of vi
editing functions, it does contain enough to allow simple editing
of the line. The Readline vi
mode behaves as specified in
the POSIX 1003.2 standard.
-
-
In order to switch interactively between emacs
and vi
editing modes, use the command M-C-j (bound to emacs-editing-mode
when in vi
mode and to vi-editing-mode in emacs
mode).
The Readline default is emacs
mode.
-
-
When you enter a line in vi
mode, you are already placed in
`insertion' mode, as if you had typed an `i'. Pressing ESC
--- 1656,1869 ----
possible-completions
.
This command is unbound by default.
+
+
!
!
!
!
! 1.4.7 Keyboard Macros
!
+
start-kbd-macro (C-x ()
! -
Begin saving the characters typed into the current keyboard macro.
+
+
end-kbd-macro (C-x ))
! -
Stop saving the characters typed into the current keyboard macro
and save the definition.
+
+
call-last-kbd-macro (C-x e)
! -
Re-execute the last keyboard macro defined, by making the characters
in the macro appear as if typed at the keyboard.
+
+
!
!
!
!
! 1.4.8 Some Miscellaneous Commands
!
+
re-read-init-file (C-x C-r)
! -
Read in the contents of the inputrc file, and incorporate
any bindings or variable assignments found there.
+
+
abort (C-g)
! -
Abort the current editing command and
ring the terminal's bell (subject to the setting of
bell-style
).
+
!
!
do-uppercase-version (M-a, M-b, M-x, ...)
! -
If the metafied character x is lowercase, run the command
that is bound to the corresponding uppercase character.
+
+
prefix-meta (ESC)
! -
Metafy the next character typed. This is for keyboards
without a meta key. Typing `ESC f' is equivalent to typing
M-f.
+
+
undo (C-_ or C-x C-u)
! -
Incremental undo, separately remembered for each line.
+
+
revert-line (M-r)
! -
Undo all changes made to this line. This is like executing the
undo
command enough times to get back to the beginning.
+
+
tilde-expand (M-~)
! -
Perform tilde expansion on the current word.
+
+
set-mark (C-@)
! -
Set the mark to the point. If a
numeric argument is supplied, the mark is set to that position.
+
+
exchange-point-and-mark (C-x C-x)
! -
Swap the point with the mark. The current cursor position is set to
the saved position, and the old cursor position is saved as the mark.
+
+
character-search (C-])
! -
A character is read and point is moved to the next occurrence of that
character. A negative count searches for previous occurrences.
+
+
character-search-backward (M-C-])
! -
A character is read and point is moved to the previous occurrence
of that character. A negative count searches for subsequent
occurrences.
+
+
insert-comment (M-#)
! -
The value of the
comment-begin
variable is inserted at the beginning of the current line,
and the line is accepted as if a newline had been typed.
+
+
dump-functions ()
! -
Print all of the functions and their key bindings to the
Readline output stream. If a numeric argument is supplied,
the output is formatted in such a way that it can be made part
of an inputrc file. This command is unbound by default.
+
+
dump-variables ()
! -
Print all of the settable variables and their values to the
Readline output stream. If a numeric argument is supplied,
the output is formatted in such a way that it can be made part
of an inputrc file. This command is unbound by default.
+
+
dump-macros ()
! -
Print all of the Readline key sequences bound to macros and the
strings they output. If a numeric argument is supplied,
the output is formatted in such a way that it can be made part
of an inputrc file. This command is unbound by default.
+
+
!
!
!
!
! [ < ] |
! [ > ] |
! | [ << ] |
! [ Up ] |
! [ >> ] |
! | | | | [Top] |
! [Contents] |
! [Index] |
! [ ? ] |
!
! 1.5 Readline vi Mode
!
+
While the Readline library does not have a full set of vi
editing functions, it does contain enough to allow simple editing
of the line. The Readline vi
mode behaves as specified in
the POSIX 1003.2 standard.
+
In order to switch interactively between emacs
and vi
editing modes, use the command M-C-j (bound to emacs-editing-mode
when in vi
mode and to vi-editing-mode in emacs
mode).
The Readline default is emacs
mode.
+
When you enter a line in vi
mode, you are already placed in
`insertion' mode, as if you had typed an `i'. Pressing ESC
***************
*** 1598,1608 ****
history lines with `k' and subsequent lines with `j', and
so forth.
!
-
- This document was generated on 16 April 2001 using the
- texi2html
- translator version 1.52.
--- 1872,2129 ----
history lines with `k' and subsequent lines with `j', and
so forth.
+
+
+
+
+
+ Table of Contents
+
+
+
+
+ Short Table of Contents
+
+ 1. Command Line Editing
+
+
+
+
+
+
+ About this document
+ This document was generated by Chet Ramey on October, 9 2001
+ using texi2html
+
+ The buttons in the navigation panels have the following meaning:
+
+
+
+ Button |
+ Name |
+ Go to |
+ From 1.2.3 go to |
+
+
+
+ [ < ] |
+
+ Back
+ |
+
+ previous section in reading order
+ |
+
+ 1.2.2
+ |
+
+
+
+ [ > ] |
+
+ Forward
+ |
+
+ next section in reading order
+ |
+
+ 1.2.4
+ |
+
+
+
+ [ << ] |
+
+ FastBack
+ |
+
+ previous or up-and-previous section
+ |
+
+ 1.1
+ |
+
+
+
+ [ Up ] |
+
+ Up
+ |
+
+ up section
+ |
+
+ 1.2
+ |
+
+
+
+ [ >> ] |
+
+ FastForward
+ |
+
+ next or up-and-next section
+ |
+
+ 1.3
+ |
+
+
+
+ [Top] |
+
+ Top
+ |
+
+ cover (top) of document
+ |
+
+
+ |
+
+
+
+ [Contents] |
+
+ Contents
+ |
+
+ table of contents
+ |
+
+
+ |
+
+
+
+ [Index] |
+
+ Index
+ |
+
+ concept index
+ |
+
+
+ |
+
+
+
+ [ ? ] |
+
+ About
+ |
+
+ this page
+ |
+
+
+ |
+
+
+
+ where the Example assumes that the current position
+ is at Subsubsection One-Two-Three of a document of
+ the following structure:
+
+ - 1. Section One
+
+ - 1.1 Subsection One-One
+
+ - 1.2 Subsection One-Two
+
+ - 1.2.1 Subsubsection One-Two-One
+
- 1.2.2 Subsubsection One-Two-Two
+
- 1.2.3 Subsubsection One-Two-Three
+ <== Current Position
+
- 1.2.4 Subsubsection One-Two-Four
+
+ - 1.3 Subsection One-Three
+
+ - 1.4 Subsection One-Four
+
+
!
!
!
! This document was generated
! by Chet Ramey on October, 9 2001
! using texi2html
diff -Nrc2 readline-4.2/doc/rluserman.info readline-4.2a/doc/rluserman.info
*** readline-4.2/doc/rluserman.info Tue Mar 6 13:37:34 2001
--- readline-4.2a/doc/rluserman.info Tue Oct 9 15:08:02 2001
***************
*** 233,237 ****
`M-'
! Kill from the cursor the start of the previous word, or, if between
words, to the start of the previous word. Word boundaries are the
same as those used by `M-b'.
--- 233,237 ----
`M-'
! 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'.
***************
*** 306,309 ****
--- 306,313 ----
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
***************
*** 420,423 ****
--- 424,431 ----
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
***************
*** 459,462 ****
--- 467,477 ----
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
***************
*** 579,589 ****
`\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
(one to three 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
--- 594,604 ----
`\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
***************
*** 929,933 ****
`transpose-words (M-t)'
Drag the word before point past the word after point, moving point
! past that word as well.
`upcase-word (M-u)'
--- 944,949 ----
`transpose-words (M-t)'
Drag the word before point past the word after point, moving point
! past that word as well. If the insertion point is at the end of
! the line, this transposes the last two words on the line.
`upcase-word (M-u)'
***************
*** 1186,1205 ****
Node: Readline Movement Commands6807
Node: Readline Killing Commands7765
! Node: Readline Arguments9676
! Node: Searching10713
! Node: Readline Init File12670
! Node: Readline Init File Syntax13732
! Node: Conditional Init Constructs23655
! Node: Sample Init File26181
! Node: Bindable Readline Commands29352
! Node: Commands For Moving30403
! Node: Commands For History31253
! Node: Commands For Text34112
! Node: Commands For Killing36100
! Node: Numeric Arguments38052
! Node: Commands For Completion39181
! Node: Keyboard Macros40714
! Node: Miscellaneous Commands41274
! Node: Readline vi Mode44068
End Tag Table
--- 1202,1221 ----
Node: Readline Movement Commands6807
Node: Readline Killing Commands7765
! Node: Readline Arguments9675
! Node: Searching10712
! Node: Readline Init File12856
! Node: Readline Init File Syntax13918
! Node: Conditional Init Constructs24369
! Node: Sample Init File26895
! Node: Bindable Readline Commands30066
! Node: Commands For Moving31117
! Node: Commands For History31967
! Node: Commands For Text34826
! Node: Commands For Killing36918
! Node: Numeric Arguments38870
! Node: Commands For Completion39999
! Node: Keyboard Macros41532
! Node: Miscellaneous Commands42092
! Node: Readline vi Mode44886
End Tag Table
diff -Nrc2 readline-4.2/doc/rluserman.ps readline-4.2a/doc/rluserman.ps
*** readline-4.2/doc/rluserman.ps Mon Apr 16 11:05:47 2001
--- readline-4.2a/doc/rluserman.ps Tue Oct 9 15:08:13 2001
***************
*** 9,13 ****
%DVIPSCommandLine: dvips -D 300 -t letter -o rluserman.ps rluserman.dvi
%DVIPSParameters: dpi=300, compressed
! %DVIPSSource: TeX output 2001.04.16:1105
%%BeginProcSet: texc.pro
%!
--- 9,13 ----
%DVIPSCommandLine: dvips -D 300 -t letter -o rluserman.ps rluserman.dvi
%DVIPSParameters: dpi=300, compressed
! %DVIPSSource: TeX output 2001.10.09:1508
%%BeginProcSet: texc.pro
%!
***************
*** 164,169 ****
1370EA68E0EA7FC0001FC8FC1D237F9720>I E
%EndDVIPSBitmapFont
! %DVIPSBitmapFont: Fc cmsl10 10.95 39
! /Fc 39 122 df45 D<1408140C141C143CA2147C147E149EA2EB
011EA21302801304A21308A20110138014071320A2EB7FFF90384007C0EB8003A2EA0100
A21202EC01E01206001F130339FF801FFE1F207F9F22>65 D<0007B5FC3900F803C09038
--- 164,169 ----
1370EA68E0EA7FC0001FC8FC1D237F9720>I E
%EndDVIPSBitmapFont
! %DVIPSBitmapFont: Fc cmsl10 10.95 40
! /Fc 40 122 df45 D<1408140C141C143CA2147C147E149EA2EB
011EA21302801304A21308A20110138014071320A2EB7FFF90384007C0EB8003A2EA0100
A21202EC01E01206001F130339FF801FFE1F207F9F22>65 D<0007B5FC3900F803C09038
***************
*** 178,237 ****
15C0380F00011407B612801E1F7E9E1F>I<0007B512F83900F800780178133815185B15
08A53901E00800A314181438EBFFF83803C0301410A491C7FC485AA648C8FC7FEAFFFC1D
! 1F7E9E1E>I<3807FF803800F8001378A25BA6485AA6485AA6485AA648C7FC7FEAFFF011
! 1F7E9E10>73 D<3A07FF803FE03A00F8001F000178130C5D4913205D5D4AC7FC14021408
! 48485A5C146014F013E1EBE4F83803C878EBD07CEBE03CEBC03E141E141F48487E811407
! 81140381380F00016D487E39FFF00FFE231F7E9E23>75 D<3807FFE0D800FCC7FC1378A2
! 5BA6485AA6485AA41580EC0100EA0780A25C14021406140E380F001E147CB512FC191F7E
! 9E1C>I78 DI<0007B5FC3900F803C090387800F015785B157CA41578484813F815F0EC01
! E0EC03C0EC0F00EBFFFCD803C0C7FCA6485AA648C8FC7FEAFFF81E1F7E9E1F>I<3807FF
! FE3900F8078090387801E0EC00F05B15F8A415F03801E00115E0EC03C0EC0780EC1E00EB
! FFF03803C03880141E140EA2140F48485AA51501D80F0013029038800F8239FFF8078CC7
! EA01F020207E9E22>82 DI<003FB512F0
! 383C078000301430126039400F0010A212C01280A3D8001E1300A65BA65BA65B7F383FFF
! E01C1F7A9E21>I<39FFF00FF8391F0003E06CEB01801400001EEB0100A6481302A6485B
! A600705BA25CA200785B1238001813C06C48C7FCEA0706EA01F81D20799E22>I<3BFFF0
! 7FF81FF03B1F000FC007C0001E903907800380001FED01006C1502140F5EEC17C002135B
! 142301805C000713435E14C3913883E0401481D981015B13C1D803C213E193C7FC13C415
! F2EBC80015F4EA01F015F85B5D5B15605B000014402C207A9E2F>87
! D97 D<1207123F120F7EA2120EA65A137CEA1D
! 83381E0180001C13C0EB00E05A14F0A5387001E0A214C013031480EB0700EAE80EEACC38
! EA83E014207B9F19>I<13FEEA0383380E0780121C0038130090C7FC12785AA45AA37E5B
! EA70026C5AEA1C18EA07E011147D9314>I<13F8EA070EEA0E07381C0380123812781270
! 12F0B5FC00F0C7FCA25AA46C5AEA7002EA3004EA1C18EA07E011147D9314>101
! DI<140EEB3E11EBE1A33801C1C2380381E0EA0780130112
! 0FA3380703C01480EB8700EA04FC48C7FCA21218121CEA0FFF14C014E0381800F0481330
! 5A5AA3006013606C13C0381C0700EA07FC181F809417>I105
! D<13E0120712011200A2485AA6485AEB81FCEB80F014C0EB81801400EA07045B13181338
! 137C131C120E7FA2130F7F1480EA1C03381E07C038FF8FF016207E9F18>107
! D<13E0120712011200A2EA01C0A6EA0380A6EA0700A6120EA65A121EEAFF800B207F9F0C
! >I<390387C07C391F9861863907A072073903C03403EB80380007EB7807EB0070A5000E
! EBE00EA64848485A001EEBE01E3AFFCFFCFFC022147E9326>I<38038F80381F90E0EA07
! A03803C0601380000713E01300A5380E01C0A6381C0380001E13C038FF8FF014147E9319
! >I<13FCEA0387380E0180381C00C04813E0A24813F012F0A438E001E0A214C0130300F0
! 138038700700EA380E6C5AEA07E014147D9317>IIIII<1380EA01
! 00A35A5A5A121EEAFFF8EA0E00A45AA65A1310A41320A2EA1840EA0F800D1C7C9B12>I<
! 381C0380EAFC1FEA3C07EA1C03A238380700A6EA700EA4131EA25BEA305E381F9F801114
! 7B9319>I<38FF83F8381E00E0001C13C01480121E380E01005B13025B12075BA25BEA03
! 9013A013E05B5B120190C7FC15147C9318>I<381FF0FF3803C0780001137014403800E0
! C0EBE180EB73001376133CA2131C132E134E1387EA0107380203801204380C01C0383C03
! E038FE07FC18147F9318>120 D<390FF83F803901E00E00EBC00C140813E000005B1430
! 14205C13705CA20171C7FC1339133A133E133C133813181310A25BA25BEA70C0EAF08000
! F1C8FC12E61278191D809318>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fd cmti10 10.95 8
--- 178,239 ----
15C0380F00011407B612801E1F7E9E1F>I<0007B512F83900F800780178133815185B15
08A53901E00800A314181438EBFFF83803C0301410A491C7FC485AA648C8FC7FEAFFFC1D
! 1F7E9E1E>I<3A07FF83FFC03A00F8007C000178133CA2495BA648485BA490B5FCEBE000
! 4848485AA64848485AA64848485A01807F39FFF07FF8221F7E9E22>72
! D<3807FF803800F8001378A25BA6485AA6485AA6485AA648C7FC7FEAFFF0111F7E9E10>
! I<3A07FF803FE03A00F8001F000178130C5D4913205D5D4AC7FC1402140848485A5C1460
! 14F013E1EBE4F83803C878EBD07CEBE03CEBC03E141E141F48487E81140781140381380F
! 00016D487E39FFF00FFE231F7E9E23>75 D<3807FFE0D800FCC7FC1378A25BA6485AA648
! 5AA41580EC0100EA0780A25C14021406140E380F001E147CB512FC191F7E9E1C>I78 DI<
! 0007B5FC3900F803C090387800F015785B157CA41578484813F815F0EC01E0EC03C0EC0F
! 00EBFFFCD803C0C7FCA6485AA648C8FC7FEAFFF81E1F7E9E1F>I<3807FFFE3900F80780
! 90387801E0EC00F05B15F8A415F03801E00115E0EC03C0EC0780EC1E00EBFFF03803C038
! 80141E140EA2140F48485AA51501D80F0013029038800F8239FFF8078CC7EA01F020207E
! 9E22>82 DI<003FB512F0383C07800030
! 1430126039400F0010A212C01280A3D8001E1300A65BA65BA65B7F383FFFE01C1F7A9E21
! >I<39FFF00FF8391F0003E06CEB01801400001EEB0100A6481302A6485BA600705BA25C
! A200785B1238001813C06C48C7FCEA0706EA01F81D20799E22>I<3BFFF07FF81FF03B1F
! 000FC007C0001E903907800380001FED01006C1502140F5EEC17C002135B142301805C00
! 0713435E14C3913883E0401481D981015B13C1D803C213E193C7FC13C415F2EBC80015F4
! EA01F015F85B5D5B15605B000014402C207A9E2F>87 D97 D<1207123F120F7EA2120EA65A137CEA1D83381E0180001C13C0EB00E05A14
! F0A5387001E0A214C013031480EB0700EAE80EEACC38EA83E014207B9F19>I<13FEEA03
! 83380E0780121C0038130090C7FC12785AA45AA37E5BEA70026C5AEA1C18EA07E011147D
! 9314>I<13F8EA070EEA0E07381C038012381278127012F0B5FC00F0C7FCA25AA46C5AEA
! 7002EA3004EA1C18EA07E011147D9314>101 DI<140EEB
! 3E11EBE1A33801C1C2380381E0EA07801301120FA3380703C01480EB8700EA04FC48C7FC
! A21218121CEA0FFF14C014E0381800F04813305A5AA3006013606C13C0381C0700EA07FC
! 181F809417>I105 D<13E0120712011200A2485AA6485AEB81FCEB
! 80F014C0EB81801400EA07045B13181338137C131C120E7FA2130F7F1480EA1C03381E07
! C038FF8FF016207E9F18>107 D<13E0120712011200A2EA01C0A6EA0380A6EA0700A612
! 0EA65A121EEAFF800B207F9F0C>I<390387C07C391F9861863907A072073903C03403EB
! 80380007EB7807EB0070A5000EEBE00EA64848485A001EEBE01E3AFFCFFCFFC022147E93
! 26>I<38038F80381F90E0EA07A03803C0601380000713E01300A5380E01C0A6381C0380
! 001E13C038FF8FF014147E9319>I<13FCEA0387380E0180381C00C04813E0A24813F012
! F0A438E001E0A214C0130300F0138038700700EA380E6C5AEA07E014147D9317>IIIII<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
***************
*** 768,774 ****
%%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
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
--- 770,776 ----
%%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 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
***************
*** 1004,1013 ****
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
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
--- 1006,1015 ----
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)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
***************
*** 1077,1084 ****
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
(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
(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
--- 1079,1086 ----
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 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
! 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
***************
*** 1087,1432 ****
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
(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
(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
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
%%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
(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
(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
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
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
(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
(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
(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
(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
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)
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
(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
(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
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
(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
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
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
(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
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
(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
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
(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
%%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
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)
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
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
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
(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
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
(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
(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
(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)
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
(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
%%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
(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
(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
(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
(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
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
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
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
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
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
(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
(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
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
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
%%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
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
(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)
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
(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)
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
(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
(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
(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
(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
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
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
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
(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
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
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
(\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
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
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.)
p eop
%%Page: 10 12
--- 1089,1450 ----
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
! 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 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 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 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)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
! 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 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
! 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 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
! 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 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 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
! 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 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
! 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
! 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
! 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 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
! 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 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 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
! 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 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 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 2493 y(w)o(ord)g
(completion.)21 b(The)15 b(default)h(is)f(`)p Fl(off)p
! 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(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 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
! 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
! 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 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
! 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
! 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
! 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 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 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
! 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
! 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 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
! 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
! 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
! 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 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 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 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 1997
y Fl(")p Fc(k)o(eyseq)q Fl(")p Fm(:)k Fc(function-name)e
! 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 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
! 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 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 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 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(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 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 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 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
! 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 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 2476 y(the)e(result)h
(of)f(tests.)k(There)c(are)g(four)g(parser)g(directiv)o(es)h(used.)75
! 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 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
! 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 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
! 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 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
! 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 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 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
! 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 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 2027 y(and)f(conditional)i(syn)o(tax.)
p eop
%%Page: 10 12
***************
*** 1606,1651 ****
(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
(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
(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
(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
(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
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
(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
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
(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)
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
(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
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
--- 1624,1672 ----
(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 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
! 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
! 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
! 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 959
y(sequences)f(lik)o(e)h Fg(C-q)p Fm(,)d(for)h(example.)75
! 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
! 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 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 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 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
! 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
diff -Nrc2 readline-4.2/doc/texi2dvi readline-4.2a/doc/texi2dvi
*** readline-4.2/doc/texi2dvi Mon Apr 27 12:00:44 1998
--- readline-4.2a/doc/texi2dvi Tue Sep 28 15:36:53 1999
***************
*** 1,7 ****
#! /bin/sh
! # texi2dvi --- smartly produce DVI files from texinfo sources
! # $Id: texi2dvi,v 0.8 1998/02/26 21:13:13 karl Exp $
#
! # Copyright (C) 1992, 93, 94, 95, 96, 97, 98 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
--- 1,7 ----
#! /bin/sh
! # texi2dvi --- produce DVI (or PDF) files from Texinfo (or LaTeX) sources.
! # $Id: texi2dvi,v 0.43 1999/09/28 19:36:53 karl Exp $
#
! # Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
***************
*** 20,324 ****
# Inc.; 59 Temple Place, Suite 330; Boston, MA 02111-1307, USA.
#
! # Commentary:
! #
! # Author: Noah Friedman
#
# Please send bug reports, etc. to bug-texinfo@gnu.org.
# If possible, please send a copy of the output of the script called with
# the `--debug' option when making a bug report.
- #
- # 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="'"
! usage="Usage: $0 [OPTION]... FILE...
! Run a Texinfo document through TeX.
! 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.
! The values of the TEX, TEXINDEX, and MAKEINFO environment variables are
! used to run those commands, if they are set.
! Email bug reports to bug-texinfo@gnu.org."
! # Initialize variables.
# 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=
clean=
debug=
! orig_pwd="`pwd`"
textra=
! verbose=false
! makeinfo="${MAKEINFO-makeinfo}"
! texindex="${TEXINDEX-texindex}"
! tex="${TEX-tex}"
# Save this so we can construct a new TEXINPUTS path for each file.
TEXINPUTS_orig="$TEXINPUTS"
! export TEXINPUTS
# 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
!
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
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 ;;
esac
done
! # 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."
exit 2
fi
test "$debug" = t && set -x
! # 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
# 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
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
! # Source file might @include additional texinfo 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}"
! # Expand macro commands in the original source file using Makeinfo;
! # the macro syntax bfox implemented is impossible to implement in TeX.
# 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
$verbose "Reverting to $command_line_filename ..."
! cp -p $command_line_filename $filename_tmp
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."
sed '/^@setfilename/a\
! '"$textra" $filename_input >$filename_tmp2
! filename_input=$filename_tmp2
! dirname_input=$tmp_dir2
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`
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}"
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=
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}"
break
fi
--- 20,538 ----
# Inc.; 59 Temple Place, Suite 330; Boston, MA 02111-1307, USA.
#
! # Original author: Noah Friedman .
#
# Please send bug reports, etc. to bug-texinfo@gnu.org.
# If possible, please send a copy of the output of the script called with
# the `--debug' option when making a bug report.
# This string is expanded by rcs automatically when this file is checked out.
! rcs_revision='$Revision: 0.43 $'
! rcs_version=`set - $rcs_revision; echo $2`
! program=`echo $0 | sed -e 's!.*/!!'`
! version="texi2dvi (GNU Texinfo 4.0) $rcs_version
!
! Copyright (C) 1999 Free Software Foundation, Inc.
! There is NO warranty. You may redistribute this software
! under the terms of the GNU General Public License.
! For more information about these matters, see the files named COPYING."
! usage="Usage: $program [OPTION]... FILE...
! Run each Texinfo or LaTeX FILE through TeX in turn until all
! cross-references are resolved, building all indices. The directory
! containing each FILE is searched for included files. The suffix of FILE
! is used to determine its language (LaTeX or Texinfo).
! Makeinfo is used to perform Texinfo macro expansion before running TeX
! when needed.
! Options:
! -@ Use @input instead of \input; for preloaded Texinfo.
! -b, --batch No interaction.
! -c, --clean Remove all auxiliary files.
! -D, --debug Turn on shell debugging (set -x).
! -e, --expand Force macro expansion using makeinfo.
! -I DIR Search DIR for Texinfo files.
! -h, --help Display this help and exit successfully.
! -l, --language=LANG Specify the LANG of FILE: LaTeX or Texinfo.
! -p, --pdf Use pdftex or pdflatex for processing.
! -q, --quiet No output unless errors (implies --batch).
! -s, --silent Same as --quiet.
! -t, --texinfo=CMD Insert CMD after @setfilename in copy of input file.
! Multiple values accumulate.
! -v, --version Display version information and exit successfully.
! -V, --verbose Report on what is done.
!
! The values of the BIBTEX, LATEX (or PDFLATEX), MAKEINDEX, MAKEINFO,
! TEX (or PDFTEX), and TEXINDEX environment variables are used to run
! those commands, if they are set.
! Email bug reports to ,
! general questions and discussion to ."
! # Initialize variables for option overriding and otherwise.
# Don't use `unset' since old bourne shells don't have this command.
# Instead, assign them an empty value.
! escape='\'
! batch=false # eval for batch mode
clean=
debug=
! expand= # t for expansion via makeinfo
! oformat=dvi
! set_language=
! miincludes= # makeinfo include path
textra=
! tmpdir=${TMPDIR:-/tmp}/t2d$$ # avoid collisions on 8.3 filesystems.
! txincludes= # TEXINPUTS extensions
! txiprereq=19990129 # minimum texinfo.tex version to have macro expansion
! quiet= # by default let the tools' message be displayed
! verbose=false # echo for verbose mode
!
! orig_pwd=`pwd`
!
! # Systems which define $COMSPEC or $ComSpec use semicolons to separate
! # directories in TEXINPUTS.
! if test -n "$COMSPEC$ComSpec"; then
! path_sep=";"
! else
! path_sep=":"
! fi
# Save this so we can construct a new TEXINPUTS path for each file.
TEXINPUTS_orig="$TEXINPUTS"
! # Unfortunately makeindex does not read TEXINPUTS.
! INDEXSTYLE_orig="$INDEXSTYLE"
! export TEXINPUTS INDEXSTYLE
!
! # Push a token among the arguments that will be used to notice when we
! # ended options/arguments parsing.
! # Use "set dummy ...; shift" rather than 'set - ..." because on
! # Solaris set - turns off set -x (but keeps set -e).
! # Use ${1+"$@"} rather than "$@" because Digital Unix and Ultrix 4.3
! # still expand "$@" to a single argument (the empty string) rather
! # than nothing at all.
! arg_sep="$$--$$"
! set dummy ${1+"$@"} "$arg_sep"; shift
+ #
# Parse command line arguments.
! while test x"$1" != x"$arg_sep"; do
!
! # Handle --option=value by splitting apart and putting back on argv.
case "$1" in
! --*=*)
! opt=`echo "$1" | sed -e 's/=.*//'`
! val=`echo "$1" | sed -e 's/[^=]*=//'`
shift
! set dummy "$opt" "$val" ${1+"$@"}; shift
! ;;
! esac
!
! # This recognizes --quark as --quiet. So what.
! case "$1" in
! -@ ) escape=@;;
! # Silently and without documentation accept -b and --b[atch] as synonyms.
! -b | --b*) batch=eval;;
! -q | -s | --q* | --s*) quiet=t; batch=eval;;
! -c | --c*) clean=t;;
! -D | --d*) debug=t;;
! -e | --e*) expand=t;;
! -h | --h*) echo "$usage"; exit 0;;
! -I | --I*)
! shift
! miincludes="$miincludes -I $1"
! txincludes="$txincludes$path_sep$1"
! ;;
! -l | --l*) shift; set_language=$1;;
! -p | --p*) oformat=pdf;;
! -t | --t*) shift; textra="$textra\\
! $1";;
! -v | --vers*) echo "$version"; exit 0;;
! -V | --verb*) verbose=echo;;
! --) # What remains are not options.
! shift
! while test x"$1" != x"$arg_sep"; do
! set dummy ${1+"$@"} "$1"; shift
! shift
! done
! break;;
! -*)
! echo "$0: Unknown or ambiguous option \`$1'." >&2
! echo "$0: Try \`--help' for more information." >&2
! exit 1;;
! *) set dummy ${1+"$@"} "$1"; shift;;
esac
+ shift
done
+ # Pop the token
+ shift
! # Interpret remaining command line args as filenames.
! if test $# = 0; then
! echo "$0: Missing file arguments." >&2
! echo "$0: Try \`--help' for more information." >&2
exit 2
fi
+ # Prepare the temporary directory. Remove it at exit, unless debugging.
+ if test -z "$debug"; then
+ trap "cd / && rm -rf $tmpdir" 0 1 2 15
+ fi
+
+ # Create the temporary directory with strict rights
+ (umask 077 && mkdir $tmpdir) || exit 1
+
+ # Prepare the tools we might need. This may be extra work in some
+ # cases, but improves the readibility of the script.
+ utildir=$tmpdir/utils
+ mkdir $utildir || exit 1
+
+ # A sed script that preprocesses Texinfo sources in order to keep the
+ # iftex sections only. We want to remove non TeX sections, and
+ # comment (with `@c texi2dvi') TeX sections so that makeinfo does not
+ # try to parse them. Nevertheless, while commenting TeX sections,
+ # don't comment @macro/@end macro so that makeinfo does propagate
+ # them. Unfortunately makeinfo --iftex --no-ifhtml --no-ifinfo
+ # doesn't work well enough (yet) to use that, so work around with sed.
+ comment_iftex_sed=$utildir/comment.sed
+ cat <$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 <$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.
!
for command_line_filename in ${1+"$@"}; do
$verbose "Processing $command_line_filename ..."
! # If the COMMAND_LINE_FILENAME is not absolute (e.g., --debug.tex),
! # prepend `./' in order to avoid that the tools take it as an option.
! echo "$command_line_filename" | egrep '^(/|[A-z]:/)' >/dev/null \
! || command_line_filename="./$command_line_filename"
!
! # See if the file exists. If it doesn't we're in trouble since, even
# though the user may be able to reenter a valid filename at the tex
# prompt (assuming they're attending the terminal), this script won't
! # be able to find the right xref files and so forth.
! if test ! -r "$command_line_filename"; then
! echo "$0: Could not read $command_line_filename, skipping." >&2
continue
fi
! # Get the name of the current directory. We want the full path
! # because in clean mode we are in tmp, in which case a relative
! # path has no meaning.
! filename_dir=`echo $command_line_filename | sed 's!/[^/]*$!!;s!^$!.!'`
! filename_dir=`cd "$filename_dir" >/dev/null && pwd`
!
! # Strip directory part but leave extension.
! filename_ext=`basename "$command_line_filename"`
! # Strip extension.
! filename_noext=`echo "$filename_ext" | sed 's/\.[^.]*$//'`
! ext=`echo "$filename_ext" | sed 's/^.*\.//'`
!
! # _src. Use same basename since we want to generate aux files with
! # the same basename as the manual. If --expand, then output the
! # macro-expanded file to here, else copy the original file.
! tmpdir_src=$tmpdir/src
! filename_src=$tmpdir_src/$filename_noext.$ext
!
! # _xtr. The file with the user's extra commands.
! tmpdir_xtr=$tmpdir/xtr
! filename_xtr=$tmpdir_xtr/$filename_noext.$ext
!
! # _bak. Copies of the previous xref files (another round is run if
! # they differ from the new one).
! tmpdir_bak=$tmpdir/bak
!
! # Make all those directories and give up if we can't succeed.
! mkdir $tmpdir_src $tmpdir_xtr $tmpdir_bak || exit 1
! # Source file might include additional sources. Put `.' and
# directory where source file(s) reside in TEXINPUTS before anything
! # else. `.' goes first to ensure that any old .aux, .cps,
! # etc. files in ${directory} don't get used in preference to fresher
! # files in `.'. Include orig_pwd in case we are in clean mode, where
! # we've cd'd to a temp directory.
! common=".$path_sep$orig_pwd$path_sep$filename_dir$path_sep$txincludes$path_sep"
! TEXINPUTS="$common$TEXINPUTS_orig"
! INDEXSTYLE="$common$INDEXSTYLE_orig"
!
! # If the user explicitly specified the language, use that.
! # Otherwise, if the first line is \input texinfo, assume it's texinfo.
! # Otherwise, guess from the file extension.
! if test -n "$set_language"; then
! language=$set_language
! elif sed 1q "$command_line_filename" | fgrep 'input texinfo' >/dev/null; then
! language=texinfo
! else
! language=
! fi
!
! # Get the type of the file (latex or texinfo) from the given language
! # we just guessed, or from the file extension if not set yet.
! case ${language:-$filename_ext} in
! [lL]a[tT]e[xX] | *.ltx | *.tex)
! # Assume a LaTeX file. LaTeX needs bibtex and uses latex for
! # compilation. No makeinfo.
! bibtex=${BIBTEX:-bibtex}
! makeinfo= # no point in running makeinfo on latex source.
! texindex=${MAKEINDEX:-makeindex}
! if test $oformat = dvi; then
! tex=${LATEX:-latex}
! else
! tex=${PDFLATEX:-pdflatex}
! fi
! ;;
! *)
! # Assume a Texinfo file. Texinfo files need makeinfo, texindex and tex.
! bibtex=
! texindex=${TEXINDEX:-texindex}
! if test $oformat = dvi; then
! tex=${TEX:-tex}
! else
! tex=${PDFTEX:-pdftex}
! fi
! # Unless required by the user, makeinfo expansion is wanted only
! # if texinfo.tex is too old.
! if test "$expand" = t; then
! makeinfo=${MAKEINFO:-makeinfo}
! else
! # Check if texinfo.tex performs macro expansion by looking for
! # its version. The version is a date of the form YEAR-MO-DA.
! # We don't need to use [0-9] to match the digits since anyway
! # the comparison with $txiprereq, a number, will fail with non
! # digits.
! txiversion_tex=txiversion.tex
! echo '\input texinfo.tex @bye' >$tmpdir/$txiversion_tex
! # Run in the tmpdir to avoid leaving files.
! eval `cd $tmpdir >/dev/null \
! && $tex $txiversion_tex 2>/dev/null \
! | sed -n 's/^.*\[\(.*\)version \(....\)-\(..\)-\(..\).*$/txiformat=\1 txiversion="\2\3\4"/p'`
! $verbose "texinfo.tex preloaded as \`$txiformat', version is \`$txiversion' ..."
! if test "$txiprereq" -le "$txiversion" >/dev/null 2>&1; then
! makeinfo=
! else
! makeinfo=${MAKEINFO:-makeinfo}
! fi
! # As long as we had to run TeX, offer the user this convenience
! if test "$txiformat" = Texinfo; then
! escape=@
! fi
! fi
! ;;
! esac
!
! # Expand macro commands in the original source file using Makeinfo.
# Always use `end' footnote style, since the `separate' style
# generates different output (arguably this is a bug in -E).
# Discard main info output, the user asked to run TeX, not makeinfo.
! if test -n "$makeinfo"; then
! $verbose "Macro-expanding $command_line_filename to $filename_src ..."
! sed -f $comment_iftex_sed "$command_line_filename" \
! | $makeinfo --footnote-style=end -I "$filename_dir" $miincludes \
! -o /dev/null --macro-expand=- \
! | sed -f $uncomment_iftex_sed >"$filename_src"
! filename_input=$filename_src
! fi
!
! # If makeinfo failed (or was not even run), use the original file as input.
! if test $? -ne 0 \
! || test ! -r "$filename_src"; then
$verbose "Reverting to $command_line_filename ..."
! filename_input=$filename_dir/$filename_ext
fi
# Used most commonly for @finalout, @smallbook, etc.
if test -n "$textra"; then
! $verbose "Inserting extra commands: $textra"
sed '/^@setfilename/a\
! '"$textra" "$filename_input" >$filename_xtr
! filename_input=$filename_xtr
fi
# If clean mode was specified, then move to the temporary directory.
if test "$clean" = t; then
! $verbose "cd $tmpdir_src"
! cd "$tmpdir_src" || exit 1
fi
! while :; do # will break out of loop below
! orig_xref_files=`$get_xref_files "$filename_noext"`
!
! # Save copies of originals for later comparison.
! if test -n "$orig_xref_files"; then
! $verbose "Backing up xref files: `echo $orig_xref_files | sed 's|\./||g'`"
! cp $orig_xref_files $tmpdir_bak
! fi
!
! # Run bibtex on current file.
! # - If its input (AUX) exists.
! # - If AUX contains both `\bibdata' and `\bibstyle'.
! # - If some citations are missing (LOG contains `Citation').
! # or the LOG complains of a missing .bbl
! #
! # We run bibtex first, because I can see reasons for the indexes
! # to change after bibtex is run, but I see no reason for the
! # converse.
! #
! # Don't try to be too smart. Running bibtex only if the bbl file
! # exists and is older than the LaTeX file is wrong, since the
! # document might include files that have changed. Because there
! # can be several AUX (if there are \include's), but a single LOG,
! # looking for missing citations in LOG is easier, though we take
! # the risk to match false messages.
! if test -n "$bibtex" \
! && test -r "$filename_noext.aux" \
! && test -r "$filename_noext.log" \
! && (grep '^\\bibdata[{]' "$filename_noext.aux" \
! && grep '^\\bibstyle[{]' "$filename_noext.aux" \
! && (grep 'Warning:.*Citation.*undefined' "$filename_noext.log" \
! || grep 'No file .*\.bbl\.' "$filename_noext.log")) \
! >/dev/null 2>&1; \
! then
! $verbose "Running $bibtex $filename_noext ..."
! if $bibtex "$filename_noext" >&5; then :; else
! echo "$0: $bibtex exited with bad status, quitting." >&2
! exit 1
! fi
! fi
!
! # What we'll run texindex on -- exclude non-index files.
! # Since we know index files are last, it is correct to remove everything
! # before .aux and .?o?.
! index_files=`echo "$orig_xref_files" \
! | sed "s!.*\.aux!!g;
! s!./$filename_noext\..o.!!g;
! s/^[ ]*//;s/[ ]*$//"`
! # Run texindex (or makeindex) on current index files. If they
! # already exist, and after running TeX a first time the index
! # files don't change, then there's no reason to run TeX again.
! # But we won't know that if the index files are out of date or
! # nonexistent.
! if test -n "$texindex" && test -n "$index_files"; then
! $verbose "Running $texindex $index_files ..."
! if $texindex $index_files 2>&5 1>&2; then :; else
! echo "$0: $texindex exited with bad status, quitting." >&2
! exit 1
fi
fi
# Finally, run TeX.
! # Prevent $ESCAPE from being interpreted by the shell if it happens
! # to be `/'.
! $batch tex_args="\\${escape}nonstopmode\ \\${escape}input"
! $verbose "Running $cmd ..."
! cmd="$tex $tex_args $filename_input"
! if $cmd >&5; then :; else
! echo "$0: $tex exited with bad status, quitting." >&2
! echo "$0: see $filename_noext.log for errors." >&2
! test "$clean" = t \
! && cp "$filename_noext.log" "$orig_pwd"
! exit 1
fi
!
!
! # Decide if looping again is needed.
! finished=t
!
! # LaTeX (and the package changebar) report in the LOG file if it
! # should be rerun. This is needed for files included from
! # subdirs, since texi2dvi does not try to compare xref files in
! # subdirs. Performing xref files test is still good since LaTeX
! # does not report changes in xref files.
! if fgrep "Rerun to get" "$filename_noext.log" >/dev/null 2>&1; then
! finished=
! fi
!
! # Check if xref files changed.
! new_xref_files=`$get_xref_files "$filename_noext"`
! $verbose "Original xref files = `echo $orig_xref_files | sed 's|\./||g'`"
! $verbose "New xref files = `echo $new_xref_files | sed 's|\./||g'`"
!
! # If old and new lists don't at least have the same file list,
! # then one file or another has definitely changed.
! test "x$orig_xref_files" != "x$new_xref_files" && finished=
!
! # File list is the same. We must compare each file until we find
! # a difference.
! if test -n "$finished"; then
! for this_file in $new_xref_files; do
! $verbose "Comparing xref file `echo $this_file | sed 's|\./||g'` ..."
! # cmp -s returns nonzero exit status if files differ.
! if cmp -s "$this_file" "$tmpdir_bak/$this_file"; then :; else
! # We only need to keep comparing until we find one that
! # differs, because we'll have to run texindex & tex again no
! # matter how many more there might be.
! finished=
! $verbose "xref file `echo $this_file | sed 's|\./||g'` differed ..."
! test "$debug" = t && diff -c "$tmpdir_bak/$this_file" "$this_file"
break
fi
***************
*** 326,339 ****
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
done
# If we were in clean mode, compilation was in a tmp directory.
! # Copy the DVI 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
--- 540,549 ----
fi
! # If finished, exit the loop, else rerun the loop.
! test -n "$finished" && break
done
# If we were in clean mode, compilation was in a tmp directory.
! # Copy the DVI (or PDF) file into the directory where the compilation
# has been done. (The temp dir is about to get removed anyway.)
# We also return to the original directory so that
***************
*** 341,362 ****
# - 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
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
fi
done
$verbose "$0 done."
! true # exit successfully.
--- 551,568 ----
# - the temporary file can be removed
if test -n "$clean"; then
! $verbose "Copying $oformat file from `pwd` to $orig_pwd"
! cp -p "./$filename_noext.$oformat" "$orig_pwd"
! cd / # in case $orig_pwd is on a different drive (for DOS)
cd $orig_pwd || exit 1
fi
! # Remove temporary files.
! if test "x$debug" = "x"; then
! $verbose "Removing $tmpdir_src $tmpdir_xtr $tmpdir_bak ..."
! cd /
! rm -rf $tmpdir_src $tmpdir_xtr $tmpdir_bak
fi
done
$verbose "$0 done."
! exit 0 # exit successfully, not however we ended the loop.
diff -Nrc2 readline-4.2/doc/texi2html readline-4.2a/doc/texi2html
*** readline-4.2/doc/texi2html Mon Apr 27 12:05:31 1998
--- readline-4.2a/doc/texi2html Fri Oct 5 14:30:15 2001
***************
*** 1,18 ****
! #!/usr/local/bin/perl
'di ';
'ig 00 ';
#+##############################################################################
! # #
! # File: texi2html #
! # #
! # Description: Program to transform most Texinfo documents to HTML #
! # #
#-##############################################################################
! # @(#)texi2html 1.52 01/05/98 Written (mainly) by Lionel Cons, Lionel.Cons@cern.ch
# 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.
#+++############################################################################
--- 1,1732 ----
! #! /usr/bin/perl
'di ';
'ig 00 ';
#+##############################################################################
! #
! # texi2html: Program to transform Texinfo documents to HTML
! #
! # Copyright (C) 1999, 2000 Free Software Foundation, Inc.
! #
! # This program is free software; you can redistribute it and/or modify
! # it under the terms of the GNU General Public License as published by
! # the Free Software Foundation; either version 2 of the License, or
! # (at your option) any later version.
! #
! # This program is distributed in the hope that it will be useful,
! # but WITHOUT ANY WARRANTY; without even the implied warranty of
! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! # GNU General Public License for more details.
! #
! # You should have received a copy of the GNU General Public License
! # along with this program; if not, write to the Free Software
! # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
! #
#-##############################################################################
! # This requires perl version 5 or higher
! require 5.0;
!
! #++##############################################################################
! #
! # NOTE FOR DEBUGGING THIS SCRIPT:
! # You can run 'perl texi2html.pl' directly, provided you have
! # the environment variable T2H_HOME set to the directory containing
! # the texi2html.init file
! #
! #--##############################################################################
!
! # CVS version:
! # $Id: texi2html.pl,v 1.55 2000/07/27 14:39:41 obachman Exp $
!
! # Homepage:
! $T2H_HOMEPAGE = < (original author)
! Karl Berry
! Olaf Bachmann
! and many others.
! Maintained by: Olaf Bachmann
! Send bugs and suggestions to
! EOT
+ # Version: set in configure.in
+ $THISVERSION = '1.64';
+ $THISPROG = "texi2html $THISVERSION"; # program name and version
+
# The man page for this program is included at the end of this file and can be
# viewed using the command 'nroff -man texi2html'.
!
! # Identity:
!
! $T2H_TODAY = &pretty_date; # like "20 September 1993"
! # the eval prevents this from breaking on system which do not have
! # a proper getpwuid implemented
! eval { ($T2H_USER = (getpwuid ($<))[6]) =~ s/,.*//;}; # Who am i
!
! #+++############################################################################
! # #
! # Initialization #
! # Pasted content of File $(srcdir)/texi2html.init: Default initializations #
! # #
! #---############################################################################
!
! # leave this within comments, and keep the require statement
! # This way, you can directly run texi2html.pl, if $ENV{T2H_HOME}/texi2html.init
! # exists.
!
! #
! # -*-perl-*-
! ######################################################################
! # File: texi2html.init
! #
! # Sets default values for command-line arguments and for various customizable
! # procedures
! #
! # A copy of this file is pasted into the beginning of texi2html by
! # 'make texi2html'
! #
! # Copy this file and make changes to it, if you like.
! # Afterwards, either, load it with command-line option -init_file
! #
! # $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 = '';
! $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 = ' ';
! $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, .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 .html',
! };
!
!
! # -toc_file
! # uses file of this name for table of contents file
! # extension is manipulated appropriately, if necessary.
! # If empty, _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 _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 ',
! };
!
! # -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 |
! $T2H_EXAMPLE_INDENT_CELL = ' | ';
! # same as above, only for @small
! $T2H_SMALL_EXAMPLE_INDENT_CELL = ' | ';
! # 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->{}->{} = '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' => 'Über dieses Dokument',
! 'Footnotes_Title' => 'Fuß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' => 'índice General',
! 'Overview_Title' => 'Resumen del Contenido',
! 'Index_Title' => 'Index', #Not sure ;-)
! 'About_Title' => 'No translation available!', #No translation available!
! 'Footnotes_Title' => 'Fußnoten',
! 'See' => 'Véase',
! 'see' => 'véase',
! 'section' => 'secció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ário',
! 'Overview_Title' => 'Breve Sumário',
! 'Index_Title' => 'Índice', #Not sure ;-)
! 'About_Title' => 'No translation available!', #No translation available!
! 'Footnotes_Title' => 'No translation available!',
! 'See' => 'Veja',
! 'see' => 'veja',
! 'section' => 'Seçã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ä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ç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_* routines,
! # give them another name, and assign them to the respective
! # $T2H_ 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 '
' . "\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 "$T2H_NAME{Top}
"
! 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
! "\n" .
! join("
\n", split(/\n/, $T2H_THISDOC{fulltitle})) .
! "
\n";
! print $fh "$T2H_THISDOC{subtitle}
\n" if $T2H_THISDOC{subtitle};
! print $fh "$T2H_THISDOC{author}\n" if $T2H_THISDOC{author};
! print $fh <
!
!
! Overview:
!
! EOT
! t2h_print_lines($fh, $T2H_OVERVIEW);
! print $fh "
\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 "$T2H_NAME{This}
\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
\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
! ###$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
! $T2H_AFTER_BODY_OPEN = '';
! #text inserted before
! $T2H_PRE_BODY_CLOSE = '';
! # this is used in footer
! $T2H_ADDRESS = "by $T2H_USER " if $T2H_USER;
! $T2H_ADDRESS .= "on $T2H_TODAY";
! # this is added inside after and some META NAME stuff
! # can be used for