From f7a382fd09319b20ef4435b9b554183b605468c1 Mon Sep 17 00:00:00 2001 From: Chet Ramey Date: Mon, 26 Sep 2022 11:53:27 -0400 Subject: readline-8.2 distribution sources and documentation --- CHANGELOG | 47 +- CHANGES | 124 +- INSTALL | 46 +- MANIFEST | 10 +- Makefile.in | 8 +- NEWS | 61 +- README | 4 +- aclocal.m4 | 891 ++-- bind.c | 169 +- callback.c | 22 +- chardefs.h | 31 +- colors.c | 23 +- compat.c | 22 +- complete.c | 96 +- config.h.in | 27 +- configure | 5728 ++++++++++++++---------- configure.ac | 78 +- display.c | 132 +- doc/Makefile.in | 11 +- doc/history.0 | 2 +- doc/history.3 | 2 +- doc/history.dvi | Bin 72252 -> 72280 bytes doc/history.html | 3033 +++++-------- doc/history.info | 56 +- doc/history.pdf | Bin 204488 -> 204504 bytes doc/history.ps | 57 +- doc/history.texi | 2 +- doc/history_3.ps | 8 +- doc/hstech.texi | 2 +- doc/hsuser.texi | 22 +- doc/readline.0 | 591 +-- doc/readline.3 | 99 +- doc/readline.dvi | Bin 323600 -> 333112 bytes doc/readline.html | 10391 +++++++++++++++++++------------------------ doc/readline.info | 533 ++- doc/readline.pdf | Bin 398680 -> 406480 bytes doc/readline.ps | 5922 ++++++++++++------------ doc/readline_3.ps | 1992 +++++---- doc/rlman.texi | 2 +- doc/rltech.texi | 96 +- doc/rluser.texi | 110 +- doc/rluserman.dvi | Bin 114812 -> 118796 bytes doc/rluserman.html | 4198 ++++++++--------- doc/rluserman.info | 168 +- doc/rluserman.pdf | Bin 232909 -> 237019 bytes doc/rluserman.ps | 3317 +++++++------- doc/rluserman.texi | 2 +- doc/texi2dvi | 0 doc/texi2html | 0 doc/version.texi | 13 +- examples/Makefile.in | 11 +- examples/excallback.c | 4 + examples/fileman.c | 2 +- examples/rl-callbacktest.c | 4 +- examples/rl-test-timeout | 6 + examples/rl-timeout.c | 245 + examples/rl.c | 8 + examples/rlbasic.c | 8 + examples/rlcat.c | 8 + examples/rlevent.c | 8 + examples/rlptytest.c | 11 +- examples/rltest.c | 8 + funmap.c | 6 +- histexpand.c | 45 +- histfile.c | 14 +- histlib.h | 11 +- history.c | 13 +- history.h | 79 +- history.pc.in | 11 + histsearch.c | 6 +- input.c | 321 +- isearch.c | 25 +- keymaps.h | 18 +- kill.c | 46 +- m4/codeset.m4 | 24 + macro.c | 2 + mbutil.c | 36 +- misc.c | 68 +- nls.c | 96 +- parens.c | 8 +- patchlevel | 2 +- posixdir.h | 2 +- posixtime.h | 84 + readline.c | 119 +- readline.h | 603 +-- rldefs.h | 8 +- rlmbutil.h | 38 +- rlprivate.h | 326 +- rlshell.h | 12 +- rltty.c | 40 +- rltypedefs.h | 56 +- search.c | 90 +- shell.c | 4 +- signals.c | 73 +- support/config.guess | 1272 +++--- support/config.rpath | 0 support/config.sub | 111 +- support/install.sh | 0 support/mkdirs | 0 support/mkdist | 13 +- support/mkinstalldirs | 0 support/shlib-install | 0 support/shobj-conf | 12 +- terminal.c | 110 +- text.c | 38 +- tilde.h | 22 +- undo.c | 6 +- util.c | 7 +- vi_mode.c | 123 +- xmalloc.h | 8 +- 110 files changed, 21548 insertions(+), 20931 deletions(-) mode change 100755 => 100644 doc/texi2dvi mode change 100755 => 100644 doc/texi2html create mode 100644 examples/rl-test-timeout create mode 100644 examples/rl-timeout.c create mode 100644 history.pc.in create mode 100644 m4/codeset.m4 create mode 100644 posixtime.h mode change 100755 => 100644 support/config.guess mode change 100755 => 100644 support/config.rpath mode change 100755 => 100644 support/config.sub mode change 100755 => 100644 support/install.sh mode change 100755 => 100644 support/mkdirs mode change 100755 => 100644 support/mkdist mode change 100755 => 100644 support/mkinstalldirs mode change 100755 => 100644 support/shlib-install diff --git a/CHANGELOG b/CHANGELOG index 5c24e91..b2fcb53 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,4 +1,4 @@ -\[Readline-specific changelog. Descriptions of changes to the source are +[Readline-specific changelog. Descriptions of changes to the source are found in the bash changelog.] 6/9 @@ -1403,3 +1403,48 @@ configure.ac INSTALL - document new --enable-bracketed-paste-default configure option + + 12/4 + ---- +[readline-8.1 frozen] + + 8/17/2021 + --------- +configure.ac + - use `:+' when testing the value of $GCC, since autoconf seems to + set it to the empty string if gcc isn't the compiler. Reported by + Osipov, Michael (LDA IT PLM) + + 9/2 + --- +configure.ac + - AC_HELP_STRING -> AS_HELP_STRING + - AC_OUTPUT: split into AC_CONFIG_FILES and AC_CONFIG_COMMANDS, call + AC_OUTPUT without any parameters + + 9/3 + --- +configure.ac, config.h.in + - AC_TYPE_SIGNAL,BASH_TYPE_SIGHANDLER: remove calls, remove mention of + RETSIGTYPE and VOID_SIGHANDLER + - AC_HEADER_TIME: removed + - AC_USE_SYSTEM_EXTENSIONS: use instead of AC_AIX and AC_MINIX + - AC_HEADER_STDC: removed + - BASH_FUNC_CTYPE_NONASCII: removed + + 11/25 + ----- +history.pc.in + - pkgconfig file for history library. From Siteshwar Vashisht + + +configure.ac,MANIFEST,Makefile.in + - support for creating history.pc + + 3/29/2022 + --------- +configure.ac + - new option: --with-shared-termcap-library: use to force the shared + readline library to be linked against a shared termcap/curses library + that configure finds. If the argument begins with `-l', use that + library instead; updated INSTALL accordingly diff --git a/CHANGES b/CHANGES index 747fa41..eb54caa 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,117 @@ +This document details the changes between this version, readline-8.2, and +the previous version, readline-8.1. + +1. Changes to Readline + +a. Fixed a problem with cleaning up active marks when using callback mode. + +b. Fixed a problem with arithmetic comparison operators checking the version. + +c. Fixed a problem that could cause readline not to build on systems without + POSIX signal functions. + +d. Fixed a bug that could cause readline to crash if the application removed + the callback line handler before readline read all typeahead. + +e. Added additional checks for read errors in the middle of readline commands. + +f. Fixed a redisplay problem that occurred when switching from the digit- + argument prompt `(arg: N)' back to the regular prompt and the regular + prompt contained invisible characters. + +g. Fixed a problem with restoring the prompt when aborting an incremental + search. + +h. Fix a problem with characters > 128 not being displayed correctly in certain + single-byte encodings. + +i. Fixed a problem with unix-filename-rubout that caused it to delete too much + when applied to a pathname consisting only of one or more slashes. + +j. Fixed a display problem that caused the prompt to be wrapped incorrectly if + the screen changed dimensions during a call to readline() and the prompt + became longer than the screen width. + +k. Fixed a problem that caused the \r output by turning off bracketed paste + to overwrite the line if terminal echo was disabled. + +l. Fixed a bug that could cause colored-completion-prefix to not display if + completion-prefix-display-length was set. + +m. Fixed a problem with line wrapping prompts when a group of invisible + characters runs to the right edge of the screen and the prompt extends + longer then the screen width. + +n. Fixed a couple problems that could cause rl_end to be set incorrectly by + transpose-words. + +o. Prevent some display problems when running a command as the result of a + trap or one bound using `bind -x' and the command generates output. + +p. Fixed an issue with multi-line prompt strings that have one or more + invisible characters at the end of a physical line. + +q. Fixed an issue that caused a history line's undo list to be cleared when + it should not have been. + +r. When replacing a history entry, make sure the existing entry has a non-NULL + timestamp before copying it; it may have been added by the application, not + the history library. + +2. New Features in Readline + +a. There is now an HS_HISTORY_VERSION containing the version number of the + history library for applications to use. + +b. History expansion better understands multiple history expansions that may + contain strings that would ordinarily inhibit history expansion (e.g., + `abc!$!$'). + +c. There is a new framework for readline timeouts, including new public + functions to set timeouts and query how much time is remaining before a + timeout hits, and a hook function that can trigger when readline times + out. There is a new state value to indicate a timeout. + +d. Automatically bind termcap key sequences for page-up and page-down to + history-search-backward and history-search-forward, respectively. + +e. There is a new `fetch-history' bindable command that retrieves the history + entry corresponding to its numeric argument. Negative arguments count back + from the end of the history. + +f. `vi-undo' is now a bindable command. + +g. There is a new option: `enable-active-region'. This separates control of + the active region and bracketed-paste. It has the same default value as + bracketed-paste, and enabling bracketed paste enables the active region. + Users can now turn off the active region while leaving bracketed paste + enabled. + +h. rl_completer_word_break_characters is now `const char *' like + rl_basic_word_break_characters. + +i. Readline looks in $LS_COLORS for a custom filename extension + (*.readline-colored-completion-prefix) and uses that as the default color + for the common prefix displayed when `colored-completion-prefix' is set. + +j. Two new bindable string variables: active-region-start-color and + active-region-end-color. The first sets the color used to display the + active region; the second turns it off. If set, these are used in place + of terminal standout mode. + +k. New readline state (RL_STATE_EOF) and application-visible variable + (rl_eof_found) to allow applications to detect when readline reads EOF + before calling the deprep-terminal hook. + +l. There is a new configuration option: --with-shared-termcap-library, which + forces linking the shared readline library with the shared termcap (or + curses/ncurses/termlib) library so applications don't have to do it. + +m. Readline now checks for changes to locale settings (LC_ALL/LC_CTYPE/LANG) + each time it is called, and modifies the appropriate locale-specific display + and key binding variables when the locale changes. + +------------------------------------------------------------------------------- This document details the changes between this version, readline-8.1, and the previous version, readline-8.0. @@ -376,7 +490,7 @@ jj. Fixed a bug that caused mode strings to be displayed incorrectly if the 2. New Features in Readline -a. The history truncation code now uses the same error recovery mechansim as +a. The history truncation code now uses the same error recovery mechanism as the history writing code, and restores the old version of the history file on error. The error recovery mechanism handles symlinked history files. @@ -707,7 +821,7 @@ d. New bindable function: skip-csi-sequence. Can be used as a default to to bind all keys. e. New application-settable function: rl_filename_rewrite_hook. Can be used - to rewite or modify filenames read from the file system before they are + to rewrite or modify filenames read from the file system before they are compared to the word to be completed. f. New bindable variable: skip-completed-text, active when completing in the @@ -769,7 +883,7 @@ l. Fixed a bug in the code that buffers characters received very quickly in succession which caused characters to be dropped. m. Fixed a bug that caused readline to reference uninitialized data structures - if it received a SIGWINCH before completing initialzation. + if it received a SIGWINCH before completing initialization. n. Fixed a bug that caused the vi-mode `last command' to be set incorrectly and therefore unrepeatable. @@ -1107,7 +1221,7 @@ w. The history search functions now perform better bounds checking on the history list. x. Change to history expansion functions to treat `^' as equivalent to word - one, as the documention states. + one, as the documentation states. y. Some changes to the display code to improve display and redisplay of multibyte characters. @@ -1368,7 +1482,7 @@ f. The incremental search code remembers the last search string and uses 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. + line retrieved with previous-history or next-history. ------------------------------------------------------------------------------- This document details the changes between this version, readline-4.2, diff --git a/INSTALL b/INSTALL index 4f0d7b0..293ef70 100644 --- a/INSTALL +++ b/INSTALL @@ -1,7 +1,7 @@ Basic Installation ================== -These are installation instructions for Readline-8.1. +These are installation instructions for Readline-8.2. The simplest way to compile readline is: @@ -55,7 +55,7 @@ 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 readline `configure.in' requires autoconf -version 2.50 or newer. +version 2.69 or newer. Compilers and Options ===================== @@ -164,18 +164,40 @@ operates. Optional Features ================= -The readline `configure' recognizes a single `--with-PACKAGE' option: +The readline `configure' recognizes two `--with-PACKAGE' options: `--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. + usually 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. + +`--with-shared-termcap-library' + This tells the readline build process to link the shared version of + libreadline against a shared version of the curses or termcap library + (see the description of SHLIB_LIBS below under `Shared Libraries'). + This relieves the application of having to link with curses or termcap + itself, but does not allow the application to choose which library to + use. This is only effective on systems that build shared libraries (see + below; the default for shared libraries is `yes'). + +`configure' also recognizes several `--enable-FEATURE' options: -`configure' also recognizes two `--enable-FEATURE' options: +`--enable-bracketed-paste-default' + Enable bracketed paste by default, so the initial value of the + `enable-bracketed-paste' Readline variable is `on'. The default + is `yes'. + +`--enable-install-examples' + Install the readline example programs as part of `make install'. + +`--enable-multibyte' + Build with support for multibyte characters enabled on systems with the + necessary framework (locale definitions, C library functions, etc.). The + default is `yes'. `--enable-shared' Build the shared libraries by default on supported platforms. The @@ -184,11 +206,6 @@ The readline `configure' recognizes a single `--with-PACKAGE' option: `--enable-static' Build the static libraries by default. The default is `yes'. -`--enable-bracketed-paste-default' - Enable bracketed paste by default, so the initial value of the - `enable-bracketed-paste' Readline variable is `on'. The default - is `yes'. - Shared Libraries ================ @@ -199,7 +216,8 @@ shared versions of the readline and history libraries to be built on supported platforms. If `configure' is given the `--enable-shared' option, it will attempt -to build the shared libraries by default on supported platforms. +to build the shared libraries by default on supported platforms. This +option is enabled by default. Configure calls the script support/shobj-conf to test whether or not shared library creation is supported and to generate the values diff --git a/MANIFEST b/MANIFEST index ad49d66..db689b3 100644 --- a/MANIFEST +++ b/MANIFEST @@ -7,6 +7,7 @@ examples/autoconf d examples/rlfe d support d shlib d +m4 d COPYING f README f MANIFEST f @@ -17,10 +18,12 @@ NEWS f USAGE f aclocal.m4 f config.h.in f -configure f +configure f 755 configure.ac f +m4/codeset.m4 f Makefile.in f readline.pc.in f +history.pc.in f ansi_stdlib.h f chardefs.h f colors.h f @@ -32,6 +35,7 @@ posixdir.h f posixjmp.h f posixselect.h f posixstat.h f +posixtime.h f readline.h f rlconf.h f rldefs.h f @@ -121,6 +125,8 @@ examples/rlevent.c f examples/rlkeymaps.c f examples/rltest.c f examples/rl-callbacktest.c f +examples/rl-timeout.c f +examples/rl-test-timeout f examples/rl.c f examples/rlptytest.c f examples/rlversion.c f @@ -135,7 +141,7 @@ examples/rlfe/ChangeLog f examples/rlfe/Makefile.in f examples/rlfe/README f examples/rlfe/config.h.in f -examples/rlfe/configure f +examples/rlfe/configure f 755 examples/rlfe/configure.in f examples/rlfe/extern.h f examples/rlfe/os.h f diff --git a/Makefile.in b/Makefile.in index c57db60..2120daa 100644 --- a/Makefile.in +++ b/Makefile.in @@ -149,7 +149,7 @@ DOCUMENTATION = $(DOCSOURCE) $(DOCOBJECT) $(DOCSUPPORT) CREATED_MAKEFILES = Makefile doc/Makefile examples/Makefile shlib/Makefile CREATED_CONFIGURE = config.status config.h config.cache config.log \ - stamp-config stamp-h readline.pc + stamp-config stamp-h readline.pc history.pc CREATED_TAGS = TAGS tags INSTALLED_HEADERS = readline.h chardefs.h keymaps.h history.h tilde.h \ @@ -243,10 +243,11 @@ maybe-uninstall-headers: uninstall-headers install-pc: installdirs -$(INSTALL_DATA) $(BUILD_DIR)/readline.pc $(DESTDIR)$(pkgconfigdir)/readline.pc + -$(INSTALL_DATA) $(BUILD_DIR)/history.pc $(DESTDIR)$(pkgconfigdir)/history.pc uninstall-pc: -test -n "$(pkgconfigdir)" && cd $(DESTDIR)$(pkgconfigdir) && \ - ${RM} readline.pc + ${RM} readline.pc history.pc maybe-uninstall-pc: uninstall-pc @@ -324,6 +325,9 @@ distclean maintainer-clean: clean readline.pc: config.status $(srcdir)/readline.pc.in $(SHELL) config.status +history.pc: config.status $(srcdir)/history.pc.in + $(SHELL) config.status + info dvi html pdf ps: -( cd doc && $(MAKE) $(MFLAGS) $@ ) diff --git a/NEWS b/NEWS index 56ab93a..1d88606 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,60 @@ +This is a terse description of the new features added to readline-8.2 since +the release of readline-8.1. + +New Features in Readline + +a. There is now an HS_HISTORY_VERSION containing the version number of the + history library for applications to use. + +b. History expansion better understands multiple history expansions that may + contain strings that would ordinarily inhibit history expansion (e.g., + `abc!$!$'). + +c. There is a new framework for readline timeouts, including new public + functions to set timeouts and query how much time is remaining before a + timeout hits, and a hook function that can trigger when readline times + out. There is a new state value to indicate a timeout. + +d. Automatically bind termcap key sequences for page-up and page-down to + history-search-backward and history-search-forward, respectively. + +e. There is a new `fetch-history' bindable command that retrieves the history + entry corresponding to its numeric argument. Negative arguments count back + from the end of the history. + +f. `vi-undo' is now a bindable command. + +g. There is a new option: `enable-active-region'. This separates control of + the active region and bracketed-paste. It has the same default value as + bracketed-paste, and enabling bracketed paste enables the active region. + Users can now turn off the active region while leaving bracketed paste + enabled. + +h. rl_completer_word_break_characters is now `const char *' like + rl_basic_word_break_characters. + +i. Readline looks in $LS_COLORS for a custom filename extension + (*.readline-colored-completion-prefix) and uses that as the default color + for the common prefix displayed when `colored-completion-prefix' is set. + +j. Two new bindable string variables: active-region-start-color and + active-region-end-color. The first sets the color used to display the + active region; the second turns it off. If set, these are used in place + of terminal standout mode. + +k. New readline state (RL_STATE_EOF) and application-visible variable + (rl_eof_found) to allow applications to detect when readline reads EOF + before calling the deprep-terminal hook. + +l. There is a new configuration option: --with-shared-termcap-library, which + forces linking the shared readline library with the shared termcap (or + curses/ncurses/termlib) library so applications don't have to do it. + +m. Readline now checks for changes to locale settings (LC_ALL/LC_CTYPE/LANG) + each time it is called, and modifies the appropriate locale-specific display + and key binding variables when the locale changes. + +------------------------------------------------------------------------------- This is a terse description of the new features added to readline-8.1 since the release of readline-8.0. @@ -89,7 +146,7 @@ the release of readline-6.3. New Features in Readline -a. The history truncation code now uses the same error recovery mechansim as +a. The history truncation code now uses the same error recovery mechanism as the history writing code, and restores the old version of the history file on error. The error recovery mechanism handles symlinked history files. @@ -260,7 +317,7 @@ d. New bindable function: skip-csi-sequence. Can be used as a default to to bind all keys. e. New application-settable function: rl_filename_rewrite_hook. Can be used - to rewite or modify filenames read from the file system before they are + to rewrite or modify filenames read from the file system before they are compared to the word to be completed. f. New bindable variable: skip-completed-text, active when completing in the diff --git a/README b/README index de98575..83cdb23 100644 --- a/README +++ b/README @@ -1,7 +1,7 @@ Introduction ============ -This is the Gnu Readline library, version 8.1. +This is the Gnu Readline library, version 8.2. The Readline library provides a set of functions for use by applications that allow users to edit command lines as they are typed in. Both @@ -10,7 +10,7 @@ additional functions to maintain a list of previously-entered command lines, to recall and perhaps reedit those lines, and perform csh-like history expansion on previous commands. -The history facilites are also placed into a separate library, the +The history facilities are also placed into a separate library, the History library, as part of the build process. The History library may be used without Readline in applications which desire its capabilities. diff --git a/aclocal.m4 b/aclocal.m4 index 6899e82..cc97bd4 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -3,55 +3,8 @@ dnl Bash specific tests dnl 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([ -#include -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 Copyright (C) 1987-2021 Free Software Foundation, Inc. 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([ -#include -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 @@ -72,13 +25,14 @@ dnl 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, [AC_EGREP_CPP($1, [#include -#if STDC_HEADERS +#if HAVE_STDLIB_H #include +#endif +#if HAVE_STDDEF_H #include #endif #if HAVE_INTTYPES_H @@ -106,32 +60,14 @@ 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_CHECK_DECLS([$1]) ]) AC_DEFUN(BASH_DECL_PRINTF, [AC_MSG_CHECKING(for declaration of printf in ) AC_CACHE_VAL(bash_cv_printf_declared, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #ifdef __STDC__ typedef int (*_bashfunc)(const char *, ...); @@ -146,7 +82,7 @@ _bashfunc pf; pf = (_bashfunc) printf; exit(pf == 0); } -], bash_cv_printf_declared=yes, bash_cv_printf_declared=no, +]])], [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] )]) @@ -173,13 +109,13 @@ dnl AC_DEFUN(BASH_DECL_UNDER_SYS_SIGLIST, [AC_MSG_CHECKING([for _sys_siglist in signal.h or unistd.h]) AC_CACHE_VAL(bash_cv_decl_under_sys_siglist, -[AC_TRY_COMPILE([ +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include #include #ifdef HAVE_UNISTD_H #include -#endif], [ char *msg = _sys_siglist[2]; ], - bash_cv_decl_under_sys_siglist=yes, bash_cv_decl_under_sys_siglist=no, +#endif]], [[ char *msg = _sys_siglist[2]; ]])], + [bash_cv_decl_under_sys_siglist=yes], [bash_cv_decl_under_sys_siglist=no], [AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no)])])dnl AC_MSG_RESULT($bash_cv_decl_under_sys_siglist) if test $bash_cv_decl_under_sys_siglist = yes; then @@ -191,7 +127,7 @@ AC_DEFUN(BASH_UNDER_SYS_SIGLIST, [AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST]) AC_MSG_CHECKING([for _sys_siglist in system C library]) AC_CACHE_VAL(bash_cv_under_sys_siglist, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include #ifdef HAVE_UNISTD_H @@ -206,21 +142,34 @@ main() { char *msg = (char *)_sys_siglist[2]; exit(msg == 0); -}], - bash_cv_under_sys_siglist=yes, bash_cv_under_sys_siglist=no, +} +]])], + [bash_cv_under_sys_siglist=yes], [bash_cv_under_sys_siglist=no], [AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no) - bash_cv_under_sys_siglist=no])]) + bash_cv_under_sys_siglist=no] +)]) AC_MSG_RESULT($bash_cv_under_sys_siglist) if test $bash_cv_under_sys_siglist = yes; then AC_DEFINE(HAVE_UNDER_SYS_SIGLIST) fi ]) +dnl this defines HAVE_DECL_SYS_SIGLIST +AC_DEFUN([BASH_DECL_SYS_SIGLIST], +[AC_CHECK_DECLS([sys_siglist],,, +[#include +/* NetBSD declares sys_siglist in unistd.h. */ +#ifdef HAVE_UNISTD_H +# include +#endif +]) +]) + AC_DEFUN(BASH_SYS_SIGLIST, -[AC_REQUIRE([AC_DECL_SYS_SIGLIST]) +[AC_REQUIRE([BASH_DECL_SYS_SIGLIST]) AC_MSG_CHECKING([for sys_siglist in system C library]) AC_CACHE_VAL(bash_cv_sys_siglist, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include #ifdef HAVE_UNISTD_H @@ -235,10 +184,11 @@ main() { char *msg = sys_siglist[2]; exit(msg == 0); -}], - bash_cv_sys_siglist=yes, bash_cv_sys_siglist=no, +} +]])], [bash_cv_sys_siglist=yes], [bash_cv_sys_siglist=no], [AC_MSG_WARN(cannot check for sys_siglist if cross compiling -- defaulting to no) - bash_cv_sys_siglist=no])]) + bash_cv_sys_siglist=no] +)]) AC_MSG_RESULT($bash_cv_sys_siglist) if test $bash_cv_sys_siglist = yes; then AC_DEFINE(HAVE_SYS_SIGLIST) @@ -263,11 +213,15 @@ dnl Check for sys_errlist[] and sys_nerr, check for declaration AC_DEFUN(BASH_SYS_ERRLIST, [AC_MSG_CHECKING([for sys_errlist and sys_nerr]) AC_CACHE_VAL(bash_cv_sys_errlist, -[AC_TRY_LINK([#include ], -[extern char *sys_errlist[]; - extern int sys_nerr; - char *msg = sys_errlist[sys_nerr - 1];], - bash_cv_sys_errlist=yes, bash_cv_sys_errlist=no)])dnl +[AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#include +]],[[ +extern char *sys_errlist[]; +extern int sys_nerr; +char *msg = sys_errlist[sys_nerr - 1]; +]] )], +[bash_cv_sys_errlist=yes], [bash_cv_sys_errlist=no] +)]) AC_MSG_RESULT($bash_cv_sys_errlist) if test $bash_cv_sys_errlist = yes; then AC_DEFINE(HAVE_SYS_ERRLIST) @@ -280,7 +234,7 @@ 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([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include #include @@ -298,10 +252,10 @@ main() /* 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, +]])], [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]) -]) + bash_cv_dup2_broken=no] +)]) AC_MSG_RESULT($bash_cv_dup2_broken) if test $bash_cv_dup2_broken = yes; then AC_DEFINE(DUP2_BROKEN) @@ -311,11 +265,12 @@ 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 +[AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[#include #include -#include ], -[char *s = (char *)strsignal(2);], - bash_cv_have_strsignal=yes, bash_cv_have_strsignal=no)]) +#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) @@ -327,7 +282,7 @@ AC_DEFUN(BASH_FUNC_OPENDIR_CHECK, [AC_REQUIRE([AC_HEADER_DIRENT])dnl AC_MSG_CHECKING(if opendir() opens non-directories) AC_CACHE_VAL(bash_cv_opendir_not_robust, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include #include @@ -370,7 +325,8 @@ dir = opendir("bash-aclocal/not_a_directory"); unlink("bash-aclocal/not_a_directory"); rmdir("bash-aclocal"); exit (dir == 0); -}], bash_cv_opendir_not_robust=yes,bash_cv_opendir_not_robust=no, +} +]])], [bash_cv_opendir_not_robust=yes], [bash_cv_opendir_not_robust=no], [AC_MSG_WARN(cannot check opendir if cross compiling -- defaulting to no) bash_cv_opendir_not_robust=no] )]) @@ -380,26 +336,6 @@ AC_DEFINE(OPENDIR_NOT_ROBUST) fi ]) -dnl -AC_DEFUN(BASH_TYPE_SIGHANDLER, -[AC_MSG_CHECKING([whether signal handlers are of type void]) -AC_CACHE_VAL(bash_cv_void_sighandler, -[AC_TRY_COMPILE([#include -#include -#ifdef signal -#undef signal -#endif -#ifdef __cplusplus -extern "C" -#endif -void (*signal ()) ();], -[int i;], bash_cv_void_sighandler=yes, bash_cv_void_sighandler=no)])dnl -AC_MSG_RESULT($bash_cv_void_sighandler) -if test $bash_cv_void_sighandler = yes; then -AC_DEFINE(VOID_SIGHANDLER) -fi -]) - dnl dnl A signed 16-bit integer quantity dnl @@ -487,82 +423,98 @@ else fi ]) -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_SIZEOF_RLIMIT, +[AC_MSG_CHECKING(for size of struct rlimit fields) +AC_CACHE_VAL(bash_cv_sizeof_rlim_cur, +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ +#ifdef HAVE_SYS_TIME_H +#include +#endif +#include +#include +main() +{ +struct rlimit r; +exit(sizeof (r.rlim_cur)); +} +]])], [bash_cv_sizeof_rlim_cur=$?], [bash_cv_sizeof_rlim_cur=$?], + [AC_MSG_WARN(cannot check size of rlimit fields if cross compiling -- defaulting to long) + bash_cv_sizeof_rlim_cur=$ac_cv_sizeof_long] +)]) +AC_MSG_RESULT($bash_cv_sizeof_rlim_cur) ]) -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 +AC_DEFUN(BASH_SIZEOF_QUAD_T, +[AC_MSG_CHECKING(for size of quad_t) +AC_CACHE_VAL(bash_cv_sizeof_quad_t, +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ +#include +#include +#if HAVE_INTTYPES_H +#include +#endif +#if HAVE_STDINT_H +#include +#endif + +main() +{ +#if HAVE_QUAD_T +quad_t x; +exit(sizeof (x)); +#else +exit (0); +#endif +} +]])], [bash_cv_sizeof_quad_t=$?], [bash_cv_sizeof_quad_t=$?], + [AC_MSG_WARN(cannot check size of quad_t if cross compiling -- defaulting to 0) + bash_cv_sizeof_quad_t=0] +)]) +AC_MSG_RESULT($bash_cv_sizeof_quad_t) ]) 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 Type of struct rlimit fields: updated to check POSIX rlim_t and +dnl if it doesn't exist determine the best guess based on sizeof(r.rlim_cur) dnl AC_DEFUN(BASH_TYPE_RLIMIT, -[AC_MSG_CHECKING(for size and type of struct rlimit fields) +[AC_MSG_CHECKING(for 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([ +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include -#include -#include -#include -int -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) +#include ]], +[[rlim_t xxx;]] +)], + [bash_cv_type_rlimit=rlim_t], [ +BASH_SIZEOF_RLIMIT +BASH_SIZEOF_QUAD_T +if test $bash_cv_sizeof_rlim_cur = $ac_cv_sizeof_long; then + bash_cv_type_rlimit='unsigned long' +elif test $bash_cv_sizeof_rlim_cur = $ac_cv_sizeof_long_long; then + bash_cv_type_rlimit='unsigned long long' +elif test $bash_cv_sizeof_rlim_cur = $ac_cv_sizeof_int; then + bash_cv_type_rlimit='unsigned int' +elif test $bash_cv_sizeof_rlim_cur = $bash_cv_sizeof_quad_t; then + bash_cv_type_rlimit='quad_t' +else + bash_cv_type_rlimit='unsigned long' fi +] +)]) +AC_MSG_RESULT($bash_cv_type_rlimit) +AC_DEFINE_UNQUOTED([RLIMTYPE], [$bash_cv_type_rlimit]) ]) AC_DEFUN(BASH_TYPE_SIG_ATOMIC_T, [AC_CACHE_CHECK([for sig_atomic_t in signal.h], ac_cv_have_sig_atomic_t, -[AC_TRY_LINK([ -#include -],[ sig_atomic_t x; ], -ac_cv_have_sig_atomic_t=yes, ac_cv_have_sig_atomic_t=no)]) +[AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ #include ]], + [[ sig_atomic_t x; ]])], + [ac_cv_have_sig_atomic_t=yes],[ac_cv_have_sig_atomic_t=no])]) if test "$ac_cv_have_sig_atomic_t" = "no" then - AC_CHECK_TYPE(sig_atomic_t,int) + BASH_CHECK_TYPE(sig_atomic_t, [#include ], int) fi ]) @@ -570,11 +522,13 @@ AC_DEFUN(BASH_FUNC_LSTAT, [dnl Cannot use AC_CHECK_FUNCS(lstat) because Linux defines lstat() as an dnl inline function in . AC_CACHE_CHECK([for lstat], bash_cv_func_lstat, -[AC_TRY_LINK([ -#include -#include -],[ lstat(".",(struct stat *)0); ], -bash_cv_func_lstat=yes, bash_cv_func_lstat=no)]) +[AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[ + #include + #include + ]], + [[ lstat(".",(struct stat *)0); ]])], + [bash_cv_func_lstat=yes],[bash_cv_func_lstat=no])]) if test $bash_cv_func_lstat = yes; then AC_DEFINE(HAVE_LSTAT) fi @@ -583,12 +537,12 @@ fi AC_DEFUN(BASH_FUNC_INET_ATON, [ AC_CACHE_CHECK([for inet_aton], bash_cv_func_inet_aton, -[AC_TRY_LINK([ +[AC_LINK_IFELSE([AC_LANG_PROGRAM([[ #include #include #include -struct in_addr ap;], [ inet_aton("127.0.0.1", &ap); ], -bash_cv_func_inet_aton=yes, bash_cv_func_inet_aton=no)]) +struct in_addr ap;]], [[ inet_aton("127.0.0.1", &ap); ]])], +[bash_cv_func_inet_aton=yes], [bash_cv_func_inet_aton=no])]) if test $bash_cv_func_inet_aton = yes; then AC_DEFINE(HAVE_INET_ATON) else @@ -599,7 +553,7 @@ fi AC_DEFUN(BASH_FUNC_GETENV, [AC_MSG_CHECKING(to see if getenv can be redefined) AC_CACHE_VAL(bash_cv_getenv_redef, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #ifdef HAVE_UNISTD_H # include #endif @@ -632,7 +586,7 @@ exit(1); s = getenv("ABCDE"); exit(s == 0); /* force optimizer to leave getenv in */ } -], bash_cv_getenv_redef=yes, bash_cv_getenv_redef=no, +]])], [bash_cv_getenv_redef=yes], [bash_cv_getenv_redef=no], [AC_MSG_WARN(cannot check getenv redefinition if cross compiling -- defaulting to yes) bash_cv_getenv_redef=yes] )]) @@ -645,12 +599,13 @@ fi # We should check for putenv before calling this AC_DEFUN(BASH_FUNC_STD_PUTENV, [ -AC_REQUIRE([AC_HEADER_STDC]) AC_REQUIRE([AC_C_PROTOTYPES]) AC_CACHE_CHECK([for standard-conformant putenv declaration], bash_cv_std_putenv, -[AC_TRY_LINK([ -#if STDC_HEADERS +[AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#if HAVE_STDLIB_H #include +#endif +#if HAVE_STDDEF_H #include #endif #ifndef __STDC__ @@ -663,9 +618,8 @@ extern int putenv (char *); #else extern int putenv (); #endif -], -[return (putenv == 0);], -bash_cv_std_putenv=yes, bash_cv_std_putenv=no +]], [[return (putenv == 0);]] )], +[bash_cv_std_putenv=yes], [bash_cv_std_putenv=no] )]) if test $bash_cv_std_putenv = yes; then AC_DEFINE(HAVE_STD_PUTENV) @@ -675,12 +629,13 @@ fi # We should check for unsetenv before calling this AC_DEFUN(BASH_FUNC_STD_UNSETENV, [ -AC_REQUIRE([AC_HEADER_STDC]) AC_REQUIRE([AC_C_PROTOTYPES]) AC_CACHE_CHECK([for standard-conformant unsetenv declaration], bash_cv_std_unsetenv, -[AC_TRY_LINK([ -#if STDC_HEADERS +[AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#if HAVE_STDLIB_H #include +#endif +#if HAVE_STDDEF_H #include #endif #ifndef __STDC__ @@ -693,9 +648,8 @@ extern int unsetenv (const char *); #else extern int unsetenv (); #endif -], -[return (unsetenv == 0);], -bash_cv_std_unsetenv=yes, bash_cv_std_unsetenv=no +]], [[return (unsetenv == 0);]] )], +[bash_cv_std_unsetenv=yes], [bash_cv_std_unsetenv=no] )]) if test $bash_cv_std_unsetenv = yes; then AC_DEFINE(HAVE_STD_UNSETENV) @@ -705,7 +659,7 @@ fi AC_DEFUN(BASH_FUNC_ULIMIT_MAXFDS, [AC_MSG_CHECKING(whether ulimit can substitute for getdtablesize) AC_CACHE_VAL(bash_cv_ulimit_maxfds, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #ifdef HAVE_ULIMIT_H #include @@ -716,7 +670,7 @@ main() long maxfds = ulimit(4, 0L); exit (maxfds == -1L); } -], bash_cv_ulimit_maxfds=yes, bash_cv_ulimit_maxfds=no, +]])], [bash_cv_ulimit_maxfds=yes], [bash_cv_ulimit_maxfds=no], [AC_MSG_WARN(cannot check ulimit if cross compiling -- defaulting to no) bash_cv_ulimit_maxfds=no] )]) @@ -729,7 +683,7 @@ fi AC_DEFUN(BASH_FUNC_GETCWD, [AC_MSG_CHECKING([if getcwd() will dynamically allocate memory with 0 size]) AC_CACHE_VAL(bash_cv_getcwd_malloc, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #ifdef HAVE_UNISTD_H #include @@ -743,7 +697,7 @@ main() xpwd = getcwd(0, 0); exit (xpwd == 0); } -], bash_cv_getcwd_malloc=yes, bash_cv_getcwd_malloc=no, +]])], [bash_cv_getcwd_malloc=yes], [bash_cv_getcwd_malloc=no], [AC_MSG_WARN(cannot check whether getcwd allocates memory when cross-compiling -- defaulting to no) bash_cv_getcwd_malloc=no] )]) @@ -756,7 +710,7 @@ 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 system, we can't use AC_PREREQ. Only called if we need the socket library dnl AC_DEFUN(BASH_FUNC_GETHOSTBYNAME, [if test "X$bash_cv_have_gethostbyname" = "X"; then @@ -766,11 +720,14 @@ 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)] -) +[AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#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 @@ -783,7 +740,7 @@ 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([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include int @@ -795,10 +752,10 @@ main() return (1); #endif } -], bash_cv_fnm_extmatch=yes, bash_cv_fnm_extmatch=no, +]])], [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]) -]) + 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) @@ -809,7 +766,7 @@ 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([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #ifdef HAVE_UNISTD_H #include #endif @@ -826,21 +783,30 @@ exit (1); #else int code; -sigset_t set, oset; +sigset_t set, oset, nset; sigjmp_buf xx; /* get the mask */ sigemptyset(&set); sigemptyset(&oset); -sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set); + sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset); +/* paranoia -- make sure SIGINT is not blocked */ +sigdelset (&oset, SIGINT); +sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL); /* save it */ code = sigsetjmp(xx, 1); if (code) - exit(0); /* could get sigmask and compare to oset here. */ +{ + sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &nset); + /* could compare nset to oset here, but we just look for SIGINT */ + if (sigismember (&nset, SIGINT)) + exit(1); + exit(0); +} -/* change it */ +/* change it so that SIGINT is blocked */ sigaddset(&set, SIGINT); sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL); @@ -848,9 +814,14 @@ sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL); 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] +} +]])], [bash_cv_func_sigsetjmp=present], [bash_cv_func_sigsetjmp=missing], + [AC_MSG_WARN(cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to $bash_cv_posix_signals) + if test "$bash_cv_posix_signals" = "yes" ; then + bash_cv_func_sigsetjmp=present + else + bash_cv_func_sigsetjmp=missing + fi] )]) AC_MSG_RESULT($bash_cv_func_sigsetjmp) if test $bash_cv_func_sigsetjmp = present; then @@ -859,10 +830,9 @@ fi ]) AC_DEFUN(BASH_FUNC_STRCOLL, -[ -AC_MSG_CHECKING(whether or not strcoll and strcmp differ) +[AC_MSG_CHECKING(whether or not strcoll and strcmp differ) AC_CACHE_VAL(bash_cv_func_strcoll_broken, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #if defined (HAVE_LOCALE_H) #include @@ -900,7 +870,7 @@ char *v[]; in the default locale. */ exit (r1 > 0 && r2 > 0); } -], bash_cv_func_strcoll_broken=yes, bash_cv_func_strcoll_broken=no, +]])], [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] )]) @@ -913,7 +883,7 @@ 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([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include #include @@ -927,7 +897,7 @@ main() sprintf(abuf, "%A", y); exit(strchr(abuf, 'P') == (char *)0); } -], bash_cv_printf_a_format=yes, bash_cv_printf_a_format=no, +]])], [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] )]) @@ -964,12 +934,10 @@ 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( -[ +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include #include -], -[ +]], [[ int main() { @@ -977,7 +945,7 @@ 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) +]])], [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 @@ -1022,7 +990,8 @@ elif test $bash_cv_termcap_lib = libc; then TERMCAP_LIB= TERMCAP_DEP= else -TERMCAP_LIB=-lcurses +# we assume ncurses is installed somewhere the linker can find it +TERMCAP_LIB=-lncurses TERMCAP_DEP= fi ]) @@ -1077,11 +1046,12 @@ if test $bash_cv_have_socklib = yes; then fi ]) -AC_DEFUN(BASH_STRUCT_DIRENT_D_INO, -[AC_REQUIRE([AC_HEADER_DIRENT]) -AC_MSG_CHECKING(for struct dirent.d_ino) -AC_CACHE_VAL(bash_cv_dirent_has_dino, -[AC_TRY_COMPILE([ +dnl like _AC_STRUCT_DIRENT(MEMBER) but public +AC_DEFUN(BASH_STRUCT_DIRENT, +[ +AC_REQUIRE([AC_HEADER_DIRENT]) +AC_CHECK_MEMBERS(struct dirent.$1, bash_cv_dirent_has_$1=yes, bash_cv_dirent_has_$1=no, +[[ #include #include #ifdef HAVE_UNISTD_H @@ -1101,11 +1071,15 @@ AC_CACHE_VAL(bash_cv_dirent_has_dino, # include # endif #endif /* HAVE_DIRENT_H */ -],[ -struct dirent d; int z; z = d.d_ino; -], bash_cv_dirent_has_dino=yes, bash_cv_dirent_has_dino=no)]) -AC_MSG_RESULT($bash_cv_dirent_has_dino) -if test $bash_cv_dirent_has_dino = yes; then +]]) +]) + +AC_DEFUN(BASH_STRUCT_DIRENT_D_INO, +[AC_REQUIRE([AC_HEADER_DIRENT]) +AC_MSG_CHECKING(for struct dirent.d_ino) +AC_CACHE_VAL(bash_cv_dirent_has_d_ino, [BASH_STRUCT_DIRENT([d_ino])]) +AC_MSG_RESULT($bash_cv_dirent_has_d_ino) +if test $bash_cv_dirent_has_d_ino = yes; then AC_DEFINE(HAVE_STRUCT_DIRENT_D_INO) fi ]) @@ -1113,30 +1087,7 @@ fi AC_DEFUN(BASH_STRUCT_DIRENT_D_FILENO, [AC_REQUIRE([AC_HEADER_DIRENT]) AC_MSG_CHECKING(for struct dirent.d_fileno) -AC_CACHE_VAL(bash_cv_dirent_has_d_fileno, -[AC_TRY_COMPILE([ -#include -#include -#ifdef HAVE_UNISTD_H -# include -#endif /* HAVE_UNISTD_H */ -#if defined(HAVE_DIRENT_H) -# include -#else -# define dirent direct -# ifdef HAVE_SYS_NDIR_H -# include -# endif /* SYSNDIR */ -# ifdef HAVE_SYS_DIR_H -# include -# endif /* SYSDIR */ -# ifdef HAVE_NDIR_H -# include -# endif -#endif /* HAVE_DIRENT_H */ -],[ -struct dirent d; int z; z = d.d_fileno; -], bash_cv_dirent_has_d_fileno=yes, bash_cv_dirent_has_d_fileno=no)]) +AC_CACHE_VAL(bash_cv_dirent_has_d_fileno, [BASH_STRUCT_DIRENT([d_fileno])]) AC_MSG_RESULT($bash_cv_dirent_has_d_fileno) if test $bash_cv_dirent_has_d_fileno = yes; then AC_DEFINE(HAVE_STRUCT_DIRENT_D_FILENO) @@ -1146,30 +1097,7 @@ fi AC_DEFUN(BASH_STRUCT_DIRENT_D_NAMLEN, [AC_REQUIRE([AC_HEADER_DIRENT]) AC_MSG_CHECKING(for struct dirent.d_namlen) -AC_CACHE_VAL(bash_cv_dirent_has_d_namlen, -[AC_TRY_COMPILE([ -#include -#include -#ifdef HAVE_UNISTD_H -# include -#endif /* HAVE_UNISTD_H */ -#if defined(HAVE_DIRENT_H) -# include -#else -# define dirent direct -# ifdef HAVE_SYS_NDIR_H -# include -# endif /* SYSNDIR */ -# ifdef HAVE_SYS_DIR_H -# include -# endif /* SYSDIR */ -# ifdef HAVE_NDIR_H -# include -# endif -#endif /* HAVE_DIRENT_H */ -],[ -struct dirent d; int z; z = d.d_namlen; -], bash_cv_dirent_has_d_namlen=yes, bash_cv_dirent_has_d_namlen=no)]) +AC_CACHE_VAL(bash_cv_dirent_has_d_namlen, [BASH_STRUCT_DIRENT([d_namlen])]) AC_MSG_RESULT($bash_cv_dirent_has_d_namlen) if test $bash_cv_dirent_has_d_namlen = yes; then AC_DEFINE(HAVE_STRUCT_DIRENT_D_NAMLEN) @@ -1213,16 +1141,47 @@ if test $bash_cv_struct_timezone = yes; then fi ]) +AC_DEFUN(BASH_CHECK_WINSIZE_IOCTL, +[AC_CACHE_VAL(bash_cv_struct_winsize_ioctl, +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include +#include +]], +[[ +struct winsize x; +if (sizeof (x) > 0) return (0); +]] )], [bash_cv_struct_winsize_ioctl=yes], [bash_cv_struct_winsize_ioctl=no]) +]) +]) + +AC_DEFUN(BASH_CHECK_WINSIZE_TERMIOS, +[AC_CACHE_VAL(bash_cv_struct_winsize_termios, +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include +#include +]], +[[ +struct winsize x; +if (sizeof (x) > 0) return (0); +]] )], [bash_cv_struct_winsize_termios=yes], [bash_cv_struct_winsize_termios=no]) +]) +]) + 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) -])]) +[ +BASH_CHECK_WINSIZE_IOCTL +BASH_CHECK_WINSIZE_TERMIOS + +if test $bash_cv_struct_winsize_ioctl = yes; then + bash_cv_struct_winsize_header=ioctl_h +elif test $bash_cv_struct_winsize_termios = yes; then + bash_cv_struct_winsize_header=termios_h +else + bash_cv_struct_winsize_header=other +fi +]) if test $bash_cv_struct_winsize_header = ioctl_h; then AC_MSG_RESULT(sys/ioctl.h) AC_DEFINE(STRUCT_WINSIZE_IN_SYS_IOCTL) @@ -1234,35 +1193,68 @@ else 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 ],[ +AC_DEFUN(BASH_HAVE_POSIX_SIGNALS, +[AC_CACHE_VAL(bash_cv_posix_signals, +[AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#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 - )] - )] -) +]] )], +[bash_cv_posix_signals=yes], [bash_cv_posix_signals=no] +)]) +]) + +AC_DEFUN(BASH_HAVE_BSD_SIGNALS, +[AC_CACHE_VAL(bash_cv_bsd_signals, +[AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#include +]], [[ +int mask = sigmask(SIGINT); +sigsetmask(mask); sigblock(mask); sigpause(mask); +]] )], +[bash_cv_bsd_signals=yes], [bash_cv_bsd_signals=no] +)]) +]) + +AC_DEFUN(BASH_HAVE_SYSV_SIGNALS, +[AC_CACHE_VAL(bash_cv_sysv_signals, +[AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#include +void foo() { } +]], [[ +int mask = sigmask(SIGINT); +sigset(SIGINT, foo); sigrelse(SIGINT); +sighold(SIGINT); sigpause(SIGINT); +]] )], +[bash_cv_sysv_signals=yes], [bash_cv_sysv_signals=no] +)]) +]) + +dnl Check type of signal routines (posix, 4.2bsd, 4.1bsd or v7) +AC_DEFUN(BASH_SYS_SIGNAL_VINTAGE, +[AC_MSG_CHECKING(for type of signal functions) +AC_CACHE_VAL(bash_cv_signal_vintage, +[ +BASH_HAVE_POSIX_SIGNALS +if test $bash_cv_posix_signals = yes; then + bash_cv_signal_vintage=posix +else + BASH_HAVE_BSD_SIGNALS + if test $bash_cv_bsd_signals = yes; then + bash_cv_signal_vintage=4.2bsd + else + BASH_HAVE_SYSV_SIGNALS + if test $bash_cv_sysv_signals = yes; then + bash_cv_signal_vintage=svr3 + else + bash_cv_signal_vintage=v7 + fi + fi +fi ]) AC_MSG_RESULT($bash_cv_signal_vintage) if test "$bash_cv_signal_vintage" = posix; then @@ -1279,7 +1271,7 @@ 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([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #ifdef HAVE_UNISTD_H # include #endif @@ -1332,10 +1324,10 @@ main() wait(&status); exit(ok ? 0 : 5); } -], bash_cv_pgrp_pipe=no,bash_cv_pgrp_pipe=yes, +]])], [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]) -]) + bash_cv_pgrp_pipe=no] +)]) AC_MSG_RESULT($bash_cv_pgrp_pipe) if test $bash_cv_pgrp_pipe = yes; then AC_DEFINE(PGRP_PIPE) @@ -1343,18 +1335,17 @@ fi ]) AC_DEFUN(BASH_SYS_REINSTALL_SIGHANDLERS, -[AC_REQUIRE([AC_TYPE_SIGNAL]) -AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) +[AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) AC_MSG_CHECKING([if signal handlers must be reinstalled when invoked]) AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #ifdef HAVE_UNISTD_H #include #endif #include -typedef RETSIGTYPE sigfunc(); +typedef void sigfunc(); volatile int nsigint; @@ -1376,7 +1367,7 @@ set_signal_handler(sig, handler) #define set_signal_handler(s, h) signal(s, h) #endif -RETSIGTYPE +void sigint(s) int s; { @@ -1392,7 +1383,7 @@ main() kill((int)getpid(), SIGINT); exit(nsigint != 2); } -], bash_cv_must_reinstall_sighandlers=no, bash_cv_must_reinstall_sighandlers=yes, +]])], [bash_cv_must_reinstall_sighandlers=no], [bash_cv_must_reinstall_sighandlers=yes], [AC_MSG_WARN(cannot check signal handling if cross compiling -- defaulting to no) bash_cv_must_reinstall_sighandlers=no] )]) @@ -1407,7 +1398,7 @@ AC_DEFUN(BASH_SYS_JOB_CONTROL_MISSING, [AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) AC_MSG_CHECKING(for presence of necessary job control definitions) AC_CACHE_VAL(bash_cv_job_control_missing, -[AC_TRY_COMPILE([ +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include #ifdef HAVE_SYS_WAIT_H #include @@ -1448,7 +1439,8 @@ AC_CACHE_VAL(bash_cv_job_control_missing, #error #endif -], , bash_cv_job_control_missing=present, bash_cv_job_control_missing=missing +]], [[ int x; ]] )], +[bash_cv_job_control_missing=present], [bash_cv_job_control_missing=missing] )]) AC_MSG_RESULT($bash_cv_job_control_missing) if test $bash_cv_job_control_missing = missing; then @@ -1461,7 +1453,7 @@ dnl this requires a previous check for mkfifo, but that is awkward to specify AC_DEFUN(BASH_SYS_NAMED_PIPES, [AC_MSG_CHECKING(for presence of named pipes) AC_CACHE_VAL(bash_cv_sys_named_pipes, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include #ifdef HAVE_UNISTD_H @@ -1501,7 +1493,8 @@ close(fd); unlink ("bash-aclocal/sh-np-autoconf"); rmdir ("bash-aclocal"); exit(0); -}], bash_cv_sys_named_pipes=present, bash_cv_sys_named_pipes=missing, +} +]])], [bash_cv_sys_named_pipes=present], [bash_cv_sys_named_pipes=missing], [AC_MSG_WARN(cannot check for named pipes if cross-compiling -- defaulting to missing) bash_cv_sys_named_pipes=missing] )]) @@ -1533,9 +1526,11 @@ AC_DEFINE_UNQUOTED(DEFAULT_MAIL_DIRECTORY, "$bash_cv_mail_dir") AC_DEFUN(BASH_HAVE_TIOCGWINSZ, [AC_MSG_CHECKING(for TIOCGWINSZ in sys/ioctl.h) AC_CACHE_VAL(bash_cv_tiocgwinsz_in_ioctl, -[AC_TRY_COMPILE([#include -#include ], [int x = TIOCGWINSZ;], - bash_cv_tiocgwinsz_in_ioctl=yes,bash_cv_tiocgwinsz_in_ioctl=no)]) +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include +#include ]], [[int x = TIOCGWINSZ;]] )], + [bash_cv_tiocgwinsz_in_ioctl=yes], [bash_cv_tiocgwinsz_in_ioctl=no] +)]) AC_MSG_RESULT($bash_cv_tiocgwinsz_in_ioctl) if test $bash_cv_tiocgwinsz_in_ioctl = yes; then AC_DEFINE(GWINSZ_IN_SYS_IOCTL) @@ -1545,9 +1540,11 @@ fi AC_DEFUN(BASH_HAVE_TIOCSTAT, [AC_MSG_CHECKING(for TIOCSTAT in sys/ioctl.h) AC_CACHE_VAL(bash_cv_tiocstat_in_ioctl, -[AC_TRY_COMPILE([#include -#include ], [int x = TIOCSTAT;], - bash_cv_tiocstat_in_ioctl=yes,bash_cv_tiocstat_in_ioctl=no)]) +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include +#include ]], [[int x = TIOCSTAT;]] )], + [bash_cv_tiocstat_in_ioctl=yes], [bash_cv_tiocstat_in_ioctl=no] +)]) AC_MSG_RESULT($bash_cv_tiocstat_in_ioctl) if test $bash_cv_tiocstat_in_ioctl = yes; then AC_DEFINE(TIOCSTAT_IN_SYS_IOCTL) @@ -1557,9 +1554,11 @@ fi AC_DEFUN(BASH_HAVE_FIONREAD, [AC_MSG_CHECKING(for FIONREAD in sys/ioctl.h) AC_CACHE_VAL(bash_cv_fionread_in_ioctl, -[AC_TRY_COMPILE([#include -#include ], [int x = FIONREAD;], - bash_cv_fionread_in_ioctl=yes,bash_cv_fionread_in_ioctl=no)]) +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include +#include ]], [[int x = FIONREAD;]] )], + [bash_cv_fionread_in_ioctl=yes], [bash_cv_fionread_in_ioctl=no] +)]) AC_MSG_RESULT($bash_cv_fionread_in_ioctl) if test $bash_cv_fionread_in_ioctl = yes; then AC_DEFINE(FIONREAD_IN_SYS_IOCTL) @@ -1575,8 +1574,11 @@ 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, -[AC_TRY_COMPILE([#include ], [speed_t x;], - bash_cv_speed_t_in_sys_types=yes,bash_cv_speed_t_in_sys_types=no)]) +[AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[speed_t x;]])], + [bash_cv_speed_t_in_sys_types=yes],[bash_cv_speed_t_in_sys_types=no])]) AC_MSG_RESULT($bash_cv_speed_t_in_sys_types) if test $bash_cv_speed_t_in_sys_types = yes; then AC_DEFINE(SPEED_T_IN_SYS_TYPES) @@ -1646,31 +1648,41 @@ if test $bash_cv_dev_stdin = "present"; then fi ]) + +AC_DEFUN(BASH_CHECK_RLIMIT, +[AC_CACHE_VAL(bash_cv_rlimit, +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include +#include +]], +[[ + int f; + f = RLIMIT_DATA; +]] )], +[bash_cv_rlimit=yes], [bash_cv_rlimit=no] +)]) +]) + 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, -[AC_TRY_COMPILE([ -#include -#include -], -[ - int f; - f = RLIMIT_DATA; -], bash_cv_kernel_rlimit=no, -[AC_TRY_COMPILE([ +[BASH_CHECK_RLIMIT +if test $bash_cv_rlimit = no; then +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include #define _KERNEL #include #undef _KERNEL -], -[ - int f; - f = RLIMIT_DATA; -], bash_cv_kernel_rlimit=yes, bash_cv_kernel_rlimit=no)] -)]) +]], +[[ + int f; + f = RLIMIT_DATA; +]] )], [bash_cv_kernel_rlimit=yes], [bash_cv_kernel_rlimit=no] ) +fi +]) AC_MSG_RESULT($bash_cv_kernel_rlimit) if test $bash_cv_kernel_rlimit = yes; then AC_DEFINE(RLIMIT_NEEDS_KERNEL) @@ -1685,14 +1697,15 @@ dnl sizeof(off_t) is > 4. dnl AC_DEFUN(BASH_CHECK_OFF_T_64, [AC_CACHE_CHECK(for 64-bit off_t, bash_cv_off_t_64, -AC_TRY_COMPILE([ +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #ifdef HAVE_UNISTD_H #include #endif #include -],[ +]],[[ switch (0) case 0: case (sizeof (off_t) <= 4):; -], bash_cv_off_t_64=no, bash_cv_off_t_64=yes)) +]] )], [bash_cv_off_t_64=no], [bash_cv_off_t_64=yes] +)) if test $bash_cv_off_t_64 = yes; then AC_DEFINE(HAVE_OFF_T_64) fi]) @@ -1700,7 +1713,7 @@ fi]) AC_DEFUN(BASH_CHECK_RTSIGS, [AC_MSG_CHECKING(for unusable real-time signals due to large values) AC_CACHE_VAL(bash_cv_unusable_rtsigs, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include #include @@ -1720,7 +1733,8 @@ main () #endif exit(rtmin < n_sigs); -}], bash_cv_unusable_rtsigs=yes, bash_cv_unusable_rtsigs=no, +} +]])], [bash_cv_unusable_rtsigs=yes], [bash_cv_unusable_rtsigs=no], [AC_MSG_WARN(cannot check real-time signals if cross compiling -- defaulting to yes) bash_cv_unusable_rtsigs=yes] )]) @@ -1767,48 +1781,43 @@ fi AC_CHECK_FUNCS(iswlower iswupper towlower towupper iswctype) -AC_CACHE_CHECK([for nl_langinfo and CODESET], bash_cv_langinfo_codeset, -[AC_TRY_LINK( -[#include ], -[char* cs = nl_langinfo(CODESET);], -bash_cv_langinfo_codeset=yes, bash_cv_langinfo_codeset=no)]) -if test $bash_cv_langinfo_codeset = yes; then - AC_DEFINE(HAVE_LANGINFO_CODESET) -fi +AC_REQUIRE([AM_LANGINFO_CODESET]) dnl check for wchar_t in AC_CACHE_CHECK([for wchar_t in wchar.h], bash_cv_type_wchar_t, -[AC_TRY_COMPILE( -[#include -], -[ +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ +[#include ]], +[[ wchar_t foo; foo = 0; -], bash_cv_type_wchar_t=yes, bash_cv_type_wchar_t=no)]) +]] )], [bash_cv_type_wchar_t=yes], [bash_cv_type_wchar_t=no] +)]) if test $bash_cv_type_wchar_t = yes; then AC_DEFINE(HAVE_WCHAR_T, 1, [systems should define this type here]) fi dnl check for wctype_t in AC_CACHE_CHECK([for wctype_t in wctype.h], bash_cv_type_wctype_t, -[AC_TRY_COMPILE( -[#include ], -[ +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ +[#include ]], +[[ wctype_t foo; foo = 0; -], bash_cv_type_wctype_t=yes, bash_cv_type_wctype_t=no)]) +]] )], [bash_cv_type_wctype_t=yes], [bash_cv_type_wctype_t=no] +)]) if test $bash_cv_type_wctype_t = yes; then AC_DEFINE(HAVE_WCTYPE_T, 1, [systems should define this type here]) fi dnl check for wint_t in AC_CACHE_CHECK([for wint_t in wctype.h], bash_cv_type_wint_t, -[AC_TRY_COMPILE( -[#include ], -[ +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ +[#include ]], +[[ wint_t foo; foo = 0; -], bash_cv_type_wint_t=yes, bash_cv_type_wint_t=no)]) +]] )], [bash_cv_type_wint_t=yes], [bash_cv_type_wint_t=no] +)]) if test $bash_cv_type_wint_t = yes; then AC_DEFINE(HAVE_WINT_T, 1, [systems should define this type here]) fi @@ -1816,7 +1825,7 @@ fi dnl check for broken wcwidth AC_CACHE_CHECK([for wcwidth broken with unicode combining characters], bash_cv_wcwidth_broken, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include #include @@ -1835,8 +1844,9 @@ char **v; w = wcwidth (0x0301); exit (w == 0); /* exit 0 if wcwidth broken */ } -], -bash_cv_wcwidth_broken=yes, bash_cv_wcwidth_broken=no, bash_cv_wcwidth_broken=no)]) +]])], [bash_cv_wcwidth_broken=yes], [bash_cv_wcwidth_broken=no], + [bash_cv_wcwidth_broken=no] +)]) if test "$bash_cv_wcwidth_broken" = yes; then AC_DEFINE(WCWIDTH_BROKEN, 1, [wcwidth is usually not broken]) fi @@ -1886,7 +1896,7 @@ CFLAGS="$CFLAGS -I${ac_cv_rl_includedir}" LDFLAGS="$LDFLAGS -L${ac_cv_rl_libdir}" AC_CACHE_VAL(ac_cv_rl_version, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include #include @@ -1907,10 +1917,11 @@ main() fclose(fp); exit(0); } -], -ac_cv_rl_version=`cat conftest.rlv`, -ac_cv_rl_version='0.0', -ac_cv_rl_version='8.0')]) +]])], +[ac_cv_rl_version=`cat conftest.rlv`], +[ac_cv_rl_version='0.0'], +[ac_cv_rl_version='8.0'] +)]) CFLAGS="$_save_CFLAGS" LDFLAGS="$_save_LDFLAGS" @@ -1973,57 +1984,11 @@ AC_MSG_RESULT($ac_cv_rl_version) fi ]) -AC_DEFUN(BASH_FUNC_CTYPE_NONASCII, -[ -AC_MSG_CHECKING(whether the ctype macros accept non-ascii characters) -AC_CACHE_VAL(bash_cv_func_ctype_nonascii, -[AC_TRY_RUN([ -#ifdef HAVE_LOCALE_H -#include -#endif -#include -#include -#include - -int -main(c, v) -int c; -char *v[]; -{ - char *deflocale; - unsigned char x; - int r1, r2; - -#ifdef HAVE_SETLOCALE - /* We take a shot here. If that locale is not known, try the - system default. We try this one because '\342' (226) is - known to be a printable character in that locale. */ - deflocale = setlocale(LC_ALL, "en_US.ISO8859-1"); - if (deflocale == 0) - deflocale = setlocale(LC_ALL, ""); -#endif - - x = '\342'; - r1 = isprint(x); - x -= 128; - r2 = isprint(x); - exit (r1 == 0 || r2 == 0); -} -], bash_cv_func_ctype_nonascii=yes, bash_cv_func_ctype_nonascii=no, - [AC_MSG_WARN(cannot check ctype macros if cross compiling -- defaulting to no) - bash_cv_func_ctype_nonascii=no] -)]) -AC_MSG_RESULT($bash_cv_func_ctype_nonascii) -if test $bash_cv_func_ctype_nonascii = yes; then -AC_DEFINE(CTYPE_NON_ASCII) -fi -]) - AC_DEFUN(BASH_CHECK_WCONTINUED, [ AC_MSG_CHECKING(whether WCONTINUED flag to waitpid is unavailable or available but broken) AC_CACHE_VAL(bash_cv_wcontinued_broken, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include #include @@ -2044,7 +2009,7 @@ main() else exit (0); } -], bash_cv_wcontinued_broken=no,bash_cv_wcontinued_broken=yes, +]])], [bash_cv_wcontinued_broken=no], [bash_cv_wcontinued_broken=yes], [AC_MSG_WARN(cannot check WCONTINUED if cross compiling -- defaulting to no) bash_cv_wcontinued_broken=no] )]) @@ -2060,7 +2025,7 @@ dnl AC_DEFUN([AM_PATH_LISPDIR], - [AC_ARG_WITH(lispdir, AC_HELP_STRING([--with-lispdir], [override the default lisp directory]), + [AC_ARG_WITH(lispdir, AS_HELP_STRING([--with-lispdir], [override the default lisp directory]), [ lispdir="$withval" AC_MSG_CHECKING([where .elc files should go]) AC_MSG_RESULT([$lispdir])], @@ -2097,7 +2062,7 @@ AC_DEFUN([BASH_FUNC_SNPRINTF], AC_CHECK_FUNCS_ONCE([snprintf]) if test X$ac_cv_func_snprintf = Xyes; then AC_CACHE_CHECK([for standard-conformant snprintf], [bash_cv_func_snprintf], - [AC_TRY_RUN([ + [AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include @@ -2108,7 +2073,7 @@ main() n = snprintf (0, 0, "%s", "0123456"); exit(n != 7); } -], bash_cv_func_snprintf=yes, bash_cv_func_snprintf=no, +]])], [bash_cv_func_snprintf=yes], [bash_cv_func_snprintf=no], [AC_MSG_WARN([cannot check standard snprintf if cross-compiling]) bash_cv_func_snprintf=yes] )]) @@ -2127,7 +2092,7 @@ AC_DEFUN([BASH_FUNC_VSNPRINTF], AC_CHECK_FUNCS_ONCE([vsnprintf]) if test X$ac_cv_func_vsnprintf = Xyes; then AC_CACHE_CHECK([for standard-conformant vsnprintf], [bash_cv_func_vsnprintf], - [AC_TRY_RUN([ + [AC_RUN_IFELSE([AC_LANG_SOURCE([[ #if HAVE_STDARG_H #include #else @@ -2165,7 +2130,7 @@ main() n = foo("%s", "0123456"); exit(n != 7); } -], bash_cv_func_vsnprintf=yes, bash_cv_func_vsnprintf=no, +]])], [bash_cv_func_vsnprintf=yes], [bash_cv_func_vsnprintf=no], [AC_MSG_WARN([cannot check standard vsnprintf if cross-compiling]) bash_cv_func_vsnprintf=yes] )]) @@ -2182,7 +2147,7 @@ main() AC_DEFUN(BASH_STRUCT_WEXITSTATUS_OFFSET, [AC_MSG_CHECKING(for offset of exit status in return status from wait) AC_CACHE_VAL(bash_cv_wexitstatus_offset, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include @@ -2216,7 +2181,7 @@ main(c, v) exit (254); } -], bash_cv_wexitstatus_offset=0, bash_cv_wexitstatus_offset=$?, +]])], [bash_cv_wexitstatus_offset=0], [bash_cv_wexitstatus_offset=$?], [AC_MSG_WARN(cannot check WEXITSTATUS offset if cross compiling -- defaulting to 0) bash_cv_wexitstatus_offset=0] )]) @@ -2232,13 +2197,15 @@ AC_DEFUN([BASH_FUNC_SBRK], [ AC_MSG_CHECKING([for sbrk]) AC_CACHE_VAL(ac_cv_func_sbrk, - [AC_TRY_LINK([#include ], - [ void *x = sbrk (4096); ], - ac_cv_func_sbrk=yes, ac_cv_func_sbrk=no)]) + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[ void *x = sbrk (4096); ]])], + [ac_cv_func_sbrk=yes],[ac_cv_func_sbrk=no])]) AC_MSG_RESULT($ac_cv_func_sbrk) if test X$ac_cv_func_sbrk = Xyes; then AC_CACHE_CHECK([for working sbrk], [bash_cv_func_sbrk], - [AC_TRY_RUN([ + [AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include @@ -2250,10 +2217,9 @@ main(int c, char **v) x = sbrk (4096); exit ((x == (void *)-1) ? 1 : 0); } -], bash_cv_func_sbrk=yes, bash_cv_func_snprintf=sbrk, - [AC_MSG_WARN([cannot check working sbrk if cross-compiling]) - bash_cv_func_sbrk=yes] -)]) +]])],[bash_cv_func_sbrk=yes],[bash_cv_func_sbrk=no],[AC_MSG_WARN([cannot check working sbrk if cross-compiling]) + bash_cv_func_sbrk=yes +])]) if test $bash_cv_func_sbrk = no; then ac_cv_func_sbrk=no fi @@ -2267,7 +2233,7 @@ main(int c, char **v) AC_DEFUN(BASH_FUNC_FNMATCH_EQUIV_FALLBACK, [AC_MSG_CHECKING(whether fnmatch can be used to check bracket equivalence classes) AC_CACHE_VAL(bash_cv_fnmatch_equiv_fallback, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include #include @@ -2287,8 +2253,7 @@ main (int c, char **v) exit (0); exit (1); } - -], bash_cv_fnmatch_equiv_fallback=yes, bash_cv_fnmatch_equiv_fallback=no, +]])], [bash_cv_fnmatch_equiv_fallback=yes], [bash_cv_fnmatch_equiv_fallback=no], [AC_MSG_WARN(cannot check fnmatch if cross compiling -- defaulting to no) bash_cv_fnmatch_equiv_fallback=no] )]) diff --git a/bind.c b/bind.c index 7610378..971116a 100644 --- a/bind.c +++ b/bind.c @@ -1,6 +1,6 @@ /* bind.c -- key binding and startup file support for the readline library. */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2022 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -72,7 +72,7 @@ extern char *strchr (), *strrchr (); /* Variables exported by this file. */ Keymap rl_binding_keymap; -static int _rl_skip_to_delim PARAMS((char *, int, int)); +static int _rl_skip_to_delim (char *, int, int); #if defined (USE_VARARGS) && defined (PREFER_STDARG) static void _rl_init_file_error (const char *, ...) __attribute__((__format__ (printf, 1, 2))); @@ -80,23 +80,23 @@ static void _rl_init_file_error (const char *, ...) __attribute__((__format__ ( static void _rl_init_file_error (); #endif -static rl_command_func_t *_rl_function_of_keyseq_internal PARAMS((const char *, size_t, Keymap, int *)); +static rl_command_func_t *_rl_function_of_keyseq_internal (const char *, size_t, Keymap, int *); -static char *_rl_read_file PARAMS((char *, size_t *)); -static int _rl_read_init_file PARAMS((const char *, int)); -static int glean_key_from_name PARAMS((char *)); +static char *_rl_read_file (char *, size_t *); +static int _rl_read_init_file (const char *, int); +static int glean_key_from_name (char *); -static int find_boolean_var PARAMS((const char *)); -static int find_string_var PARAMS((const char *)); +static int find_boolean_var (const char *); +static int find_string_var (const char *); -static const char *boolean_varname PARAMS((int)); -static const char *string_varname PARAMS((int)); +static const char *boolean_varname (int); +static const char *string_varname (int); -static char *_rl_get_string_variable_value PARAMS((const char *)); -static int substring_member_of_array PARAMS((const char *, const char * const *)); +static char *_rl_get_string_variable_value (const char *); +static int substring_member_of_array (const char *, const char * const *); -static int _rl_get_keymap_by_name PARAMS((const char *)); -static int _rl_get_keymap_by_map PARAMS((Keymap)); +static int _rl_get_keymap_by_name (const char *); +static int _rl_get_keymap_by_map (Keymap); static int currently_reading_init_file; @@ -880,6 +880,85 @@ rl_function_of_keyseq_len (const char *keyseq, size_t len, Keymap map, int *type return _rl_function_of_keyseq_internal (keyseq, len, map, type); } +/* Assuming there is a numeric argument at the beginning of KEYSEQ (the + caller is responsible for checking), return the index of the portion of + the key sequence following the numeric argument. If there's no numeric + argument (?), or if KEYSEQ consists solely of a numeric argument (?), + return -1. */ +int +rl_trim_arg_from_keyseq (const char *keyseq, size_t len, Keymap map) +{ + register int i, j, parsing_digits; + unsigned char ic; + Keymap map0; + + if (map == 0) + map = _rl_keymap; + map0 = map; + + /* The digits following the initial one (e.g., the binding to digit-argument) + or the optional `-' in a binding to digit-argument or universal-argument + are not added to rl_executing_keyseq. This is basically everything read by + rl_digit_loop. The parsing_digits logic is here in case they ever are. */ + for (i = j = parsing_digits = 0; keyseq && i < len; i++) + { + ic = keyseq[i]; + + if (parsing_digits) + { + if (_rl_digit_p (ic)) + { + j = i + 1; + continue; + } + parsing_digits = 0; + } + + if (map[ic].type == ISKMAP) + { + if (i + 1 == len) + return -1; + map = FUNCTION_TO_KEYMAP (map, ic); + continue; + } + if (map[ic].type == ISFUNC) + { +#if defined (VI_MODE) + if (map[ic].function != rl_digit_argument && map[ic].function != rl_universal_argument && map[ic].function != rl_vi_arg_digit) +#else + if (map[ic].function != rl_digit_argument && map[ic].function != rl_universal_argument) +#endif + return (j); + + /* We don't bother with a keyseq that is only a numeric argument */ + if (i + 1 == len) + return -1; + + parsing_digits = 1; + + /* This logic should be identical to rl_digit_loop */ + /* We accept M-- as equivalent to M--1, C-u- as equivalent to C-u-1 + but set parsing_digits to 2 to note that we saw `-' */ + if (map[ic].function == rl_universal_argument && (i + 1 == '-')) + { + i++; + parsing_digits = 2; + } + if (map[ic].function == rl_digit_argument && ic == '-') + { + parsing_digits = 2; + } + + map = map0; + j = i + 1; + } + } + + /* If we're still parsing digits by the time we get here, we don't allow a + key sequence that consists solely of a numeric argument */ + return -1; +} + /* The last key bindings file read. */ static char *last_readline_init_file = (char *)NULL; @@ -1143,7 +1222,7 @@ parse_comparison_op (s, indp) /* */ /* **************************************************************** */ -typedef int _rl_parser_func_t PARAMS((char *)); +typedef int _rl_parser_func_t (char *); /* Things that mean `Control'. */ const char * const _rl_possible_control_prefixes[] = { @@ -1154,6 +1233,12 @@ const char * const _rl_possible_meta_prefixes[] = { "Meta", "M-", (const char *)NULL }; +/* Forward declarations */ +static int parser_if (char *); +static int parser_else (char *); +static int parser_endif (char *); +static int parser_include (char *); + /* Conditionals. */ /* Calling programs set this to have their argv[0]. */ @@ -1813,6 +1898,7 @@ static const struct { { "convert-meta", &_rl_convert_meta_chars_to_ascii, 0 }, { "disable-completion", &rl_inhibit_completion, 0 }, { "echo-control-characters", &_rl_echo_control_chars, 0 }, + { "enable-active-region", &_rl_enable_active_region, 0 }, { "enable-bracketed-paste", &_rl_enable_bracketed_paste, V_SPECIAL }, { "enable-keypad", &_rl_enable_keypad, 0 }, { "enable-meta-key", &_rl_enable_meta, 0 }, @@ -1883,7 +1969,7 @@ hack_special_boolean_var (int i) _rl_enable_active_region = _rl_enable_bracketed_paste; } -typedef int _rl_sv_func_t PARAMS((const char *)); +typedef int _rl_sv_func_t (const char *); /* These *must* correspond to the array indices for the appropriate string variable. (Though they're not used right now.) */ @@ -1897,25 +1983,29 @@ typedef int _rl_sv_func_t PARAMS((const char *)); #define V_INT 2 /* Forward declarations */ -static int sv_bell_style PARAMS((const char *)); -static int sv_combegin PARAMS((const char *)); -static int sv_dispprefix PARAMS((const char *)); -static int sv_compquery PARAMS((const char *)); -static int sv_compwidth PARAMS((const char *)); -static int sv_editmode PARAMS((const char *)); -static int sv_emacs_modestr PARAMS((const char *)); -static int sv_histsize PARAMS((const char *)); -static int sv_isrchterm PARAMS((const char *)); -static int sv_keymap PARAMS((const char *)); -static int sv_seqtimeout PARAMS((const char *)); -static int sv_viins_modestr PARAMS((const char *)); -static int sv_vicmd_modestr PARAMS((const char *)); +static int sv_region_start_color (const char *); +static int sv_region_end_color (const char *); +static int sv_bell_style (const char *); +static int sv_combegin (const char *); +static int sv_dispprefix (const char *); +static int sv_compquery (const char *); +static int sv_compwidth (const char *); +static int sv_editmode (const char *); +static int sv_emacs_modestr (const char *); +static int sv_histsize (const char *); +static int sv_isrchterm (const char *); +static int sv_keymap (const char *); +static int sv_seqtimeout (const char *); +static int sv_viins_modestr (const char *); +static int sv_vicmd_modestr (const char *); static const struct { const char * const name; int flags; _rl_sv_func_t *set_func; } string_varlist[] = { + { "active-region-end-color", V_STRING, sv_region_end_color }, + { "active-region-start-color", V_STRING, sv_region_start_color }, { "bell-style", V_STRING, sv_bell_style }, { "comment-begin", V_STRING, sv_combegin }, { "completion-display-width", V_INT, sv_compwidth }, @@ -2134,6 +2224,18 @@ sv_seqtimeout (const char *value) return 0; } +static int +sv_region_start_color (const char *value) +{ + return (_rl_reset_region_color (0, value)); +} + +static int +sv_region_end_color (const char *value) +{ + return (_rl_reset_region_color (1, value)); +} + static int sv_bell_style (const char *value) { @@ -2548,6 +2650,15 @@ _rl_get_keyname (int key) keyname[i++] = (c / 8) + '0'; c = (c % 8) + '0'; } + /* These characters are valid UTF-8; convert them into octal escape + sequences as well. This changes C. */ + else if (c >= 160) + { + keyname[i++] = '\\'; + keyname[i++] = '0' + ((((unsigned char)c) >> 6) & 0x07); + keyname[i++] = '0' + ((((unsigned char)c) >> 3) & 0x07); + c = (c % 8) + '0'; + } /* Now, if the character needs to be quoted with a backslash, do that. */ if (c == '\\' || c == '"') diff --git a/callback.c b/callback.c index a466cf9..69df77d 100644 --- a/callback.c +++ b/callback.c @@ -1,6 +1,6 @@ /* callback.c -- functions to use readline as an X `callback' mechanism. */ -/* Copyright (C) 1987-2017 Free Software Foundation, Inc. +/* Copyright (C) 1987-2022 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -136,6 +136,8 @@ rl_callback_read_char (void) abort (); } + eof = 0; + memcpy ((void *)olevel, (void *)_rl_top_level, sizeof (procenv_t)); #if defined (HAVE_POSIX_SIGSETJMP) jcode = sigsetjmp (_rl_top_level, 0); @@ -147,6 +149,14 @@ rl_callback_read_char (void) (*rl_redisplay_function) (); _rl_want_redisplay = 0; memcpy ((void *)_rl_top_level, (void *)olevel, sizeof (procenv_t)); + + /* If we longjmped because of a timeout, handle it here. */ + if (RL_ISSTATE (RL_STATE_TIMEOUT)) + { + RL_SETSTATE (RL_STATE_DONE); + rl_done = 1; + } + CALLBACK_READ_RETURN (); } @@ -268,6 +278,13 @@ rl_callback_read_char (void) _rl_want_redisplay = 0; } + /* Make sure application hooks can see whether we saw EOF. */ + if (eof > 0) + { + rl_eof_found = eof; + RL_SETSTATE(RL_STATE_EOF); + } + if (rl_done) { line = readline_internal_teardown (eof); @@ -278,7 +295,8 @@ rl_callback_read_char (void) rl_clear_signals (); #endif in_handler = 0; - (*rl_linefunc) (line); + if (rl_linefunc) /* just in case */ + (*rl_linefunc) (line); /* If the user did not clear out the line, do it for him. */ if (rl_line_buffer[0]) diff --git a/chardefs.h b/chardefs.h index 3cf1326..24a25f1 100644 --- a/chardefs.h +++ b/chardefs.h @@ -1,6 +1,6 @@ /* chardefs.h -- Character definitions for readline. */ -/* Copyright (C) 1994-2015 Free Software Foundation, Inc. +/* Copyright (C) 1994-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -26,9 +26,6 @@ #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) @@ -66,22 +63,26 @@ #define UNMETA(c) ((c) & (~meta_character_bit)) #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) +#ifndef UCHAR_MAX +# define UCHAR_MAX 255 #endif - -#if !defined (isxdigit) && !defined (HAVE_ISXDIGIT) && !defined (__cplusplus) -# define isxdigit(c) (isdigit((unsigned char)(c)) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F')) +#ifndef CHAR_MAX +# define CHAR_MAX 127 #endif -#if defined (CTYPE_NON_ASCII) +/* use this as a proxy for C89 */ +#if defined (HAVE_STDLIB_H) && defined (HAVE_STRING_H) +# define IN_CTYPE_DOMAIN(c) 1 # define NON_NEGATIVE(c) 1 #else +# define IN_CTYPE_DOMAIN(c) ((c) >= 0 && (c) <= CHAR_MAX) # define NON_NEGATIVE(c) ((unsigned char)(c) == (c)) #endif +#if !defined (isxdigit) && !defined (HAVE_ISXDIGIT) && !defined (__cplusplus) +# define isxdigit(c) (isdigit((unsigned char)(c)) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F')) +#endif + /* Some systems define these; we want our definitions. */ #undef ISPRINT @@ -99,12 +100,12 @@ #define _rl_uppercase_p(c) (NON_NEGATIVE(c) && ISUPPER(c)) #define _rl_digit_p(c) ((c) >= '0' && (c) <= '9') +#define _rl_alphabetic_p(c) (NON_NEGATIVE(c) && ISALNUM(c)) #define _rl_pure_alphabetic(c) (NON_NEGATIVE(c) && ISALPHA(c)) -#define ALPHABETIC(c) (NON_NEGATIVE(c) && ISALNUM(c)) #ifndef _rl_to_upper -# define _rl_to_upper(c) (_rl_lowercase_p(c) ? toupper((unsigned char)c) : (c)) -# define _rl_to_lower(c) (_rl_uppercase_p(c) ? tolower((unsigned char)c) : (c)) +# define _rl_to_upper(c) (_rl_lowercase_p(c) ? toupper((unsigned char)(c)) : (c)) +# define _rl_to_lower(c) (_rl_uppercase_p(c) ? tolower((unsigned char)(c)) : (c)) #endif #ifndef _rl_digit_value diff --git a/colors.c b/colors.c index 9e37527..dba81a2 100644 --- a/colors.c +++ b/colors.c @@ -2,7 +2,7 @@ Modified by Chet Ramey for Readline. - Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012, 2015, 2017, 2019 + Copyright (C) 1985, 1988, 1990-1991, 1995-2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -73,6 +73,8 @@ static bool is_colored (enum indicator_no type); static void restore_default_color (void); +#define RL_COLOR_PREFIX_EXTENSION "readline-colored-completion-prefix" + COLOR_EXT_TYPE *_rl_color_ext_list = 0; /* Output a color indicator (which may contain nulls). */ @@ -110,13 +112,28 @@ _rl_set_normal_color (void) } } +static struct bin_str * +_rl_custom_readline_prefix (void) +{ + size_t len; + COLOR_EXT_TYPE *ext; + + len = strlen (RL_COLOR_PREFIX_EXTENSION); + for (ext = _rl_color_ext_list; ext; ext = ext->next) + if (ext->ext.len == len && STREQN (ext->ext.string, RL_COLOR_PREFIX_EXTENSION, len)) + return (&ext->seq); + return (NULL); +} + bool _rl_print_prefix_color (void) { struct bin_str *s; /* What do we want to use for the prefix? Let's try cyan first, see colors.h */ - s = &_rl_color_indicator[C_PREFIX]; + s = _rl_custom_readline_prefix (); + if (s == 0) + s = &_rl_color_indicator[C_PREFIX]; if (s->string != NULL) { if (is_colored (C_NORM)) @@ -239,8 +256,10 @@ _rl_print_color_indicator (const char *f) else if (S_ISSOCK (mode)) colored_filetype = C_SOCK; #endif +#if defined (S_ISBLK) else if (S_ISBLK (mode)) colored_filetype = C_BLK; +#endif else if (S_ISCHR (mode)) colored_filetype = C_CHR; else diff --git a/compat.c b/compat.c index 3ade362..fc2a48f 100644 --- a/compat.c +++ b/compat.c @@ -1,6 +1,6 @@ /* compat.c -- backwards compatibility functions. */ -/* Copyright (C) 2000-2017 Free Software Foundation, Inc. +/* Copyright (C) 2000-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -30,18 +30,18 @@ #include "rlstdc.h" #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 void rl_free_undo_list (void); +extern int rl_maybe_save_line (void); +extern int rl_maybe_unsave_line (void); +extern int rl_maybe_replace_line (void); -extern int rl_crlf PARAMS((void)); -extern int rl_ding PARAMS((void)); -extern int rl_alphabetic PARAMS((int)); +extern int rl_crlf (void); +extern int rl_ding (void); +extern int rl_alphabetic (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)); +extern char **rl_completion_matches (const char *, rl_compentry_func_t *); +extern char *rl_username_completion_function (const char *, int); +extern char *rl_filename_completion_function (const char *, int); /* Provide backwards-compatible entry points for old function names. */ diff --git a/complete.c b/complete.c index fc5c3ad..e5d224e 100644 --- a/complete.c +++ b/complete.c @@ -1,6 +1,6 @@ /* complete.c -- filename completion for readline. */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -95,7 +95,7 @@ typedef int QSFUNC (); /* Most systems don't declare getpwent in if _POSIX_SOURCE is defined. */ #if defined (HAVE_GETPWENT) && (!defined (HAVE_GETPW_DECLS) || defined (_POSIX_SOURCE)) -extern struct passwd *getpwent PARAMS((void)); +extern struct passwd *getpwent (void); #endif /* HAVE_GETPWENT && (!HAVE_GETPW_DECLS || _POSIX_SOURCE) */ /* If non-zero, then this is the address of a function to call when @@ -114,44 +114,44 @@ rl_compdisp_func_t *rl_completion_display_matches_hook = (rl_compdisp_func_t *)N #endif #if defined (VISIBLE_STATS) -static int stat_char PARAMS((char *)); +static int stat_char (char *); #endif #if defined (COLOR_SUPPORT) -static int colored_stat_start PARAMS((const char *)); -static void colored_stat_end PARAMS((void)); -static int colored_prefix_start PARAMS((void)); -static void colored_prefix_end PARAMS((void)); +static int colored_stat_start (const char *); +static void colored_stat_end (void); +static int colored_prefix_start (void); +static void colored_prefix_end (void); #endif -static int path_isdir PARAMS((const char *)); +static int path_isdir (const char *); -static char *rl_quote_filename PARAMS((char *, int, char *)); +static char *rl_quote_filename (char *, int, char *); -static void _rl_complete_sigcleanup PARAMS((int, void *)); +static void _rl_complete_sigcleanup (int, void *); -static void set_completion_defaults PARAMS((int)); -static int get_y_or_n PARAMS((int)); -static int _rl_internal_pager PARAMS((int)); -static char *printable_part PARAMS((char *)); -static int fnwidth PARAMS((const char *)); -static int fnprint PARAMS((const char *, int, const char *)); -static int print_filename PARAMS((char *, char *, int)); +static void set_completion_defaults (int); +static int get_y_or_n (int); +static int _rl_internal_pager (int); +static char *printable_part (char *); +static int fnwidth (const char *); +static int fnprint (const char *, int, const char *); +static int print_filename (char *, char *, int); -static char **gen_completion_matches PARAMS((char *, int, int, rl_compentry_func_t *, int, int)); +static char **gen_completion_matches (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 int complete_fncmp PARAMS((const char *, int, const char *, int)); -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 int compare_match PARAMS((char *, const char *)); -static int complete_get_screenwidth PARAMS((void)); +static char **remove_duplicate_matches (char **); +static void insert_match (char *, int, int, char *); +static int append_to_match (char *, int, int, int); +static void insert_all_matches (char **, int, char *); +static int complete_fncmp (const char *, int, const char *, int); +static void display_matches (char **); +static int compute_lcd_of_matches (char **, int, const char *); +static int postprocess_matches (char ***, int); +static int compare_match (char *, const char *); +static int complete_get_screenwidth (void); -static char *make_quoted_replacement PARAMS((char *, int, char *)); +static char *make_quoted_replacement (char *, int, char *); /* **************************************************************** */ /* */ @@ -304,7 +304,7 @@ const char *rl_basic_quote_characters = "\"'"; /* The list of characters that signal a break between words for rl_complete_internal. The default list is the contents of rl_basic_word_break_characters. */ -/*const*/ char *rl_completer_word_break_characters = (/*const*/ char *)NULL; +const char *rl_completer_word_break_characters = 0; /* Hook function to allow an application to set the completion word break characters before readline breaks up the line. Allows @@ -757,7 +757,7 @@ fnwidth (const char *string) mbstate_t ps; int left, w; size_t clen; - wchar_t wc; + WCHAR_T wc; left = strlen (string) + 1; memset (&ps, 0, sizeof (mbstate_t)); @@ -774,7 +774,7 @@ fnwidth (const char *string) else { #if defined (HANDLE_MULTIBYTE) - clen = mbrtowc (&wc, string + pos, left - pos, &ps); + clen = MBRTOWC (&wc, string + pos, left - pos, &ps); if (MB_INVALIDCH (clen)) { width++; @@ -812,7 +812,7 @@ fnprint (const char *to_print, int prefix_bytes, const char *real_pathname) const char *end; size_t tlen; int width; - wchar_t wc; + WCHAR_T wc; print_len = strlen (to_print); end = to_print + print_len + 1; @@ -835,7 +835,8 @@ fnprint (const char *to_print, int prefix_bytes, const char *real_pathname) colored_stat_start (real_pathname); #endif - if (prefix_bytes && _rl_completion_prefix_display_length > 0) + if (prefix_bytes && _rl_completion_prefix_display_length > 0 && + prefix_bytes > _rl_completion_prefix_display_length) { char ellipsis; @@ -880,7 +881,7 @@ fnprint (const char *to_print, int prefix_bytes, const char *real_pathname) else { #if defined (HANDLE_MULTIBYTE) - tlen = mbrtowc (&wc, s, end - s, &ps); + tlen = MBRTOWC (&wc, s, end - s, &ps); if (MB_INVALIDCH (tlen)) { tlen = 1; @@ -1078,7 +1079,8 @@ char _rl_find_completion_word (int *fp, int *dp) { int scan, end, found_quote, delimiter, pass_next, isbrk; - char quote_char, *brkchars; + char quote_char; + const char *brkchars; end = rl_point; found_quote = delimiter = 0; @@ -1321,7 +1323,7 @@ compute_lcd_of_matches (char **match_list, int matches, const char *text) int v; size_t v1, v2; mbstate_t ps1, ps2; - wchar_t wc1, wc2; + WCHAR_T wc1, wc2; #endif /* If only one match, just use that. Otherwise, compare each @@ -1353,8 +1355,8 @@ compute_lcd_of_matches (char **match_list, int matches, const char *text) #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { - v1 = mbrtowc(&wc1, match_list[i]+si, strlen (match_list[i]+si), &ps1); - v2 = mbrtowc (&wc2, match_list[i+1]+si, strlen (match_list[i+1]+si), &ps2); + v1 = MBRTOWC (&wc1, match_list[i]+si, strlen (match_list[i]+si), &ps1); + v2 = MBRTOWC (&wc2, match_list[i+1]+si, strlen (match_list[i+1]+si), &ps2); if (MB_INVALIDCH (v1) || MB_INVALIDCH (v2)) { if (c1 != c2) /* do byte comparison */ @@ -1364,7 +1366,7 @@ compute_lcd_of_matches (char **match_list, int matches, const char *text) if (_rl_completion_case_fold) { wc1 = towlower (wc1); - wc2 = towlower (wc2); + wc2 = towlower (wc2); } if (wc1 != wc2) break; @@ -1547,7 +1549,7 @@ rl_display_match_list (char **matches, int len, int max) if (common_length > _rl_completion_prefix_display_length && common_length > ELLIPSIS_LEN) max -= common_length - ELLIPSIS_LEN; - else + else if (_rl_colored_completion_prefix <= 0) common_length = sind = 0; } #if defined (COLOR_SUPPORT) @@ -1979,7 +1981,7 @@ compare_match (char *text, const char *match) { temp = (*rl_filename_dequoting_function) (text, rl_completion_quote_character); r = strcmp (temp, match); - free (temp); + xfree (temp); return r; } return (strcmp (text, match)); @@ -2330,7 +2332,7 @@ complete_fncmp (const char *convfn, int convlen, const char *filename, int filen #if defined (HANDLE_MULTIBYTE) size_t v1, v2; mbstate_t ps1, ps2; - wchar_t wc1, wc2; + WCHAR_T wc1, wc2; #endif #if defined (HANDLE_MULTIBYTE) @@ -2357,8 +2359,8 @@ complete_fncmp (const char *convfn, int convlen, const char *filename, int filen { do { - v1 = mbrtowc (&wc1, s1, convlen, &ps1); - v2 = mbrtowc (&wc2, s2, filename_len, &ps2); + v1 = MBRTOWC (&wc1, s1, convlen, &ps1); + v2 = MBRTOWC (&wc2, s2, filename_len, &ps2); if (v1 == 0 && v2 == 0) return 1; else if (MB_INVALIDCH (v1) || MB_INVALIDCH (v2)) @@ -2407,8 +2409,8 @@ complete_fncmp (const char *convfn, int convlen, const char *filename, int filen { do { - v1 = mbrtowc (&wc1, s1, convlen, &ps1); - v2 = mbrtowc (&wc2, s2, filename_len, &ps2); + v1 = MBRTOWC (&wc1, s1, convlen, &ps1); + v2 = MBRTOWC (&wc2, s2, filename_len, &ps2); if (v1 == 0 && v2 == 0) return 1; else if (MB_INVALIDCH (v1) || MB_INVALIDCH (v2)) diff --git a/config.h.in b/config.h.in index 6de47b5..521e778 100644 --- a/config.h.in +++ b/config.h.in @@ -1,6 +1,8 @@ /* config.h.in. Maintained by hand. */ /* Template definitions for autoconf */ + +/* These are set by AC_USE_SYSTEM_EXTENSIONS */ #undef __EXTENSIONS__ #undef _ALL_SOURCE #undef _GNU_SOURCE @@ -16,12 +18,9 @@ #undef _FILE_OFFSET_BITS -/* Define as the return type of signal handlers (int or void). */ -#undef RETSIGTYPE - -#undef VOID_SIGHANDLER - /* Characteristics of the compiler. */ +#undef inline + #undef sig_atomic_t #undef size_t @@ -58,6 +57,9 @@ /* Define if you have the getpwuid function. */ #undef HAVE_GETPWUID +/* Define if you have the gettimeofday function. */ +#undef HAVE_GETTIMEOFDAY + /* Define if you have the isascii function. */ #undef HAVE_ISASCII @@ -106,6 +108,9 @@ /* Define if you have the setenv function. */ #undef HAVE_SETENV +/* Define if you have the setitimer function. */ +#undef HAVE_SETITIMER + /* Define if you have the setlocale function. */ #undef HAVE_SETLOCALE @@ -120,6 +125,9 @@ /* Define if you have the strpbrk function. */ #undef HAVE_STRPBRK +/* Define if you have the sysconf function. */ +#undef HAVE_SYSCONF + /* Define if you have the tcgetattr function. */ #undef HAVE_TCGETATTR @@ -147,8 +155,6 @@ /* and whether it works */ #undef WCWIDTH_BROKEN -#undef STDC_HEADERS - /* Define if you have the header file. */ #undef HAVE_DIRENT_H @@ -218,6 +224,9 @@ /* Define if you have the header file. */ #undef HAVE_SYS_STREAM_H +/* Define if you have the header file. */ +#undef HAVE_SYS_TIME_H + /* Define if you have the header file. */ #undef HAVE_TERMCAP_H @@ -257,8 +266,6 @@ #undef HAVE_DECL_AUDIT_USER_TTY /* Definitions pulled in from aclocal.m4. */ -#undef VOID_SIGHANDLER - #undef GWINSZ_IN_SYS_IOCTL #undef STRUCT_WINSIZE_IN_SYS_IOCTL @@ -279,6 +286,8 @@ #undef HAVE_STRUCT_DIRENT_D_NAMLEN +#undef HAVE_TIMEVAL + #undef HAVE_BSD_SIGNALS #undef HAVE_POSIX_SIGNALS diff --git a/configure b/configure index 5a0bf2f..cb4e07a 100755 --- a/configure +++ b/configure @@ -1,12 +1,13 @@ #! /bin/sh -# From configure.ac for Readline 8.1, version 2.90. +# From configure.ac for Readline 8.2, version 2.97. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for readline 8.1. +# Generated by GNU Autoconf 2.71 for readline 8.2. # # Report bugs to . # # -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, +# Inc. # # # This configure script is free software; the Free Software Foundation @@ -17,14 +18,16 @@ # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else +else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( @@ -34,46 +37,46 @@ esac fi + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then +if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -82,13 +85,6 @@ if test "${PATH_SEPARATOR+set}" != set; then fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -97,8 +93,12 @@ case $0 in #(( for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS @@ -110,30 +110,10 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. @@ -155,20 +135,22 @@ esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + as_bourne_compatible="as_nop=: +if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST -else +else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( @@ -188,42 +170,53 @@ as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : -else +else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : + if (eval "$as_required") 2>/dev/null +then : as_have_required=yes -else +else $as_nop as_have_required=no fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : -else +else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base + as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : break 2 fi fi @@ -231,14 +224,21 @@ fi esac as_found=false done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi +fi - if test "x$CONFIG_SHELL" != x; then : + if test "x$CONFIG_SHELL" != x +then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also @@ -256,18 +256,19 @@ esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else - $as_echo "$0: Please tell bug-autoconf@gnu.org and + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and $0: bug-readline@gnu.org about your system, including any $0: error possibly output before this message. Then install $0: a modern shell, or manually run the script under such a @@ -295,6 +296,7 @@ as_fn_unset () } as_unset=as_fn_unset + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -312,6 +314,14 @@ as_fn_exit () as_fn_set_status $1 exit $1 } # as_fn_exit +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop # as_fn_mkdir_p # ------------- @@ -326,7 +336,7 @@ as_fn_mkdir_p () as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -335,7 +345,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | +printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -374,12 +384,13 @@ as_fn_executable_p () # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : eval 'as_fn_append () { eval $1+=\$2 }' -else +else $as_nop as_fn_append () { eval $1=\$$1\$2 @@ -391,18 +402,27 @@ fi # as_fn_append # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else +else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- @@ -414,9 +434,9 @@ as_fn_error () as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $2" >&2 + printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error @@ -443,7 +463,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | +printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -487,7 +507,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall @@ -501,6 +521,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits exit } + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) @@ -514,6 +538,13 @@ case `echo -n x` in #((((( ECHO_N='-n';; esac +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + + rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -581,48 +612,44 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='readline' PACKAGE_TARNAME='readline' -PACKAGE_VERSION='8.1' -PACKAGE_STRING='readline 8.1' +PACKAGE_VERSION='8.2' +PACKAGE_STRING='readline 8.2' PACKAGE_BUGREPORT='bug-readline@gnu.org' PACKAGE_URL='' ac_unique_file="readline.h" # Factoring default headers for most tests. ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include +#include +#ifdef HAVE_STDIO_H +# include #endif -#ifdef STDC_HEADERS +#ifdef HAVE_STDLIB_H # include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif #endif #ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif # include #endif -#ifdef HAVE_STRINGS_H -# include -#endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif #ifdef HAVE_UNISTD_H # include #endif" +ac_header_c_list= ac_subst_vars='LTLIBOBJS TERMCAP_PKG_CONFIG_LIB TERMCAP_LIB @@ -701,6 +728,7 @@ infodir docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -724,6 +752,7 @@ ac_subst_files='' ac_user_opts=' enable_option_checking with_curses +with_shared_termcap_library enable_multibyte enable_shared enable_static @@ -778,6 +807,7 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -807,8 +837,6 @@ do *) ac_optarg=yes ;; esac - # Accept the important Cygnus configure options, so we can diagnose typos. - case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; @@ -849,9 +877,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" + as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -875,9 +903,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" + as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -1030,6 +1058,15 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1079,9 +1116,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" + as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1095,9 +1132,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" + as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1141,9 +1178,9 @@ Try \`$0 --help' for more information" *) # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; @@ -1159,7 +1196,7 @@ if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi @@ -1167,7 +1204,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1223,7 +1260,7 @@ $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | +printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -1280,7 +1317,7 @@ 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 <<_ACEOF -\`configure' configures readline 8.1 to adapt to many kinds of systems. +\`configure' configures readline 8.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1320,6 +1357,7 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1345,7 +1383,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of readline 8.1:";; + short | recursive ) echo "Configuration of readline 8.2:";; esac cat <<\_ACEOF @@ -1368,6 +1406,9 @@ Optional Packages: --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-curses use the curses library instead of the termcap library + --with-shared-termcap-library + link the readline shared library against the + termcap/curses shared library [[default=NO]] Some influential environment variables: CC C compiler command @@ -1398,9 +1439,9 @@ if test "$ac_init_help" = "recursive"; then case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -1428,7 +1469,8 @@ esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive @@ -1436,7 +1478,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix echo && $SHELL "$ac_srcdir/configure" --help=recursive else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done @@ -1445,10 +1487,10 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -readline configure 8.1 -generated by GNU Autoconf 2.69 +readline configure 8.2 +generated by GNU Autoconf 2.71 -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2021 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF @@ -1465,14 +1507,14 @@ fi ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext + rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1480,14 +1522,15 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err - } && test -s conftest.$ac_objext; then : + } && test -s conftest.$ac_objext +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1497,6 +1540,39 @@ fi } # ac_fn_c_try_compile +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else $as_nop + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. @@ -1509,7 +1585,7 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1517,14 +1593,15 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err - }; then : + } +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1534,170 +1611,6 @@ fi } # ac_fn_c_try_cpp -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## ----------------------------------- ## -## Report this to bug-readline@gnu.org ## -## ----------------------------------- ##" - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache @@ -1705,17 +1618,18 @@ $as_echo "$ac_res" >&6; } ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { if (sizeof ($2)) return 0; @@ -1723,12 +1637,13 @@ if (sizeof ($2)) return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { if (sizeof (($2))) return 0; @@ -1736,18 +1651,19 @@ if (sizeof (($2))) return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -else +else $as_nop eval "$3=yes" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type @@ -1758,14 +1674,14 @@ $as_echo "$ac_res" >&6; } ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1773,17 +1689,18 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext - }; then : + } +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1804,11 +1721,12 @@ fi ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. @@ -1816,16 +1734,9 @@ else #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif + which can conflict with char $2 (); below. */ +#include #undef $2 /* Override any GCC internal prototype to avoid an error. @@ -1843,47 +1754,154 @@ choke me #endif int -main () +main (void) { return $2 (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : eval "$3=yes" -else +else $as_nop eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func -# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES -# --------------------------------------------- +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that +# executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: program exited with status $ac_status" >&5 + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES +# ---------------------------------------------------- +# Tries to find if the field MEMBER exists in type AGGR, after including +# INCLUDES, setting cache variable VAR accordingly. +ac_fn_c_check_member () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 +printf %s "checking for $2.$3... " >&6; } +if eval test \${$4+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (sizeof ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else $as_nop + eval "$4=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +eval ac_res=\$$4 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_member + +# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR +# ------------------------------------------------------------------ # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR -# accordingly. -ac_fn_c_check_decl () +# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. +ac_fn_check_decl () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack as_decl_name=`echo $2|sed 's/ *(.*//'` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +printf %s "checking whether $as_decl_name is declared... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 -$as_echo_n "checking whether $as_decl_name is declared... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + eval ac_save_FLAGS=\$$6 + as_fn_append $6 " $5" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { #ifndef $as_decl_name #ifdef __cplusplus @@ -1897,19 +1915,22 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$3=yes" -else +else $as_nop eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + eval $6=\$ac_save_FLAGS + fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno -} # ac_fn_c_check_decl +} # ac_fn_check_decl # ac_fn_c_compute_int LINENO EXPR VAR INCLUDES # -------------------------------------------- @@ -1925,7 +1946,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) >= 0)]; test_array [0] = 0; @@ -1935,14 +1956,15 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_lo=0 ac_mid=0 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; @@ -1952,9 +1974,10 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_hi=$ac_mid; break -else +else $as_nop as_fn_arith $ac_mid + 1 && ac_lo=$as_val if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= @@ -1962,14 +1985,14 @@ else fi as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) < 0)]; test_array [0] = 0; @@ -1979,14 +2002,15 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_hi=-1 ac_mid=-1 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) >= $ac_mid)]; test_array [0] = 0; @@ -1996,9 +2020,10 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_lo=$ac_mid; break -else +else $as_nop as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= @@ -2006,14 +2031,14 @@ else fi as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done -else +else $as_nop ac_lo= ac_hi= fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val @@ -2021,7 +2046,7 @@ while test "x$ac_lo" != "x$ac_hi"; do /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; @@ -2031,12 +2056,13 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_hi=$ac_mid -else +else $as_nop as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done case $ac_lo in #(( ?*) eval "$3=\$ac_lo"; ac_retval=0 ;; @@ -2046,12 +2072,12 @@ esac cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 -static long int longval () { return $2; } -static unsigned long int ulongval () { return $2; } +static long int longval (void) { return $2; } +static unsigned long int ulongval (void) { return $2; } #include #include int -main () +main (void) { FILE *f = fopen ("conftest.val", "w"); @@ -2079,9 +2105,10 @@ main () return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : echo >>conftest.val; read $3 config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by readline $as_me 8.1, which was -generated by GNU Autoconf 2.69. Invocation command line was +It was created by readline $as_me 8.2, which was +generated by GNU Autoconf 2.71. Invocation command line was - $ $0 $@ + $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log @@ -2133,8 +2180,12 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS @@ -2169,7 +2220,7 @@ do | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; @@ -2204,11 +2255,13 @@ done # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? + # Sanitize IFS. + IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo - $as_echo "## ---------------- ## + printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo @@ -2219,8 +2272,8 @@ trap 'exit_status=$? case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -2244,7 +2297,7 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; ) echo - $as_echo "## ----------------- ## + printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo @@ -2252,14 +2305,14 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - $as_echo "$ac_var='\''$ac_val'\''" + printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## + printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo @@ -2267,15 +2320,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - $as_echo "$ac_var='\''$ac_val'\''" + printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then - $as_echo "## ----------- ## + printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo @@ -2283,8 +2336,8 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; echo fi test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" + printf "%s\n" "$as_me: caught signal $ac_signal" + printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && @@ -2298,63 +2351,48 @@ ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h -$as_echo "/* confdefs.h */" > confdefs.h +printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF +printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF +printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF +printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF +printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF +printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF +printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac + ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" + +for ac_site_file in $ac_site_files do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} + case $ac_site_file in #( + */*) : + ;; #( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi @@ -2364,19 +2402,436 @@ if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi +# Test code for whether the C compiler supports C89 (global declarations) +ac_c_conftest_c89_globals=' +/* Does the compiler advertise C89 conformance? + Do not test the value of __STDC__, because some compilers set it to 0 + while being otherwise adequately conformant. */ +#if !defined __STDC__ +# error "Compiler does not advertise C89 conformance" +#endif + +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*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; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + as an "x". The following induces an error, until -std is added to get + proper ANSI mode. Curiously \x00 != x always comes out true, for an + array size at least. It is necessary to write \x00 == 0 to get something + that is true only with -std. */ +int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) '\''x'\'' +int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), + int, int);' + +# Test code for whether the C compiler supports C89 (body of main). +ac_c_conftest_c89_main=' +ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); +' + +# Test code for whether the C compiler supports C99 (global declarations) +ac_c_conftest_c99_globals=' +// Does the compiler advertise C99 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L +# error "Compiler does not advertise C99 conformance" +#endif + +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +// dprintf is used instead of fprintf to avoid needing to declare +// FILE and stderr. +#define debug(...) dprintf (2, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + #error "your preprocessor is broken" +#endif +#if BIG_OK +#else + #error "your preprocessor is broken" +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // See if C++-style comments work. + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static bool +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str = ""; + int number = 0; + float fnumber = 0; + + while (*format) + { + switch (*format++) + { + case '\''s'\'': // string + str = va_arg (args_copy, const char *); + break; + case '\''d'\'': // int + number = va_arg (args_copy, int); + break; + case '\''f'\'': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); + + return *str && number && fnumber; +} +' + +# Test code for whether the C compiler supports C99 (body of main). +ac_c_conftest_c99_main=' + // Check bool. + _Bool success = false; + success |= (argc != 0); + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + char *restrict newvar = "Another string"; + + // Check varargs. + success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + struct incomplete_array *ia = + malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + int dynamic_array[ni.number]; + dynamic_array[0] = argv[0][0]; + dynamic_array[ni.number - 1] = 543; + + // work around unused variable warnings + ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' + || dynamic_array[ni.number - 1] != 543); +' + +# Test code for whether the C compiler supports C11 (global declarations) +ac_c_conftest_c11_globals=' +// Does the compiler advertise C11 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L +# error "Compiler does not advertise C11 conformance" +#endif + +// Check _Alignas. +char _Alignas (double) aligned_as_double; +char _Alignas (0) no_special_alignment; +extern char aligned_as_int; +char _Alignas (0) _Alignas (int) aligned_as_int; + +// Check _Alignof. +enum +{ + int_alignment = _Alignof (int), + int_array_alignment = _Alignof (int[100]), + char_alignment = _Alignof (char) +}; +_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); + +// Check _Noreturn. +int _Noreturn does_not_return (void) { for (;;) continue; } + +// Check _Static_assert. +struct test_static_assert +{ + int x; + _Static_assert (sizeof (int) <= sizeof (long int), + "_Static_assert does not work in struct"); + long int y; +}; + +// Check UTF-8 literals. +#define u8 syntax error! +char const utf8_literal[] = u8"happens to be ASCII" "another string"; + +// Check duplicate typedefs. +typedef long *long_ptr; +typedef long int *long_ptr; +typedef long_ptr long_ptr; + +// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. +struct anonymous +{ + union { + struct { int i; int j; }; + struct { int k; long int l; } w; + }; + int m; +} v1; +' + +# Test code for whether the C compiler supports C11 (body of main). +ac_c_conftest_c11_main=' + _Static_assert ((offsetof (struct anonymous, i) + == offsetof (struct anonymous, w.k)), + "Anonymous union alignment botch"); + v1.i = 2; + v1.w.k = 5; + ok |= v1.i != 5; +' + +# Test code for whether the C compiler supports C11 (complete). +ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} +${ac_c_conftest_c11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + ${ac_c_conftest_c11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C99 (complete). +ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (complete). +ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + return ok; +} +" + +as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" +as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" +as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" +as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" +as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" +as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" +as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" +as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" +as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" +as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H" +as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H" + +# Auxiliary files required by this configure script. +ac_aux_files="install-sh config.guess config.sub" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}/./support" + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 +fi + + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +if test -f "${ac_aux_dir}config.guess"; then + ac_config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_configure="$SHELL ${ac_aux_dir}configure" +fi + # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false @@ -2387,12 +2842,12 @@ for ac_var in $ac_precious_vars; do eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) @@ -2401,24 +2856,24 @@ $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in @@ -2428,11 +2883,12 @@ $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi done if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' + and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## @@ -2449,60 +2905,36 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -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 - as_fn_error $? "cannot find install-sh, install.sh, or shtool in ./support \"$srcdir\"/./support" "$LINENO" 5 -fi -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. +ac_config_headers="$ac_config_headers config.h" -ac_config_headers="$ac_config_headers config.h" +LIBVERSION=8.2 -LIBVERSION=8.1 -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else + # Make sure we can run config.sub. +$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +printf %s "checking build system type... " >&6; } +if test ${ac_cv_build+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_build_alias=$build_alias test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` + ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 +ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +printf "%s\n" "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; @@ -2521,21 +2953,22 @@ IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +printf %s "checking host system type... " >&6; } +if test ${ac_cv_host+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 + ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +printf "%s\n" "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; @@ -2557,14 +2990,23 @@ case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac opt_curses=no +opt_shared_termcap_lib=no # Check whether --with-curses was given. -if test "${with_curses+set}" = set; then : +if test ${with_curses+y} +then : withval=$with_curses; opt_curses=$withval fi +# Check whether --with-shared-termcap-library was given. +if test ${with_shared_termcap_library+y} +then : + withval=$with_shared_termcap_library; opt_shared_termcap_lib=$withval +fi + + if test "$opt_curses" = "yes"; then prefer_curses=yes fi @@ -2576,34 +3018,39 @@ opt_install_examples=yes opt_bracketed_paste_default=yes # Check whether --enable-multibyte was given. -if test "${enable_multibyte+set}" = set; then : +if test ${enable_multibyte+y} +then : enableval=$enable_multibyte; opt_multibyte=$enableval fi # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : +if test ${enable_shared+y} +then : enableval=$enable_shared; opt_shared_libs=$enableval fi # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then : +if test ${enable_static+y} +then : enableval=$enable_static; opt_static_libs=$enableval fi # Check whether --enable-install-examples was given. -if test "${enable_install_examples+set}" = set; then : +if test ${enable_install_examples+y} +then : enableval=$enable_install_examples; opt_install_examples=$enableval fi # Check whether --enable-bracketed-paste-default was given. -if test "${enable_bracketed_paste_default+set}" = set; then : +if test ${enable_bracketed_paste_default+y} +then : enableval=$enable_bracketed_paste_default; opt_bracketed_paste_default=$enableval fi if test $opt_multibyte = no; then -$as_echo "#define NO_MULTIBYTE_SUPPORT 1" >>confdefs.h +printf "%s\n" "#define NO_MULTIBYTE_SUPPORT 1" >>confdefs.h fi @@ -2647,13 +3094,14 @@ echo "" # We want these before the checks, so the checks can modify their values. test -z "$CFLAGS" && want_auto_cflags=1 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else +ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval test \${ac_cv_prog_make_${ac_make}_set+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @@ -2669,15 +3117,24 @@ esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } SET_MAKE= else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "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' @@ -2686,11 +3143,12 @@ 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -2698,11 +3156,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2713,11 +3175,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -2726,11 +3188,12 @@ 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else @@ -2738,11 +3201,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2753,11 +3220,11 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then @@ -2765,8 +3232,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -2779,11 +3246,12 @@ 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -2791,11 +3259,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2806,11 +3278,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -2819,11 +3291,12 @@ 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -2832,15 +3305,19 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2856,18 +3333,18 @@ if test $ac_prog_rejected = yes; then # 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 - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -2878,11 +3355,12 @@ if test -z "$CC"; then 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -2890,11 +3368,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2905,11 +3387,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -2922,11 +3404,12 @@ if test -z "$CC"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else @@ -2934,11 +3417,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2949,11 +3436,11 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -2965,34 +3452,138 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi +else + CC="$ac_cv_prog_CC" fi fi -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 -for ac_option in --version -v -V -qversion; do +for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -3002,7 +3593,7 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done @@ -3010,7 +3601,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -3022,9 +3613,9 @@ ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # 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. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" @@ -3045,11 +3636,12 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, @@ -3066,7 +3658,7 @@ do # certainly right. break;; *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi @@ -3082,44 +3674,46 @@ do done test "$ac_cv_exeext" = no && ac_cv_exeext= -else +else $as_nop ac_file='' fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 +if test -z "$ac_file" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +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 @@ -3133,15 +3727,15 @@ for ac_file in conftest.exe conftest conftest.*; do * ) break;; esac done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext @@ -3150,7 +3744,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; @@ -3162,8 +3756,8 @@ _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in @@ -3171,10 +3765,10 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in @@ -3182,39 +3776,40 @@ $as_echo "$ac_try_echo"; } >&5 *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -3228,11 +3823,12 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in @@ -3241,31 +3837,32 @@ $as_echo "$ac_try_echo"; } >&5 break;; esac done -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { #ifndef __GNUC__ choke me @@ -3275,29 +3872,33 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_compiler_gnu=yes -else +else $as_nop ac_compiler_gnu=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi -ac_test_CFLAGS=${CFLAGS+set} +ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no @@ -3306,57 +3907,60 @@ else /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes -else +else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -else +else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then @@ -3371,94 +3975,144 @@ else CFLAGS= fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include -struct stat; -/* 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; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi -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; -} +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c99" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program _ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : + if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_c89=$ac_arg fi -rm -f core conftest.err conftest.$ac_objext +rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC - fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c89" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 +fi fi ac_ext=c @@ -3468,45 +4122,218 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu +ac_header= ac_cache= +for ac_item in $ac_header_c_list +do + if test $ac_cache; then + ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf "%s\n" "#define $ac_item 1" >> confdefs.h + fi + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item + fi +done + + + + + + + + +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : + +printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h + +fi + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if test ${ac_cv_safe_to_define___extensions__+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_safe_to_define___extensions__=yes +else $as_nop + ac_cv_safe_to_define___extensions__=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +printf "%s\n" "$ac_cv_safe_to_define___extensions__" >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 +printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; } +if test ${ac_cv_should_define__xopen_source+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_should_define__xopen_source=no + if test $ac_cv_header_wchar_h = yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #define _XOPEN_SOURCE 500 + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_should_define__xopen_source=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 +printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; } + + printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _GNU_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h + + printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _OPENBSD_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h + + printf "%s\n" "#define _TANDEM_SOURCE 1" >>confdefs.h + + if test $ac_cv_header_minix_config_h = yes +then : + MINIX=yes + printf "%s\n" "#define _MINIX 1" >>confdefs.h + + printf "%s\n" "#define _POSIX_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h + +else $as_nop + MINIX= +fi + if test $ac_cv_safe_to_define___extensions__ = yes +then : + printf "%s\n" "#define __EXTENSIONS__ 1" >>confdefs.h + +fi + if test $ac_cv_should_define__xopen_source = yes +then : + printf "%s\n" "#define _XOPEN_SOURCE 500" >>confdefs.h + +fi + + +# If we're using gcc and the user hasn't specified CFLAGS, add -O2 to CFLAGS +if test -n "$want_auto_cflags" ; then + AUTO_CFLAGS="-g ${GCC:+-O2}" + STYLE_CFLAGS="${GCC:+-Wno-parentheses} ${GCC:+-Wno-format-security} ${GCC:+-Wno-tautological-constant-out-of-range-compare}" +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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" 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. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. # 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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif +#include Syntax error _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : +if ac_fn_c_try_cpp "$LINENO" +then : -else +else $as_nop # Broken: fails on valid input. continue fi @@ -3518,10 +4345,11 @@ rm -f conftest.err conftest.i conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : +if ac_fn_c_try_cpp "$LINENO" +then : # Broken: success on invalid input. continue -else +else $as_nop # Passes both tests. ac_preproc_ok=: break @@ -3531,7 +4359,8 @@ rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : +if $ac_preproc_ok +then : break fi @@ -3543,29 +4372,24 @@ fi else ac_cv_prog_CPP=$CPP fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf "%s\n" "$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. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. # 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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif +#include Syntax error _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : +if ac_fn_c_try_cpp "$LINENO" +then : -else +else $as_nop # Broken: fails on valid input. continue fi @@ -3577,10 +4401,11 @@ rm -f conftest.err conftest.i conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : +if ac_fn_c_try_cpp "$LINENO" +then : # Broken: success on invalid input. continue -else +else $as_nop # Passes both tests. ac_preproc_ok=: break @@ -3590,11 +4415,12 @@ rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : +if $ac_preproc_ok +then : -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi @@ -3606,11 +4432,12 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +printf %s "checking for grep that handles long lines and -e... " >&6; } +if test ${ac_cv_path_GREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST @@ -3618,10 +4445,15 @@ else for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in grep ggrep + do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP @@ -3630,13 +4462,13 @@ case `"$ac_path_GREP" --version 2>&1` in ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 - $as_echo_n 0123456789 >"conftest.in" + printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" + printf "%s\n" 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val @@ -3664,16 +4496,17 @@ else fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +printf "%s\n" "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +printf %s "checking for egrep... " >&6; } +if test ${ac_cv_path_EGREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else @@ -3684,10 +4517,15 @@ else for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in egrep + do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP @@ -3696,13 +4534,13 @@ case `"$ac_path_EGREP" --version 2>&1` in ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 - $as_echo_n 0123456789 >"conftest.in" + printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" + printf "%s\n" 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val @@ -3731,215 +4569,18 @@ fi fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +printf "%s\n" "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end 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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end 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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#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)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -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=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" -if test "x$ac_cv_header_minix_config_h" = xyes; then : - MINIX=yes -else - MINIX= -fi - - - if test "$MINIX" = yes; then - -$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h - - -$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h - - -$as_echo "#define _MINIX 1" >>confdefs.h - - fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 -$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } -if ${ac_cv_safe_to_define___extensions__+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -# define __EXTENSIONS__ 1 - $ac_includes_default -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_safe_to_define___extensions__=yes -else - ac_cv_safe_to_define___extensions__=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 -$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } - test $ac_cv_safe_to_define___extensions__ = yes && - $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h - - $as_echo "#define _ALL_SOURCE 1" >>confdefs.h - - $as_echo "#define _GNU_SOURCE 1" >>confdefs.h - - $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h - - $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h - - - - -# If we're using gcc and the user hasn't specified CFLAGS, add -O2 to CFLAGS -if test -n "$want_auto_cflags" ; then - AUTO_CFLAGS="-g ${GCC+-O2}" - STYLE_CFLAGS="${GCC+-Wno-parentheses} ${GCC+-Wno-format-security}" -fi - if test $ac_cv_c_compiler_gnu = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC needs -traditional" >&5 -$as_echo_n "checking whether $CC needs -traditional... " >&6; } -if ${ac_cv_prog_gcc_traditional+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC needs -traditional" >&5 +printf %s "checking whether $CC needs -traditional... " >&6; } +if test ${ac_cv_prog_gcc_traditional+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_pattern="Autoconf.*'x'" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -3947,12 +4588,13 @@ else Autoconf TIOCGETP _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "$ac_pattern" >/dev/null 2>&1; then : + $EGREP "$ac_pattern" >/dev/null 2>&1 +then : ac_cv_prog_gcc_traditional=yes -else +else $as_nop ac_cv_prog_gcc_traditional=no fi -rm -f conftest* +rm -rf conftest* if test $ac_cv_prog_gcc_traditional = no; then @@ -3962,21 +4604,23 @@ rm -f conftest* Autoconf TCGETA _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "$ac_pattern" >/dev/null 2>&1; then : + $EGREP "$ac_pattern" >/dev/null 2>&1 +then : ac_cv_prog_gcc_traditional=yes fi -rm -f conftest* +rm -rf conftest* fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_gcc_traditional" >&5 -$as_echo "$ac_cv_prog_gcc_traditional" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_gcc_traditional" >&5 +printf "%s\n" "$ac_cv_prog_gcc_traditional" >&6; } if test $ac_cv_prog_gcc_traditional = yes; then CC="$CC -traditional" fi fi -# Find a good install program. We prefer a C program (faster), + + # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install @@ -3990,20 +4634,25 @@ fi # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in #(( + ./ | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; @@ -4013,13 +4662,13 @@ case $as_dir/ in #(( # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else @@ -4027,12 +4676,12 @@ case $as_dir/ in #(( echo one > conftest.one echo two > conftest.two mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" break 3 fi fi @@ -4048,7 +4697,7 @@ IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi - if test "${ac_cv_path_install+set}" = set; then + if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a @@ -4058,8 +4707,8 @@ fi INSTALL=$ac_install_sh fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf "%s\n" "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. @@ -4072,11 +4721,12 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else @@ -4084,11 +4734,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AR="${ac_tool_prefix}ar" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4099,11 +4753,11 @@ fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf "%s\n" "$AR" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -4112,11 +4766,12 @@ if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else @@ -4124,11 +4779,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="ar" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4139,11 +4798,11 @@ fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +printf "%s\n" "$ac_ct_AR" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_AR" = x; then @@ -4151,8 +4810,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR @@ -4165,11 +4824,12 @@ 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else @@ -4177,11 +4837,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4192,11 +4856,11 @@ fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf "%s\n" "$RANLIB" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -4205,11 +4869,12 @@ 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else @@ -4217,11 +4882,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4232,11 +4901,11 @@ fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf "%s\n" "$ac_ct_RANLIB" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then @@ -4244,8 +4913,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB @@ -4258,16 +4927,24 @@ fi MAKE_SHELL=/bin/sh -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 -$as_echo_n "checking for an ANSI C-conforming const... " >&6; } -if ${ac_cv_c_const+:} false; then : - $as_echo_n "(cached) " >&6 -else + +# codeset.m4 serial 5 (gettext-0.18.2) + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +printf %s "checking for an ANSI C-conforming const... " >&6; } +if test ${ac_cv_c_const+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { #ifndef __cplusplus @@ -4280,7 +4957,7 @@ main () /* 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. + /* IBM 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 */ @@ -4308,7 +4985,7 @@ main () iptr p = 0; ++p; } - { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying + { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; @@ -4324,47 +5001,86 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_const=yes -else +else $as_nop ac_cv_c_const=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 -$as_echo "$ac_cv_c_const" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +printf "%s\n" "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then -$as_echo "#define const /**/" >>confdefs.h +printf "%s\n" "#define const /**/" >>confdefs.h + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 +printf %s "checking for inline... " >&6; } +if test ${ac_cv_c_inline+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo (void) {return 0; } +$ac_kw foo_t foo (void) {return 0; } +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_inline=$ac_kw +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + test "$ac_cv_c_inline" != no && break +done fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 +printf "%s\n" "$ac_cv_c_inline" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for function prototypes" >&5 -$as_echo_n "checking for function prototypes... " >&6; } -if test "$ac_cv_prog_cc_c89" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +case $ac_cv_c_inline in + inline | yes) ;; + *) + case $ac_cv_c_inline in + no) ac_val=;; + *) ac_val=$ac_cv_c_inline;; + esac + cat >>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; +esac -$as_echo "#define PROTOTYPES 1" >>confdefs.h +if test "$ac_prog_cc_stdc" != no; then +printf "%s\n" "#define PROTOTYPES 1" >>confdefs.h -$as_echo "#define __PROTOTYPES 1" >>confdefs.h -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +printf "%s\n" "#define __PROTOTYPES 1" >>confdefs.h + fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether char is unsigned" >&5 -$as_echo_n "checking whether char is unsigned... " >&6; } -if ${ac_cv_c_char_unsigned+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether char is unsigned" >&5 +printf %s "checking whether char is unsigned... " >&6; } +if test ${ac_cv_c_char_unsigned+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int -main () +main (void) { static int test_array [1 - 2 * !(((char) -1) < 0)]; test_array [0] = 0; @@ -4374,30 +5090,32 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_char_unsigned=no -else +else $as_nop ac_cv_c_char_unsigned=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_char_unsigned" >&5 -$as_echo "$ac_cv_c_char_unsigned" >&6; } -if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then - $as_echo "#define __CHAR_UNSIGNED__ 1" >>confdefs.h +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_char_unsigned" >&5 +printf "%s\n" "$ac_cv_c_char_unsigned" >&6; } +if test $ac_cv_c_char_unsigned = yes; then + printf "%s\n" "#define __CHAR_UNSIGNED__ 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5 -$as_echo_n "checking for working volatile... " >&6; } -if ${ac_cv_c_volatile+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5 +printf %s "checking for working volatile... " >&6; } +if test ${ac_cv_c_volatile+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { volatile int x; @@ -4407,197 +5125,50 @@ return !x && !y; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_volatile=yes -else +else $as_nop ac_cv_c_volatile=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_volatile" >&5 -$as_echo "$ac_cv_c_volatile" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_volatile" >&5 +printf "%s\n" "$ac_cv_c_volatile" >&6; } if test $ac_cv_c_volatile = no; then -$as_echo "#define volatile /**/" >>confdefs.h +printf "%s\n" "#define volatile /**/" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 -$as_echo_n "checking return type of signal handlers... " >&6; } -if ${ac_cv_type_signal+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include - -int -main () -{ -return *(signal (0, 0)) (0) == 1; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_type_signal=int -else - ac_cv_type_signal=void -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 -$as_echo "$ac_cv_type_signal" >&6; } - -cat >>confdefs.h <<_ACEOF -#define RETSIGTYPE $ac_cv_type_signal -_ACEOF - - - ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -if test "x$ac_cv_type_size_t" = xyes; then : +if test "x$ac_cv_type_size_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define size_t unsigned int -_ACEOF +printf "%s\n" "#define size_t unsigned int" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" -if test "x$ac_cv_type_ssize_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -#define ssize_t int -_ACEOF - -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include +if test "x$ac_cv_type_ssize_t" = xyes +then : -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : +else $as_nop -else - ac_cv_header_stdc=no -fi -rm -f conftest* +printf "%s\n" "#define ssize_t int" >>confdefs.h fi -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end 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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#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)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5 -$as_echo_n "checking whether stat file-mode macros are broken... " >&6; } -if ${ac_cv_header_stat_broken+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5 +printf %s "checking whether stat file-mode macros are broken... " >&6; } +if test ${ac_cv_header_stat_broken+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -4620,36 +5191,38 @@ extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1]; #endif _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_header_stat_broken=no -else +else $as_nop ac_cv_header_stat_broken=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5 -$as_echo "$ac_cv_header_stat_broken" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5 +printf "%s\n" "$ac_cv_header_stat_broken" >&6; } if test $ac_cv_header_stat_broken = yes; then -$as_echo "#define STAT_MACROS_BROKEN 1" >>confdefs.h +printf "%s\n" "#define STAT_MACROS_BROKEN 1" >>confdefs.h fi ac_header_dirent=no for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do - as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 -$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } -if eval \${$as_ac_Header+:} false; then : - $as_echo_n "(cached) " >&6 -else + as_ac_Header=`printf "%s\n" "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 +printf %s "checking for $ac_hdr that defines DIR... " >&6; } +if eval test \${$as_ac_Header+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include <$ac_hdr> int -main () +main (void) { if ((DIR *) 0) return 0; @@ -4657,19 +5230,21 @@ return 0; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$as_ac_Header=yes" -else +else $as_nop eval "$as_ac_Header=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$as_ac_Header - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 +#define `printf "%s\n" "HAVE_$ac_hdr" | $as_tr_cpp` 1 _ACEOF ac_header_dirent=$ac_hdr; break @@ -4678,11 +5253,12 @@ fi done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 -$as_echo_n "checking for library containing opendir... " >&6; } -if ${ac_cv_search_opendir+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -4690,56 +5266,59 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char opendir (); int -main () +main (void) { return opendir (); ; return 0; } _ACEOF -for ac_lib in '' dir; do +for ac_lib in '' dir +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_c_try_link "$LINENO"; then : + if ac_fn_c_try_link "$LINENO" +then : ac_cv_search_opendir=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_opendir+:} false; then : + if test ${ac_cv_search_opendir+y} +then : break fi done -if ${ac_cv_search_opendir+:} false; then : +if test ${ac_cv_search_opendir+y} +then : -else +else $as_nop ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 -$as_echo "$ac_cv_search_opendir" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf "%s\n" "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 -$as_echo_n "checking for library containing opendir... " >&6; } -if ${ac_cv_search_opendir+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -4747,160 +5326,252 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char opendir (); int -main () +main (void) { return opendir (); ; return 0; } _ACEOF -for ac_lib in '' x; do +for ac_lib in '' x +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_c_try_link "$LINENO"; then : + if ac_fn_c_try_link "$LINENO" +then : ac_cv_search_opendir=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if ${ac_cv_search_opendir+:} false; then : - break +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_opendir+y} +then : + break +fi +done +if test ${ac_cv_search_opendir+y} +then : + +else $as_nop + ac_cv_search_opendir=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf "%s\n" "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +fi + + +ac_fn_c_check_func "$LINENO" "fcntl" "ac_cv_func_fcntl" +if test "x$ac_cv_func_fcntl" = xyes +then : + printf "%s\n" "#define HAVE_FCNTL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "gettimeofday" "ac_cv_func_gettimeofday" +if test "x$ac_cv_func_gettimeofday" = xyes +then : + printf "%s\n" "#define HAVE_GETTIMEOFDAY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "kill" "ac_cv_func_kill" +if test "x$ac_cv_func_kill" = xyes +then : + printf "%s\n" "#define HAVE_KILL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "lstat" "ac_cv_func_lstat" +if test "x$ac_cv_func_lstat" = xyes +then : + printf "%s\n" "#define HAVE_LSTAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pselect" "ac_cv_func_pselect" +if test "x$ac_cv_func_pselect" = xyes +then : + printf "%s\n" "#define HAVE_PSELECT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "readlink" "ac_cv_func_readlink" +if test "x$ac_cv_func_readlink" = xyes +then : + printf "%s\n" "#define HAVE_READLINK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "select" "ac_cv_func_select" +if test "x$ac_cv_func_select" = xyes +then : + printf "%s\n" "#define HAVE_SELECT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setitimer" "ac_cv_func_setitimer" +if test "x$ac_cv_func_setitimer" = xyes +then : + printf "%s\n" "#define HAVE_SETITIMER 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "fnmatch" "ac_cv_func_fnmatch" +if test "x$ac_cv_func_fnmatch" = xyes +then : + printf "%s\n" "#define HAVE_FNMATCH 1" >>confdefs.h + fi -done -if ${ac_cv_search_opendir+:} false; then : +ac_fn_c_check_func "$LINENO" "memmove" "ac_cv_func_memmove" +if test "x$ac_cv_func_memmove" = xyes +then : + printf "%s\n" "#define HAVE_MEMMOVE 1" >>confdefs.h -else - ac_cv_search_opendir=no fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +ac_fn_c_check_func "$LINENO" "putenv" "ac_cv_func_putenv" +if test "x$ac_cv_func_putenv" = xyes +then : + printf "%s\n" "#define HAVE_PUTENV 1" >>confdefs.h + fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 -$as_echo "$ac_cv_search_opendir" >&6; } -ac_res=$ac_cv_search_opendir -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" +ac_fn_c_check_func "$LINENO" "setenv" "ac_cv_func_setenv" +if test "x$ac_cv_func_setenv" = xyes +then : + printf "%s\n" "#define HAVE_SETENV 1" >>confdefs.h fi +ac_fn_c_check_func "$LINENO" "setlocale" "ac_cv_func_setlocale" +if test "x$ac_cv_func_setlocale" = xyes +then : + printf "%s\n" "#define HAVE_SETLOCALE 1" >>confdefs.h fi +ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp" +if test "x$ac_cv_func_strcasecmp" = xyes +then : + printf "%s\n" "#define HAVE_STRCASECMP 1" >>confdefs.h +fi +ac_fn_c_check_func "$LINENO" "strpbrk" "ac_cv_func_strpbrk" +if test "x$ac_cv_func_strpbrk" = xyes +then : + printf "%s\n" "#define HAVE_STRPBRK 1" >>confdefs.h -for ac_func in fcntl kill lstat readlink -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +fi +ac_fn_c_check_func "$LINENO" "sysconf" "ac_cv_func_sysconf" +if test "x$ac_cv_func_sysconf" = xyes +then : + printf "%s\n" "#define HAVE_SYSCONF 1" >>confdefs.h fi -done +ac_fn_c_check_func "$LINENO" "tcgetattr" "ac_cv_func_tcgetattr" +if test "x$ac_cv_func_tcgetattr" = xyes +then : + printf "%s\n" "#define HAVE_TCGETATTR 1" >>confdefs.h -for ac_func in fnmatch memmove pselect putenv select setenv setlocale \ - strcasecmp strpbrk tcgetattr vsnprintf -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +fi +ac_fn_c_check_func "$LINENO" "vsnprintf" "ac_cv_func_vsnprintf" +if test "x$ac_cv_func_vsnprintf" = xyes +then : + printf "%s\n" "#define HAVE_VSNPRINTF 1" >>confdefs.h fi -done -for ac_func in isascii isxdigit -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +ac_fn_c_check_func "$LINENO" "isascii" "ac_cv_func_isascii" +if test "x$ac_cv_func_isascii" = xyes +then : + printf "%s\n" "#define HAVE_ISASCII 1" >>confdefs.h fi -done +ac_fn_c_check_func "$LINENO" "isxdigit" "ac_cv_func_isxdigit" +if test "x$ac_cv_func_isxdigit" = xyes +then : + printf "%s\n" "#define HAVE_ISXDIGIT 1" >>confdefs.h -for ac_func in getpwent getpwnam getpwuid -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +fi + +ac_fn_c_check_func "$LINENO" "getpwent" "ac_cv_func_getpwent" +if test "x$ac_cv_func_getpwent" = xyes +then : + printf "%s\n" "#define HAVE_GETPWENT 1" >>confdefs.h fi -done +ac_fn_c_check_func "$LINENO" "getpwnam" "ac_cv_func_getpwnam" +if test "x$ac_cv_func_getpwnam" = xyes +then : + printf "%s\n" "#define HAVE_GETPWNAM 1" >>confdefs.h +fi +ac_fn_c_check_func "$LINENO" "getpwuid" "ac_cv_func_getpwuid" +if test "x$ac_cv_func_getpwuid" = xyes +then : + printf "%s\n" "#define HAVE_GETPWUID 1" >>confdefs.h -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 -$as_echo_n "checking for uid_t in sys/types.h... " >&6; } -if ${ac_cv_type_uid_t+:} false; then : - $as_echo_n "(cached) " >&6 -else +fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 +printf %s "checking for uid_t in sys/types.h... " >&6; } +if test ${ac_cv_type_uid_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "uid_t" >/dev/null 2>&1; then : + $EGREP "uid_t" >/dev/null 2>&1 +then : ac_cv_type_uid_t=yes -else +else $as_nop ac_cv_type_uid_t=no fi -rm -f conftest* +rm -rf conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 -$as_echo "$ac_cv_type_uid_t" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 +printf "%s\n" "$ac_cv_type_uid_t" >&6; } if test $ac_cv_type_uid_t = no; then -$as_echo "#define uid_t int" >>confdefs.h +printf "%s\n" "#define uid_t int" >>confdefs.h -$as_echo "#define gid_t int" >>confdefs.h - -fi - -for ac_header in unistd.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" -if test "x$ac_cv_header_unistd_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_UNISTD_H 1 -_ACEOF +printf "%s\n" "#define gid_t int" >>confdefs.h fi -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working chown" >&5 -$as_echo_n "checking for working chown... " >&6; } -if ${ac_cv_func_chown_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_func_chown_works=no -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working chown" >&5 +printf %s "checking for working chown... " >&6; } +if test ${ac_cv_func_chown_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + case "$host_os" in # (( + # Guess yes on glibc systems. + *-gnu*) ac_cv_func_chown_works=yes ;; + # If we don't know, assume the worst. + *) ac_cv_func_chown_works=no ;; + esac +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default #include int -main () +main (void) { char *f = "conftest.chown"; struct stat before, after; @@ -4919,9 +5590,10 @@ main () return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : ac_cv_func_chown_works=yes -else +else $as_nop ac_cv_func_chown_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -4931,27 +5603,34 @@ fi rm -f conftest.chown fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_chown_works" >&5 -$as_echo "$ac_cv_func_chown_works" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_chown_works" >&5 +printf "%s\n" "$ac_cv_func_chown_works" >&6; } if test $ac_cv_func_chown_works = yes; then -$as_echo "#define HAVE_CHOWN 1" >>confdefs.h - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strcoll" >&5 -$as_echo_n "checking for working strcoll... " >&6; } -if ${ac_cv_func_strcoll_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_func_strcoll_works=no -else +printf "%s\n" "#define HAVE_CHOWN 1" >>confdefs.h + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working strcoll" >&5 +printf %s "checking for working strcoll... " >&6; } +if test ${ac_cv_func_strcoll_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + case "$host_os" in # (( + # Guess yes on glibc systems. + *-gnu*) ac_cv_func_strcoll_works=yes ;; + # If we don't know, assume the worst. + *) ac_cv_func_strcoll_works=no ;; + esac +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int -main () +main (void) { return (strcoll ("abc", "def") >= 0 || strcoll ("ABC", "DEF") >= 0 || @@ -4960,9 +5639,10 @@ return (strcoll ("abc", "def") >= 0 || return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : ac_cv_func_strcoll_works=yes -else +else $as_nop ac_cv_func_strcoll_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -4970,74 +5650,171 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strcoll_works" >&5 -$as_echo "$ac_cv_func_strcoll_works" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strcoll_works" >&5 +printf "%s\n" "$ac_cv_func_strcoll_works" >&6; } if test $ac_cv_func_strcoll_works = yes; then -$as_echo "#define HAVE_STRCOLL 1" >>confdefs.h +printf "%s\n" "#define HAVE_STRCOLL 1" >>confdefs.h fi -for ac_header in fcntl.h unistd.h stdlib.h varargs.h stdarg.h stdbool.h \ - string.h strings.h \ - limits.h locale.h pwd.h memory.h termcap.h termios.h termio.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF +ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default" +if test "x$ac_cv_header_fcntl_h" = xyes +then : + printf "%s\n" "#define HAVE_FCNTL_H 1" >>confdefs.h fi +ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_unistd_h" = xyes +then : + printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h -done +fi +ac_fn_c_check_header_compile "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" +if test "x$ac_cv_header_stdlib_h" = xyes +then : + printf "%s\n" "#define HAVE_STDLIB_H 1" >>confdefs.h -for ac_header in sys/ioctl.h sys/pte.h sys/stream.h sys/select.h sys/file.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF +fi +ac_fn_c_check_header_compile "$LINENO" "varargs.h" "ac_cv_header_varargs_h" "$ac_includes_default" +if test "x$ac_cv_header_varargs_h" = xyes +then : + printf "%s\n" "#define HAVE_VARARGS_H 1" >>confdefs.h fi +ac_fn_c_check_header_compile "$LINENO" "stdarg.h" "ac_cv_header_stdarg_h" "$ac_includes_default" +if test "x$ac_cv_header_stdarg_h" = xyes +then : + printf "%s\n" "#define HAVE_STDARG_H 1" >>confdefs.h -done +fi +ac_fn_c_check_header_compile "$LINENO" "stdbool.h" "ac_cv_header_stdbool_h" "$ac_includes_default" +if test "x$ac_cv_header_stdbool_h" = xyes +then : + printf "%s\n" "#define HAVE_STDBOOL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "string.h" "ac_cv_header_string_h" "$ac_includes_default" +if test "x$ac_cv_header_string_h" = xyes +then : + printf "%s\n" "#define HAVE_STRING_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "strings.h" "ac_cv_header_strings_h" "$ac_includes_default" +if test "x$ac_cv_header_strings_h" = xyes +then : + printf "%s\n" "#define HAVE_STRINGS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default" +if test "x$ac_cv_header_limits_h" = xyes +then : + printf "%s\n" "#define HAVE_LIMITS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" +if test "x$ac_cv_header_locale_h" = xyes +then : + printf "%s\n" "#define HAVE_LOCALE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "pwd.h" "ac_cv_header_pwd_h" "$ac_includes_default" +if test "x$ac_cv_header_pwd_h" = xyes +then : + printf "%s\n" "#define HAVE_PWD_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "memory.h" "ac_cv_header_memory_h" "$ac_includes_default" +if test "x$ac_cv_header_memory_h" = xyes +then : + printf "%s\n" "#define HAVE_MEMORY_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "termcap.h" "ac_cv_header_termcap_h" "$ac_includes_default" +if test "x$ac_cv_header_termcap_h" = xyes +then : + printf "%s\n" "#define HAVE_TERMCAP_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "termios.h" "ac_cv_header_termios_h" "$ac_includes_default" +if test "x$ac_cv_header_termios_h" = xyes +then : + printf "%s\n" "#define HAVE_TERMIOS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "termio.h" "ac_cv_header_termio_h" "$ac_includes_default" +if test "x$ac_cv_header_termio_h" = xyes +then : + printf "%s\n" "#define HAVE_TERMIO_H 1" >>confdefs.h + +fi + +ac_fn_c_check_header_compile "$LINENO" "sys/ioctl.h" "ac_cv_header_sys_ioctl_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_ioctl_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_IOCTL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/pte.h" "ac_cv_header_sys_pte_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_pte_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_PTE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/stream.h" "ac_cv_header_sys_stream_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_stream_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_STREAM_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_select_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_time_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/file.h" "ac_cv_header_sys_file_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_file_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_FILE_H 1" >>confdefs.h + +fi -for ac_header in sys/ptem.h -do : - ac_fn_c_check_header_compile "$LINENO" "sys/ptem.h" "ac_cv_header_sys_ptem_h" " +ac_fn_c_check_header_compile "$LINENO" "sys/ptem.h" "ac_cv_header_sys_ptem_h" " #if HAVE_SYS_STREAM_H # include #endif " -if test "x$ac_cv_header_sys_ptem_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SYS_PTEM_H 1 -_ACEOF +if test "x$ac_cv_header_sys_ptem_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_PTEM_H 1" >>confdefs.h fi -done - # Check whether --enable-largefile was given. -if test "${enable_largefile+set}" = set; then : +if test ${enable_largefile+y} +then : enableval=$enable_largefile; fi if test "$enable_largefile" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 -$as_echo_n "checking for special C compiler options needed for large files... " >&6; } -if ${ac_cv_sys_largefile_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 +printf %s "checking for special C compiler options needed for large files... " >&6; } +if test ${ac_cv_sys_largefile_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_cv_sys_largefile_CC=no if test "$GCC" != yes; then ac_save_CC=$CC @@ -5051,44 +5828,47 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int -main () +main (void) { ; return 0; } _ACEOF - if ac_fn_c_try_compile "$LINENO"; then : + if ac_fn_c_try_compile "$LINENO" +then : break fi -rm -f core conftest.err conftest.$ac_objext +rm -f core conftest.err conftest.$ac_objext conftest.beam CC="$CC -n32" - if ac_fn_c_try_compile "$LINENO"; then : + if ac_fn_c_try_compile "$LINENO" +then : ac_cv_sys_largefile_CC=' -n32'; break fi -rm -f core conftest.err conftest.$ac_objext +rm -f core conftest.err conftest.$ac_objext conftest.beam break done CC=$ac_save_CC rm -f conftest.$ac_ext fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 -$as_echo "$ac_cv_sys_largefile_CC" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 +printf "%s\n" "$ac_cv_sys_largefile_CC" >&6; } if test "$ac_cv_sys_largefile_CC" != no; then CC=$CC$ac_cv_sys_largefile_CC fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 -$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } -if ${ac_cv_sys_file_offset_bits+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +printf %s "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } +if test ${ac_cv_sys_file_offset_bits+y} +then : + printf %s "(cached) " >&6 +else $as_nop while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5097,22 +5877,23 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_sys_file_offset_bits=no; break fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _FILE_OFFSET_BITS 64 @@ -5121,43 +5902,43 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_sys_file_offset_bits=64; break fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_sys_file_offset_bits=unknown break done fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 -$as_echo "$ac_cv_sys_file_offset_bits" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 +printf "%s\n" "$ac_cv_sys_file_offset_bits" >&6; } case $ac_cv_sys_file_offset_bits in #( no | unknown) ;; *) -cat >>confdefs.h <<_ACEOF -#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits -_ACEOF +printf "%s\n" "#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits" >>confdefs.h ;; esac rm -rf conftest* if test $ac_cv_sys_file_offset_bits = unknown; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 -$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } -if ${ac_cv_sys_large_files+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 +printf %s "checking for _LARGE_FILES value needed for large files... " >&6; } +if test ${ac_cv_sys_large_files+y} +then : + printf %s "(cached) " >&6 +else $as_nop while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5166,22 +5947,23 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_sys_large_files=no; break fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _LARGE_FILES 1 @@ -5190,55 +5972,58 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_sys_large_files=1; break fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_sys_large_files=unknown break done fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 -$as_echo "$ac_cv_sys_large_files" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 +printf "%s\n" "$ac_cv_sys_large_files" >&6; } case $ac_cv_sys_large_files in #( no | unknown) ;; *) -cat >>confdefs.h <<_ACEOF -#define _LARGE_FILES $ac_cv_sys_large_files -_ACEOF +printf "%s\n" "#define _LARGE_FILES $ac_cv_sys_large_files" >>confdefs.h ;; esac rm -rf conftest* fi - - fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for type of signal functions" >&5 +printf %s "checking for type of signal functions... " >&6; } +if test ${bash_cv_signal_vintage+y} +then : + printf %s "(cached) " >&6 +else $as_nop -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for type of signal functions" >&5 -$as_echo_n "checking for type of signal functions... " >&6; } -if ${bash_cv_signal_vintage+:} false; then : - $as_echo_n "(cached) " >&6 -else - +if test ${bash_cv_posix_signals+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ + #include + int -main () +main (void) { sigset_t ss; @@ -5251,90 +6036,127 @@ main () return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : + bash_cv_posix_signals=yes +else $as_nop + bash_cv_posix_signals=no + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi + + +if test $bash_cv_posix_signals = yes; then bash_cv_signal_vintage=posix else - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + if test ${bash_cv_bsd_signals+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ + #include + int -main () +main (void) { - int mask = sigmask(SIGINT); - sigsetmask(mask); sigblock(mask); sigpause(mask); +int mask = sigmask(SIGINT); +sigsetmask(mask); sigblock(mask); sigpause(mask); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - bash_cv_signal_vintage=4.2bsd -else +if ac_fn_c_try_link "$LINENO" +then : + bash_cv_bsd_signals=yes +else $as_nop + bash_cv_bsd_signals=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi + + + if test $bash_cv_bsd_signals = yes; then + bash_cv_signal_vintage=4.2bsd + else + if test ${bash_cv_sysv_signals+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - #include - RETSIGTYPE foo() { } +#include +void foo() { } + int -main () +main (void) { - int mask = sigmask(SIGINT); - sigset(SIGINT, foo); sigrelse(SIGINT); - sighold(SIGINT); sigpause(SIGINT); +int mask = sigmask(SIGINT); +sigset(SIGINT, foo); sigrelse(SIGINT); +sighold(SIGINT); sigpause(SIGINT); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - bash_cv_signal_vintage=svr3 -else - bash_cv_signal_vintage=v7 +if ac_fn_c_try_link "$LINENO" +then : + bash_cv_sysv_signals=yes +else $as_nop + bash_cv_sysv_signals=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext - fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + + if test $bash_cv_sysv_signals = yes; then + bash_cv_signal_vintage=svr3 + else + bash_cv_signal_vintage=v7 + fi + fi fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_signal_vintage" >&5 -$as_echo "$bash_cv_signal_vintage" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_signal_vintage" >&5 +printf "%s\n" "$bash_cv_signal_vintage" >&6; } if test "$bash_cv_signal_vintage" = posix; then -$as_echo "#define HAVE_POSIX_SIGNALS 1" >>confdefs.h +printf "%s\n" "#define HAVE_POSIX_SIGNALS 1" >>confdefs.h elif test "$bash_cv_signal_vintage" = "4.2bsd"; then -$as_echo "#define HAVE_BSD_SIGNALS 1" >>confdefs.h +printf "%s\n" "#define HAVE_BSD_SIGNALS 1" >>confdefs.h elif test "$bash_cv_signal_vintage" = svr3; then -$as_echo "#define HAVE_USG_SIGHOLD 1" >>confdefs.h +printf "%s\n" "#define HAVE_USG_SIGHOLD 1" >>confdefs.h fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if signal handlers must be reinstalled when invoked" >&5 -$as_echo_n "checking if signal handlers must be reinstalled when invoked... " >&6; } -if ${bash_cv_must_reinstall_sighandlers+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&5 -$as_echo "$as_me: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if signal handlers must be reinstalled when invoked" >&5 +printf %s "checking if signal handlers must be reinstalled when invoked... " >&6; } +if test ${bash_cv_must_reinstall_sighandlers+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&5 +printf "%s\n" "$as_me: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&2;} bash_cv_must_reinstall_sighandlers=no -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5344,7 +6166,7 @@ else #endif #include -typedef RETSIGTYPE sigfunc(); +typedef void sigfunc(); volatile int nsigint; @@ -5366,7 +6188,7 @@ set_signal_handler(sig, handler) #define set_signal_handler(s, h) signal(s, h) #endif -RETSIGTYPE +void sigint(s) int s; { @@ -5384,9 +6206,10 @@ main() } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : bash_cv_must_reinstall_sighandlers=no -else +else $as_nop bash_cv_must_reinstall_sighandlers=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -5395,26 +6218,32 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_must_reinstall_sighandlers" >&5 -$as_echo "$bash_cv_must_reinstall_sighandlers" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_must_reinstall_sighandlers" >&5 +printf "%s\n" "$bash_cv_must_reinstall_sighandlers" >&6; } if test $bash_cv_must_reinstall_sighandlers = yes; then -$as_echo "#define MUST_REINSTALL_SIGHANDLERS 1" >>confdefs.h +printf "%s\n" "#define MUST_REINSTALL_SIGHANDLERS 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for presence of POSIX-style sigsetjmp/siglongjmp" >&5 -$as_echo_n "checking for presence of POSIX-style sigsetjmp/siglongjmp... " >&6; } -if ${bash_cv_func_sigsetjmp+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing" >&5 -$as_echo "$as_me: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing" >&2;} - bash_cv_func_sigsetjmp=missing +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for presence of POSIX-style sigsetjmp/siglongjmp" >&5 +printf %s "checking for presence of POSIX-style sigsetjmp/siglongjmp... " >&6; } +if test ${bash_cv_func_sigsetjmp+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to $bash_cv_posix_signals" >&5 +printf "%s\n" "$as_me: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to $bash_cv_posix_signals" >&2;} + if test "$bash_cv_posix_signals" = "yes" ; then + bash_cv_func_sigsetjmp=present + else + bash_cv_func_sigsetjmp=missing + fi -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5434,21 +6263,30 @@ exit (1); #else int code; -sigset_t set, oset; +sigset_t set, oset, nset; sigjmp_buf xx; /* get the mask */ sigemptyset(&set); sigemptyset(&oset); -sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set); + sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset); +/* paranoia -- make sure SIGINT is not blocked */ +sigdelset (&oset, SIGINT); +sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL); /* save it */ code = sigsetjmp(xx, 1); if (code) - exit(0); /* could get sigmask and compare to oset here. */ +{ + sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &nset); + /* could compare nset to oset here, but we just look for SIGINT */ + if (sigismember (&nset, SIGINT)) + exit(1); + exit(0); +} -/* change it */ +/* change it so that SIGINT is blocked */ sigaddset(&set, SIGINT); sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL); @@ -5457,10 +6295,12 @@ siglongjmp(xx, 10); exit(1); #endif } + _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : bash_cv_func_sigsetjmp=present -else +else $as_nop bash_cv_func_sigsetjmp=missing fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -5469,59 +6309,62 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_sigsetjmp" >&5 -$as_echo "$bash_cv_func_sigsetjmp" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_sigsetjmp" >&5 +printf "%s\n" "$bash_cv_func_sigsetjmp" >&6; } if test $bash_cv_func_sigsetjmp = present; then -$as_echo "#define HAVE_POSIX_SIGSETJMP 1" >>confdefs.h +printf "%s\n" "#define HAVE_POSIX_SIGSETJMP 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for lstat" >&5 -$as_echo_n "checking for lstat... " >&6; } -if ${bash_cv_func_lstat+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lstat" >&5 +printf %s "checking for lstat... " >&6; } +if test ${bash_cv_func_lstat+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include + #include + #include int -main () +main (void) { lstat(".",(struct stat *)0); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : bash_cv_func_lstat=yes -else +else $as_nop bash_cv_func_lstat=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_lstat" >&5 -$as_echo "$bash_cv_func_lstat" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_lstat" >&5 +printf "%s\n" "$bash_cv_func_lstat" >&6; } if test $bash_cv_func_lstat = yes; then - $as_echo "#define HAVE_LSTAT 1" >>confdefs.h + printf "%s\n" "#define HAVE_LSTAT 1" >>confdefs.h fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether or not strcoll and strcmp differ" >&5 -$as_echo_n "checking whether or not strcoll and strcmp differ... " >&6; } -if ${bash_cv_func_strcoll_broken+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&5 -$as_echo "$as_me: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether or not strcoll and strcmp differ" >&5 +printf %s "checking whether or not strcoll and strcmp differ... " >&6; } +if test ${bash_cv_func_strcoll_broken+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&5 +printf "%s\n" "$as_me: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&2;} bash_cv_func_strcoll_broken=no -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5564,9 +6407,10 @@ char *v[]; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : bash_cv_func_strcoll_broken=yes -else +else $as_nop bash_cv_func_strcoll_broken=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -5575,85 +6419,20 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_strcoll_broken" >&5 -$as_echo "$bash_cv_func_strcoll_broken" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_strcoll_broken" >&5 +printf "%s\n" "$bash_cv_func_strcoll_broken" >&6; } if test $bash_cv_func_strcoll_broken = yes; then -$as_echo "#define STRCOLL_BROKEN 1" >>confdefs.h - -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the ctype macros accept non-ascii characters" >&5 -$as_echo_n "checking whether the ctype macros accept non-ascii characters... " >&6; } -if ${bash_cv_func_ctype_nonascii+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check ctype macros if cross compiling -- defaulting to no" >&5 -$as_echo "$as_me: WARNING: cannot check ctype macros if cross compiling -- defaulting to no" >&2;} - bash_cv_func_ctype_nonascii=no - -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#ifdef HAVE_LOCALE_H -#include -#endif -#include -#include -#include - -int -main(c, v) -int c; -char *v[]; -{ - char *deflocale; - unsigned char x; - int r1, r2; - -#ifdef HAVE_SETLOCALE - /* We take a shot here. If that locale is not known, try the - system default. We try this one because '\342' (226) is - known to be a printable character in that locale. */ - deflocale = setlocale(LC_ALL, "en_US.ISO8859-1"); - if (deflocale == 0) - deflocale = setlocale(LC_ALL, ""); -#endif - - x = '\342'; - r1 = isprint(x); - x -= 128; - r2 = isprint(x); - exit (r1 == 0 || r2 == 0); -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - bash_cv_func_ctype_nonascii=yes -else - bash_cv_func_ctype_nonascii=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_ctype_nonascii" >&5 -$as_echo "$bash_cv_func_ctype_nonascii" >&6; } -if test $bash_cv_func_ctype_nonascii = yes; then -$as_echo "#define CTYPE_NON_ASCII 1" >>confdefs.h +printf "%s\n" "#define STRCOLL_BROKEN 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getpw functions are declared in pwd.h" >&5 -$as_echo_n "checking whether getpw functions are declared in pwd.h... " >&6; } -if ${bash_cv_getpw_declared+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether getpw functions are declared in pwd.h" >&5 +printf %s "checking whether getpw functions are declared in pwd.h... " >&6; } +if test ${bash_cv_getpw_declared+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5665,28 +6444,30 @@ else _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "getpwuid" >/dev/null 2>&1; then : + $EGREP "getpwuid" >/dev/null 2>&1 +then : bash_cv_getpw_declared=yes -else +else $as_nop bash_cv_getpw_declared=no fi -rm -f conftest* +rm -rf conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_getpw_declared" >&5 -$as_echo "$bash_cv_getpw_declared" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_getpw_declared" >&5 +printf "%s\n" "$bash_cv_getpw_declared" >&6; } if test $bash_cv_getpw_declared = yes; then -$as_echo "#define HAVE_GETPW_DECLS 1" >>confdefs.h +printf "%s\n" "#define HAVE_GETPW_DECLS 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether termios.h defines TIOCGWINSZ" >&5 -$as_echo_n "checking whether termios.h defines TIOCGWINSZ... " >&6; } -if ${ac_cv_sys_tiocgwinsz_in_termios_h+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether termios.h defines TIOCGWINSZ" >&5 +printf %s "checking whether termios.h defines TIOCGWINSZ... " >&6; } +if test ${ac_cv_sys_tiocgwinsz_in_termios_h+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -5697,23 +6478,25 @@ else _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then : + $EGREP "yes" >/dev/null 2>&1 +then : ac_cv_sys_tiocgwinsz_in_termios_h=yes -else +else $as_nop ac_cv_sys_tiocgwinsz_in_termios_h=no fi -rm -f conftest* +rm -rf conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_tiocgwinsz_in_termios_h" >&5 -$as_echo "$ac_cv_sys_tiocgwinsz_in_termios_h" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_tiocgwinsz_in_termios_h" >&5 +printf "%s\n" "$ac_cv_sys_tiocgwinsz_in_termios_h" >&6; } if test $ac_cv_sys_tiocgwinsz_in_termios_h != yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sys/ioctl.h defines TIOCGWINSZ" >&5 -$as_echo_n "checking whether sys/ioctl.h defines TIOCGWINSZ... " >&6; } -if ${ac_cv_sys_tiocgwinsz_in_sys_ioctl_h+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether sys/ioctl.h defines TIOCGWINSZ" >&5 +printf %s "checking whether sys/ioctl.h defines TIOCGWINSZ... " >&6; } +if test ${ac_cv_sys_tiocgwinsz_in_sys_ioctl_h+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -5724,269 +6507,325 @@ else _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then : + $EGREP "yes" >/dev/null 2>&1 +then : ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=yes -else +else $as_nop ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=no fi -rm -f conftest* +rm -rf conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&5 -$as_echo "$ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&5 +printf "%s\n" "$ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&6; } if test $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h = yes; then -$as_echo "#define GWINSZ_IN_SYS_IOCTL 1" >>confdefs.h +printf "%s\n" "#define GWINSZ_IN_SYS_IOCTL 1" >>confdefs.h fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sig_atomic_t in signal.h" >&5 -$as_echo_n "checking for sig_atomic_t in signal.h... " >&6; } -if ${ac_cv_have_sig_atomic_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include + ac_fn_c_check_header_compile "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default" +if test "x$ac_cv_header_inttypes_h" = xyes +then : + printf "%s\n" "#define HAVE_INTTYPES_H 1" >>confdefs.h + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sig_atomic_t in signal.h" >&5 +printf %s "checking for sig_atomic_t in signal.h... " >&6; } +if test ${ac_cv_have_sig_atomic_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + #include int -main () +main (void) { sig_atomic_t x; ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_have_sig_atomic_t=yes -else +else $as_nop ac_cv_have_sig_atomic_t=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_sig_atomic_t" >&5 -$as_echo "$ac_cv_have_sig_atomic_t" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_sig_atomic_t" >&5 +printf "%s\n" "$ac_cv_have_sig_atomic_t" >&6; } if test "$ac_cv_have_sig_atomic_t" = "no" then - ac_fn_c_check_type "$LINENO" "sig_atomic_t" "ac_cv_type_sig_atomic_t" "$ac_includes_default" -if test "x$ac_cv_type_sig_atomic_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -#define sig_atomic_t int -_ACEOF - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether signal handlers are of type void" >&5 -$as_echo_n "checking whether signal handlers are of type void... " >&6; } -if ${bash_cv_void_sighandler+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sig_atomic_t" >&5 +printf %s "checking for sig_atomic_t... " >&6; } +if test ${bash_cv_type_sig_atomic_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include -#include -#ifdef signal -#undef signal +#if HAVE_STDLIB_H +#include #endif -#ifdef __cplusplus -extern "C" +#if HAVE_STDDEF_H +#include #endif -void (*signal ()) (); -int -main () -{ -int i; - ; - return 0; -} +#if HAVE_INTTYPES_H +#include +#endif +#if HAVE_STDINT_H +#include +#endif +#include + _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - bash_cv_void_sighandler=yes -else - bash_cv_void_sighandler=no +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "sig_atomic_t" >/dev/null 2>&1 +then : + bash_cv_type_sig_atomic_t=yes +else $as_nop + bash_cv_type_sig_atomic_t=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -rf conftest* + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_sig_atomic_t" >&5 +printf "%s\n" "$bash_cv_type_sig_atomic_t" >&6; } + +if test $bash_cv_type_sig_atomic_t = no; then + printf "%s\n" "#define sig_atomic_t int" >>confdefs.h + fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_void_sighandler" >&5 -$as_echo "$bash_cv_void_sighandler" >&6; } -if test $bash_cv_void_sighandler = yes; then -$as_echo "#define VOID_SIGHANDLER 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for TIOCSTAT in sys/ioctl.h" >&5 -$as_echo_n "checking for TIOCSTAT in sys/ioctl.h... " >&6; } -if ${bash_cv_tiocstat_in_ioctl+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for TIOCSTAT in sys/ioctl.h" >&5 +printf %s "checking for TIOCSTAT in sys/ioctl.h... " >&6; } +if test ${bash_cv_tiocstat_in_ioctl+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ + #include #include int -main () +main (void) { int x = TIOCSTAT; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : bash_cv_tiocstat_in_ioctl=yes -else +else $as_nop bash_cv_tiocstat_in_ioctl=no + fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_tiocstat_in_ioctl" >&5 -$as_echo "$bash_cv_tiocstat_in_ioctl" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_tiocstat_in_ioctl" >&5 +printf "%s\n" "$bash_cv_tiocstat_in_ioctl" >&6; } if test $bash_cv_tiocstat_in_ioctl = yes; then -$as_echo "#define TIOCSTAT_IN_SYS_IOCTL 1" >>confdefs.h +printf "%s\n" "#define TIOCSTAT_IN_SYS_IOCTL 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FIONREAD in sys/ioctl.h" >&5 -$as_echo_n "checking for FIONREAD in sys/ioctl.h... " >&6; } -if ${bash_cv_fionread_in_ioctl+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for FIONREAD in sys/ioctl.h" >&5 +printf %s "checking for FIONREAD in sys/ioctl.h... " >&6; } +if test ${bash_cv_fionread_in_ioctl+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ + #include #include int -main () +main (void) { int x = FIONREAD; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : bash_cv_fionread_in_ioctl=yes -else +else $as_nop bash_cv_fionread_in_ioctl=no + fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_fionread_in_ioctl" >&5 -$as_echo "$bash_cv_fionread_in_ioctl" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_fionread_in_ioctl" >&5 +printf "%s\n" "$bash_cv_fionread_in_ioctl" >&6; } if test $bash_cv_fionread_in_ioctl = yes; then -$as_echo "#define FIONREAD_IN_SYS_IOCTL 1" >>confdefs.h +printf "%s\n" "#define FIONREAD_IN_SYS_IOCTL 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for speed_t in sys/types.h" >&5 -$as_echo_n "checking for speed_t in sys/types.h... " >&6; } -if ${bash_cv_speed_t_in_sys_types+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for speed_t in sys/types.h" >&5 +printf %s "checking for speed_t in sys/types.h... " >&6; } +if test ${bash_cv_speed_t_in_sys_types+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { speed_t x; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : bash_cv_speed_t_in_sys_types=yes -else +else $as_nop bash_cv_speed_t_in_sys_types=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_speed_t_in_sys_types" >&5 -$as_echo "$bash_cv_speed_t_in_sys_types" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_speed_t_in_sys_types" >&5 +printf "%s\n" "$bash_cv_speed_t_in_sys_types" >&6; } if test $bash_cv_speed_t_in_sys_types = yes; then -$as_echo "#define SPEED_T_IN_SYS_TYPES 1" >>confdefs.h +printf "%s\n" "#define SPEED_T_IN_SYS_TYPES 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct winsize in sys/ioctl.h and termios.h" >&5 -$as_echo_n "checking for struct winsize in sys/ioctl.h and termios.h... " >&6; } -if ${bash_cv_struct_winsize_header+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct winsize in sys/ioctl.h and termios.h" >&5 +printf %s "checking for struct winsize in sys/ioctl.h and termios.h... " >&6; } +if test ${bash_cv_struct_winsize_header+y} +then : + printf %s "(cached) " >&6 +else $as_nop + +if test ${bash_cv_struct_winsize_ioctl+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ + #include #include + int -main () +main (void) { + struct winsize x; +if (sizeof (x) > 0) return (0); + ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - bash_cv_struct_winsize_header=ioctl_h -else +if ac_fn_c_try_compile "$LINENO" +then : + bash_cv_struct_winsize_ioctl=yes +else $as_nop + bash_cv_struct_winsize_ioctl=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi + + +if test ${bash_cv_struct_winsize_termios+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ + #include -#include +#include + int -main () +main (void) { + struct winsize x; +if (sizeof (x) > 0) return (0); + ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : + bash_cv_struct_winsize_termios=yes +else $as_nop + bash_cv_struct_winsize_termios=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi + + + +if test $bash_cv_struct_winsize_ioctl = yes; then + bash_cv_struct_winsize_header=ioctl_h +elif test $bash_cv_struct_winsize_termios = yes; then bash_cv_struct_winsize_header=termios_h else bash_cv_struct_winsize_header=other fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $bash_cv_struct_winsize_header = ioctl_h; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: sys/ioctl.h" >&5 -$as_echo "sys/ioctl.h" >&6; } - $as_echo "#define STRUCT_WINSIZE_IN_SYS_IOCTL 1" >>confdefs.h + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: sys/ioctl.h" >&5 +printf "%s\n" "sys/ioctl.h" >&6; } + printf "%s\n" "#define STRUCT_WINSIZE_IN_SYS_IOCTL 1" >>confdefs.h elif test $bash_cv_struct_winsize_header = termios_h; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: termios.h" >&5 -$as_echo "termios.h" >&6; } - $as_echo "#define STRUCT_WINSIZE_IN_TERMIOS 1" >>confdefs.h + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: termios.h" >&5 +printf "%s\n" "termios.h" >&6; } + printf "%s\n" "#define STRUCT_WINSIZE_IN_TERMIOS 1" >>confdefs.h else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 -$as_echo "not found" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +printf "%s\n" "not found" >&6; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct dirent.d_ino" >&5 -$as_echo_n "checking for struct dirent.d_ino... " >&6; } -if ${bash_cv_dirent_has_dino+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct dirent.d_ino" >&5 +printf %s "checking for struct dirent.d_ino... " >&6; } +if test ${bash_cv_dirent_has_d_ino+y} +then : + printf %s "(cached) " >&6 +else $as_nop + +ac_fn_c_check_member "$LINENO" "struct dirent" "d_ino" "ac_cv_member_struct_dirent_d_ino" " #include #include #ifdef HAVE_UNISTD_H @@ -6007,40 +6846,37 @@ else # endif #endif /* HAVE_DIRENT_H */ -int -main () -{ +" +if test "x$ac_cv_member_struct_dirent_d_ino" = xyes +then : -struct dirent d; int z; z = d.d_ino; +printf "%s\n" "#define HAVE_STRUCT_DIRENT_D_INO 1" >>confdefs.h - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - bash_cv_dirent_has_dino=yes -else - bash_cv_dirent_has_dino=no +bash_cv_dirent_has_d_ino=yes +else $as_nop + bash_cv_dirent_has_d_ino=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dirent_has_dino" >&5 -$as_echo "$bash_cv_dirent_has_dino" >&6; } -if test $bash_cv_dirent_has_dino = yes; then -$as_echo "#define HAVE_STRUCT_DIRENT_D_INO 1" >>confdefs.h +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dirent_has_d_ino" >&5 +printf "%s\n" "$bash_cv_dirent_has_d_ino" >&6; } +if test $bash_cv_dirent_has_d_ino = yes; then +printf "%s\n" "#define HAVE_STRUCT_DIRENT_D_INO 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct dirent.d_fileno" >&5 -$as_echo_n "checking for struct dirent.d_fileno... " >&6; } -if ${bash_cv_dirent_has_d_fileno+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct dirent.d_fileno" >&5 +printf %s "checking for struct dirent.d_fileno... " >&6; } +if test ${bash_cv_dirent_has_d_fileno+y} +then : + printf %s "(cached) " >&6 +else $as_nop + +ac_fn_c_check_member "$LINENO" "struct dirent" "d_fileno" "ac_cv_member_struct_dirent_d_fileno" " #include #include #ifdef HAVE_UNISTD_H @@ -6061,55 +6897,163 @@ else # endif #endif /* HAVE_DIRENT_H */ +" +if test "x$ac_cv_member_struct_dirent_d_fileno" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_DIRENT_D_FILENO 1" >>confdefs.h + +bash_cv_dirent_has_d_fileno=yes +else $as_nop + bash_cv_dirent_has_d_fileno=no +fi + + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dirent_has_d_fileno" >&5 +printf "%s\n" "$bash_cv_dirent_has_d_fileno" >&6; } +if test $bash_cv_dirent_has_d_fileno = yes; then +printf "%s\n" "#define HAVE_STRUCT_DIRENT_D_FILENO 1" >>confdefs.h + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct timeval in sys/time.h and time.h" >&5 +printf %s "checking for struct timeval in sys/time.h and time.h... " >&6; } +if test ${bash_cv_struct_timeval+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if HAVE_SYS_TIME_H + #include + #endif + #include + int -main () +main (void) { - -struct dirent d; int z; z = d.d_fileno; +static struct timeval x; x.tv_sec = x.tv_usec; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - bash_cv_dirent_has_d_fileno=yes -else - bash_cv_dirent_has_d_fileno=no +if ac_fn_c_try_compile "$LINENO" +then : + bash_cv_struct_timeval=yes +else $as_nop + bash_cv_struct_timeval=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dirent_has_d_fileno" >&5 -$as_echo "$bash_cv_dirent_has_d_fileno" >&6; } -if test $bash_cv_dirent_has_d_fileno = yes; then -$as_echo "#define HAVE_STRUCT_DIRENT_D_FILENO 1" >>confdefs.h +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_struct_timeval" >&5 +printf "%s\n" "$bash_cv_struct_timeval" >&6; } +if test $bash_cv_struct_timeval = yes; then + printf "%s\n" "#define HAVE_TIMEVAL 1" >>confdefs.h fi -for ac_header in libaudit.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "libaudit.h" "ac_cv_header_libaudit_h" "$ac_includes_default" -if test "x$ac_cv_header_libaudit_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBAUDIT_H 1 -_ACEOF +ac_fn_c_check_header_compile "$LINENO" "libaudit.h" "ac_cv_header_libaudit_h" "$ac_includes_default" +if test "x$ac_cv_header_libaudit_h" = xyes +then : + printf "%s\n" "#define HAVE_LIBAUDIT_H 1" >>confdefs.h fi -done +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5 +printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; } +if test ${ac_cv_c_undeclared_builtin_options+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_CFLAGS=$CFLAGS + ac_cv_c_undeclared_builtin_options='cannot detect' + for ac_arg in '' -fno-builtin; do + CFLAGS="$ac_save_CFLAGS $ac_arg" + # This test program should *not* compile successfully. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ -ac_fn_c_check_decl "$LINENO" "AUDIT_USER_TTY" "ac_cv_have_decl_AUDIT_USER_TTY" "#include -" -if test "x$ac_cv_have_decl_AUDIT_USER_TTY" = xyes; then : +int +main (void) +{ +(void) strchr; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + # This test program should compile successfully. + # No library function is consistently available on + # freestanding implementations, so test against a dummy + # declaration. Include always-available headers on the + # off chance that they somehow elicit warnings. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +extern void ac_decl (int, char *); + +int +main (void) +{ +(void) ac_decl (0, (char *) 0); + (void) ac_decl; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + if test x"$ac_arg" = x +then : + ac_cv_c_undeclared_builtin_options='none needed' +else $as_nop + ac_cv_c_undeclared_builtin_options=$ac_arg +fi + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CFLAGS=$ac_save_CFLAGS + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5 +printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; } + case $ac_cv_c_undeclared_builtin_options in #( + 'cannot detect') : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot make $CC report undeclared builtins +See \`config.log' for more details" "$LINENO" 5; } ;; #( + 'none needed') : + ac_c_undeclared_builtin_options='' ;; #( + *) : + ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;; +esac + +ac_fn_check_decl "$LINENO" "AUDIT_USER_TTY" "ac_cv_have_decl_AUDIT_USER_TTY" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_AUDIT_USER_TTY" = xyes +then : ac_have_decl=1 -else +else $as_nop ac_have_decl=0 fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_AUDIT_USER_TTY $ac_have_decl -_ACEOF +printf "%s\n" "#define HAVE_DECL_AUDIT_USER_TTY $ac_have_decl" >>confdefs.h case "$host_os" in @@ -6119,22 +7063,25 @@ esac if test "X$bash_cv_termcap_lib" = "X"; then _bash_needmsg=yes else -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5 -$as_echo_n "checking which library has the termcap functions... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5 +printf %s "checking which library has the termcap functions... " >&6; } _bash_needmsg= fi -if ${bash_cv_termcap_lib+:} false; then : - $as_echo_n "(cached) " >&6 -else +if test ${bash_cv_termcap_lib+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_fn_c_check_func "$LINENO" "tgetent" "ac_cv_func_tgetent" -if test "x$ac_cv_func_tgetent" = xyes; then : +if test "x$ac_cv_func_tgetent" = xyes +then : bash_cv_termcap_lib=libc -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermcap" >&5 -$as_echo_n "checking for tgetent in -ltermcap... " >&6; } -if ${ac_cv_lib_termcap_tgetent+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermcap" >&5 +printf %s "checking for tgetent in -ltermcap... " >&6; } +if test ${ac_cv_lib_termcap_tgetent+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ltermcap $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -6143,37 +7090,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char tgetent (); int -main () +main (void) { return tgetent (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_termcap_tgetent=yes -else +else $as_nop ac_cv_lib_termcap_tgetent=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_tgetent" >&5 -$as_echo "$ac_cv_lib_termcap_tgetent" >&6; } -if test "x$ac_cv_lib_termcap_tgetent" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_tgetent" >&5 +printf "%s\n" "$ac_cv_lib_termcap_tgetent" >&6; } +if test "x$ac_cv_lib_termcap_tgetent" = xyes +then : bash_cv_termcap_lib=libtermcap -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltinfo" >&5 -$as_echo_n "checking for tgetent in -ltinfo... " >&6; } -if ${ac_cv_lib_tinfo_tgetent+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltinfo" >&5 +printf %s "checking for tgetent in -ltinfo... " >&6; } +if test ${ac_cv_lib_tinfo_tgetent+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ltinfo $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -6182,37 +7129,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char tgetent (); int -main () +main (void) { return tgetent (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_tinfo_tgetent=yes -else +else $as_nop ac_cv_lib_tinfo_tgetent=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tinfo_tgetent" >&5 -$as_echo "$ac_cv_lib_tinfo_tgetent" >&6; } -if test "x$ac_cv_lib_tinfo_tgetent" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tinfo_tgetent" >&5 +printf "%s\n" "$ac_cv_lib_tinfo_tgetent" >&6; } +if test "x$ac_cv_lib_tinfo_tgetent" = xyes +then : bash_cv_termcap_lib=libtinfo -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lcurses" >&5 -$as_echo_n "checking for tgetent in -lcurses... " >&6; } -if ${ac_cv_lib_curses_tgetent+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lcurses" >&5 +printf %s "checking for tgetent in -lcurses... " >&6; } +if test ${ac_cv_lib_curses_tgetent+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lcurses $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -6221,37 +7168,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char tgetent (); int -main () +main (void) { return tgetent (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_curses_tgetent=yes -else +else $as_nop ac_cv_lib_curses_tgetent=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_tgetent" >&5 -$as_echo "$ac_cv_lib_curses_tgetent" >&6; } -if test "x$ac_cv_lib_curses_tgetent" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_tgetent" >&5 +printf "%s\n" "$ac_cv_lib_curses_tgetent" >&6; } +if test "x$ac_cv_lib_curses_tgetent" = xyes +then : bash_cv_termcap_lib=libcurses -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncurses" >&5 -$as_echo_n "checking for tgetent in -lncurses... " >&6; } -if ${ac_cv_lib_ncurses_tgetent+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncurses" >&5 +printf %s "checking for tgetent in -lncurses... " >&6; } +if test ${ac_cv_lib_ncurses_tgetent+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lncurses $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -6260,37 +7207,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char tgetent (); int -main () +main (void) { return tgetent (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_ncurses_tgetent=yes -else +else $as_nop ac_cv_lib_ncurses_tgetent=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_tgetent" >&5 -$as_echo "$ac_cv_lib_ncurses_tgetent" >&6; } -if test "x$ac_cv_lib_ncurses_tgetent" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_tgetent" >&5 +printf "%s\n" "$ac_cv_lib_ncurses_tgetent" >&6; } +if test "x$ac_cv_lib_ncurses_tgetent" = xyes +then : bash_cv_termcap_lib=libncurses -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncursesw" >&5 -$as_echo_n "checking for tgetent in -lncursesw... " >&6; } -if ${ac_cv_lib_ncursesw_tgetent+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncursesw" >&5 +printf %s "checking for tgetent in -lncursesw... " >&6; } +if test ${ac_cv_lib_ncursesw_tgetent+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lncursesw $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -6299,32 +7246,31 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char tgetent (); int -main () +main (void) { return tgetent (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_ncursesw_tgetent=yes -else +else $as_nop ac_cv_lib_ncursesw_tgetent=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncursesw_tgetent" >&5 -$as_echo "$ac_cv_lib_ncursesw_tgetent" >&6; } -if test "x$ac_cv_lib_ncursesw_tgetent" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncursesw_tgetent" >&5 +printf "%s\n" "$ac_cv_lib_ncursesw_tgetent" >&6; } +if test "x$ac_cv_lib_ncursesw_tgetent" = xyes +then : bash_cv_termcap_lib=libncursesw -else +else $as_nop bash_cv_termcap_lib=gnutermcap fi @@ -6341,11 +7287,11 @@ fi fi if test "X$_bash_needmsg" = "Xyes"; then -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5 -$as_echo_n "checking which library has the termcap functions... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5 +printf %s "checking which library has the termcap functions... " >&6; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: using $bash_cv_termcap_lib" >&5 -$as_echo "using $bash_cv_termcap_lib" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: using $bash_cv_termcap_lib" >&5 +printf "%s\n" "using $bash_cv_termcap_lib" >&6; } if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then LDFLAGS="$LDFLAGS -L./lib/termcap" TERMCAP_LIB="./lib/termcap/libtermcap.a" @@ -6363,7 +7309,8 @@ elif test $bash_cv_termcap_lib = libc; then TERMCAP_LIB= TERMCAP_DEP= else -TERMCAP_LIB=-lcurses +# we assume ncurses is installed somewhere the linker can find it +TERMCAP_LIB=-lncurses TERMCAP_DEP= fi @@ -6376,19 +7323,18 @@ if test "$TERMCAP_LIB" = "./lib/termcap/libtermcap.a"; then fi # Windows ncurses installation if test "$TERMCAP_LIB" = "-lncurses"; then - for ac_header in ncurses/termcap.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "ncurses/termcap.h" "ac_cv_header_ncurses_termcap_h" "$ac_includes_default" -if test "x$ac_cv_header_ncurses_termcap_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_NCURSES_TERMCAP_H 1 -_ACEOF + ac_fn_c_check_header_compile "$LINENO" "ncurses/termcap.h" "ac_cv_header_ncurses_termcap_h" "$ac_includes_default" +if test "x$ac_cv_header_ncurses_termcap_h" = xyes +then : + printf "%s\n" "#define HAVE_NCURSES_TERMCAP_H 1" >>confdefs.h fi -done - fi +case "$opt_shared_termcap_lib" in +[Yy][Ee][Ss]) SHARED_TERMCAP="$TERMCAP_LIB" ;; +-l*) SHARED_TERMCAP="$opt_shared_termcap_lib" ;; +esac case "$TERMCAP_LIB" in -ltinfo) TERMCAP_PKG_CONFIG_LIB=tinfo ;; @@ -6399,92 +7345,114 @@ case "$TERMCAP_LIB" in esac -for ac_header in wctype.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "wctype.h" "ac_cv_header_wctype_h" "$ac_includes_default" -if test "x$ac_cv_header_wctype_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_WCTYPE_H 1 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5 +printf %s "checking for nl_langinfo and CODESET... " >&6; } +if test ${am_cv_langinfo_codeset+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +char* cs = nl_langinfo(CODESET); return !cs; + ; + return 0; +} _ACEOF - +if ac_fn_c_try_link "$LINENO" +then : + am_cv_langinfo_codeset=yes +else $as_nop + am_cv_langinfo_codeset=no fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext -done +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5 +printf "%s\n" "$am_cv_langinfo_codeset" >&6; } + if test $am_cv_langinfo_codeset = yes; then -for ac_header in wchar.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "wchar.h" "ac_cv_header_wchar_h" "$ac_includes_default" -if test "x$ac_cv_header_wchar_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_WCHAR_H 1 -_ACEOF +printf "%s\n" "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h -fi + fi -done -for ac_header in langinfo.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "langinfo.h" "ac_cv_header_langinfo_h" "$ac_includes_default" -if test "x$ac_cv_header_langinfo_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LANGINFO_H 1 -_ACEOF +ac_fn_c_check_header_compile "$LINENO" "wctype.h" "ac_cv_header_wctype_h" "$ac_includes_default" +if test "x$ac_cv_header_wctype_h" = xyes +then : + printf "%s\n" "#define HAVE_WCTYPE_H 1" >>confdefs.h fi -done +ac_fn_c_check_header_compile "$LINENO" "wchar.h" "ac_cv_header_wchar_h" "$ac_includes_default" +if test "x$ac_cv_header_wchar_h" = xyes +then : + printf "%s\n" "#define HAVE_WCHAR_H 1" >>confdefs.h +fi -for ac_header in mbstr.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "mbstr.h" "ac_cv_header_mbstr_h" "$ac_includes_default" -if test "x$ac_cv_header_mbstr_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_MBSTR_H 1 -_ACEOF +ac_fn_c_check_header_compile "$LINENO" "langinfo.h" "ac_cv_header_langinfo_h" "$ac_includes_default" +if test "x$ac_cv_header_langinfo_h" = xyes +then : + printf "%s\n" "#define HAVE_LANGINFO_H 1" >>confdefs.h fi -done + +ac_fn_c_check_header_compile "$LINENO" "mbstr.h" "ac_cv_header_mbstr_h" "$ac_includes_default" +if test "x$ac_cv_header_mbstr_h" = xyes +then : + printf "%s\n" "#define HAVE_MBSTR_H 1" >>confdefs.h + +fi ac_fn_c_check_func "$LINENO" "mbrlen" "ac_cv_func_mbrlen" -if test "x$ac_cv_func_mbrlen" = xyes; then : - $as_echo "#define HAVE_MBRLEN 1" >>confdefs.h +if test "x$ac_cv_func_mbrlen" = xyes +then : + printf "%s\n" "#define HAVE_MBRLEN 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "mbscasecmp" "ac_cv_func_mbscasecmp" -if test "x$ac_cv_func_mbscasecmp" = xyes; then : - $as_echo "#define HAVE_MBSCMP 1" >>confdefs.h +if test "x$ac_cv_func_mbscasecmp" = xyes +then : + printf "%s\n" "#define HAVE_MBSCMP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "mbscmp" "ac_cv_func_mbscmp" -if test "x$ac_cv_func_mbscmp" = xyes; then : - $as_echo "#define HAVE_MBSCMP 1" >>confdefs.h +if test "x$ac_cv_func_mbscmp" = xyes +then : + printf "%s\n" "#define HAVE_MBSCMP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "mbsnrtowcs" "ac_cv_func_mbsnrtowcs" -if test "x$ac_cv_func_mbsnrtowcs" = xyes; then : - $as_echo "#define HAVE_MBSNRTOWCS 1" >>confdefs.h +if test "x$ac_cv_func_mbsnrtowcs" = xyes +then : + printf "%s\n" "#define HAVE_MBSNRTOWCS 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "mbsrtowcs" "ac_cv_func_mbsrtowcs" -if test "x$ac_cv_func_mbsrtowcs" = xyes; then : - $as_echo "#define HAVE_MBSRTOWCS 1" >>confdefs.h +if test "x$ac_cv_func_mbsrtowcs" = xyes +then : + printf "%s\n" "#define HAVE_MBSRTOWCS 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "mbschr" "ac_cv_func_mbschr" -if test "x$ac_cv_func_mbschr" = xyes; then : - $as_echo "#define HAVE_MBSCHR 1" >>confdefs.h +if test "x$ac_cv_func_mbschr" = xyes +then : + printf "%s\n" "#define HAVE_MBSCHR 1" >>confdefs.h -else +else $as_nop case " $LIBOBJS " in *" mbschr.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS mbschr.$ac_objext" @@ -6494,43 +7462,48 @@ esac fi - ac_fn_c_check_func "$LINENO" "wcrtomb" "ac_cv_func_wcrtomb" -if test "x$ac_cv_func_wcrtomb" = xyes; then : - $as_echo "#define HAVE_WCRTOMB 1" >>confdefs.h +if test "x$ac_cv_func_wcrtomb" = xyes +then : + printf "%s\n" "#define HAVE_WCRTOMB 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "wcscoll" "ac_cv_func_wcscoll" -if test "x$ac_cv_func_wcscoll" = xyes; then : - $as_echo "#define HAVE_WCSCOLL 1" >>confdefs.h +if test "x$ac_cv_func_wcscoll" = xyes +then : + printf "%s\n" "#define HAVE_WCSCOLL 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "wcsdup" "ac_cv_func_wcsdup" -if test "x$ac_cv_func_wcsdup" = xyes; then : - $as_echo "#define HAVE_WCSDUP 1" >>confdefs.h +if test "x$ac_cv_func_wcsdup" = xyes +then : + printf "%s\n" "#define HAVE_WCSDUP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "wcwidth" "ac_cv_func_wcwidth" -if test "x$ac_cv_func_wcwidth" = xyes; then : - $as_echo "#define HAVE_WCWIDTH 1" >>confdefs.h +if test "x$ac_cv_func_wcwidth" = xyes +then : + printf "%s\n" "#define HAVE_WCWIDTH 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "wctype" "ac_cv_func_wctype" -if test "x$ac_cv_func_wctype" = xyes; then : - $as_echo "#define HAVE_WCTYPE 1" >>confdefs.h +if test "x$ac_cv_func_wctype" = xyes +then : + printf "%s\n" "#define HAVE_WCTYPE 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "wcswidth" "ac_cv_func_wcswidth" -if test "x$ac_cv_func_wcswidth" = xyes; then : - $as_echo "#define HAVE_WCSWIDTH 1" >>confdefs.h +if test "x$ac_cv_func_wcswidth" = xyes +then : + printf "%s\n" "#define HAVE_WCSWIDTH 1" >>confdefs.h -else +else $as_nop case " $LIBOBJS " in *" wcswidth.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS wcswidth.$ac_objext" @@ -6541,17 +7514,17 @@ fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc and mbstate_t are properly declared" >&5 -$as_echo_n "checking whether mbrtowc and mbstate_t are properly declared... " >&6; } -if ${ac_cv_func_mbrtowc+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc and mbstate_t are properly declared" >&5 +printf %s "checking whether mbrtowc and mbstate_t are properly declared... " >&6; } +if test ${ac_cv_func_mbrtowc+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { wchar_t wc; char const s[] = ""; @@ -6562,82 +7535,74 @@ wchar_t wc; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_func_mbrtowc=yes -else +else $as_nop ac_cv_func_mbrtowc=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mbrtowc" >&5 -$as_echo "$ac_cv_func_mbrtowc" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mbrtowc" >&5 +printf "%s\n" "$ac_cv_func_mbrtowc" >&6; } if test $ac_cv_func_mbrtowc = yes; then -$as_echo "#define HAVE_MBRTOWC 1" >>confdefs.h +printf "%s\n" "#define HAVE_MBRTOWC 1" >>confdefs.h fi if test $ac_cv_func_mbrtowc = yes; then - $as_echo "#define HAVE_MBSTATE_T 1" >>confdefs.h + printf "%s\n" "#define HAVE_MBSTATE_T 1" >>confdefs.h fi -for ac_func in iswlower iswupper towlower towupper iswctype -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +ac_fn_c_check_func "$LINENO" "iswlower" "ac_cv_func_iswlower" +if test "x$ac_cv_func_iswlower" = xyes +then : + printf "%s\n" "#define HAVE_ISWLOWER 1" >>confdefs.h fi -done +ac_fn_c_check_func "$LINENO" "iswupper" "ac_cv_func_iswupper" +if test "x$ac_cv_func_iswupper" = xyes +then : + printf "%s\n" "#define HAVE_ISWUPPER 1" >>confdefs.h +fi +ac_fn_c_check_func "$LINENO" "towlower" "ac_cv_func_towlower" +if test "x$ac_cv_func_towlower" = xyes +then : + printf "%s\n" "#define HAVE_TOWLOWER 1" >>confdefs.h -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5 -$as_echo_n "checking for nl_langinfo and CODESET... " >&6; } -if ${bash_cv_langinfo_codeset+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -char* cs = nl_langinfo(CODESET); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - bash_cv_langinfo_codeset=yes -else - bash_cv_langinfo_codeset=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +ac_fn_c_check_func "$LINENO" "towupper" "ac_cv_func_towupper" +if test "x$ac_cv_func_towupper" = xyes +then : + printf "%s\n" "#define HAVE_TOWUPPER 1" >>confdefs.h + fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_langinfo_codeset" >&5 -$as_echo "$bash_cv_langinfo_codeset" >&6; } -if test $bash_cv_langinfo_codeset = yes; then - $as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h +ac_fn_c_check_func "$LINENO" "iswctype" "ac_cv_func_iswctype" +if test "x$ac_cv_func_iswctype" = xyes +then : + printf "%s\n" "#define HAVE_ISWCTYPE 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t in wchar.h" >&5 -$as_echo_n "checking for wchar_t in wchar.h... " >&6; } -if ${bash_cv_type_wchar_t+:} false; then : - $as_echo_n "(cached) " >&6 -else + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wchar_t in wchar.h" >&5 +printf %s "checking for wchar_t in wchar.h... " >&6; } +if test ${bash_cv_type_wchar_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include +#include int -main () +main (void) { wchar_t foo; @@ -6647,31 +7612,35 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : bash_cv_type_wchar_t=yes -else +else $as_nop bash_cv_type_wchar_t=no + fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wchar_t" >&5 -$as_echo "$bash_cv_type_wchar_t" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wchar_t" >&5 +printf "%s\n" "$bash_cv_type_wchar_t" >&6; } if test $bash_cv_type_wchar_t = yes; then -$as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h +printf "%s\n" "#define HAVE_WCHAR_T 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wctype_t in wctype.h" >&5 -$as_echo_n "checking for wctype_t in wctype.h... " >&6; } -if ${bash_cv_type_wctype_t+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wctype_t in wctype.h" >&5 +printf %s "checking for wctype_t in wctype.h... " >&6; } +if test ${bash_cv_type_wctype_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ + #include int -main () +main (void) { wctype_t foo; @@ -6681,31 +7650,35 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : bash_cv_type_wctype_t=yes -else +else $as_nop bash_cv_type_wctype_t=no + fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wctype_t" >&5 -$as_echo "$bash_cv_type_wctype_t" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wctype_t" >&5 +printf "%s\n" "$bash_cv_type_wctype_t" >&6; } if test $bash_cv_type_wctype_t = yes; then -$as_echo "#define HAVE_WCTYPE_T 1" >>confdefs.h +printf "%s\n" "#define HAVE_WCTYPE_T 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wint_t in wctype.h" >&5 -$as_echo_n "checking for wint_t in wctype.h... " >&6; } -if ${bash_cv_type_wint_t+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wint_t in wctype.h" >&5 +printf %s "checking for wint_t in wctype.h... " >&6; } +if test ${bash_cv_type_wint_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ + #include int -main () +main (void) { wint_t foo; @@ -6715,29 +7688,34 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : bash_cv_type_wint_t=yes -else +else $as_nop bash_cv_type_wint_t=no + fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wint_t" >&5 -$as_echo "$bash_cv_type_wint_t" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wint_t" >&5 +printf "%s\n" "$bash_cv_type_wint_t" >&6; } if test $bash_cv_type_wint_t = yes; then -$as_echo "#define HAVE_WINT_T 1" >>confdefs.h +printf "%s\n" "#define HAVE_WINT_T 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wcwidth broken with unicode combining characters" >&5 -$as_echo_n "checking for wcwidth broken with unicode combining characters... " >&6; } -if ${bash_cv_wcwidth_broken+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wcwidth broken with unicode combining characters" >&5 +printf %s "checking for wcwidth broken with unicode combining characters... " >&6; } +if test ${bash_cv_wcwidth_broken+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : bash_cv_wcwidth_broken=no -else + +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -6761,9 +7739,10 @@ char **v; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : bash_cv_wcwidth_broken=yes -else +else $as_nop bash_cv_wcwidth_broken=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -6771,27 +7750,23 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_wcwidth_broken" >&5 -$as_echo "$bash_cv_wcwidth_broken" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_wcwidth_broken" >&5 +printf "%s\n" "$bash_cv_wcwidth_broken" >&6; } if test "$bash_cv_wcwidth_broken" = yes; then -$as_echo "#define WCWIDTH_BROKEN 1" >>confdefs.h +printf "%s\n" "#define WCWIDTH_BROKEN 1" >>confdefs.h fi if test "$am_cv_func_iconv" = yes; then OLDLIBS="$LIBS" LIBS="$LIBS $LIBINTL $LIBICONV" - for ac_func in locale_charset -do : - ac_fn_c_check_func "$LINENO" "locale_charset" "ac_cv_func_locale_charset" -if test "x$ac_cv_func_locale_charset" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LOCALE_CHARSET 1 -_ACEOF + ac_fn_c_check_func "$LINENO" "locale_charset" "ac_cv_func_locale_charset" +if test "x$ac_cv_func_locale_charset" = xyes +then : + printf "%s\n" "#define HAVE_LOCALE_CHARSET 1" >>confdefs.h fi -done LIBS="$OLDLIBS" fi @@ -6800,17 +7775,19 @@ fi # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of wchar_t" >&5 -$as_echo_n "checking size of wchar_t... " >&6; } -if ${ac_cv_sizeof_wchar_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (wchar_t))" "ac_cv_sizeof_wchar_t" "$ac_includes_default"; then : - -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of wchar_t" >&5 +printf %s "checking size of wchar_t... " >&6; } +if test ${ac_cv_sizeof_wchar_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (wchar_t))" "ac_cv_sizeof_wchar_t" "$ac_includes_default" +then : + +else $as_nop if test "$ac_cv_type_wchar_t" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (wchar_t) See \`config.log' for more details" "$LINENO" 5; } else @@ -6819,14 +7796,12 @@ See \`config.log' for more details" "$LINENO" 5; } fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_wchar_t" >&5 -$as_echo "$ac_cv_sizeof_wchar_t" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_wchar_t" >&5 +printf "%s\n" "$ac_cv_sizeof_wchar_t" >&6; } -cat >>confdefs.h <<_ACEOF -#define SIZEOF_WCHAR_T $ac_cv_sizeof_wchar_t -_ACEOF +printf "%s\n" "#define SIZEOF_WCHAR_T $ac_cv_sizeof_wchar_t" >>confdefs.h @@ -6848,14 +7823,16 @@ esac # ${srcdir}/support/shobj-conf # if test -f ${srcdir}/support/shobj-conf; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking configuration for building shared libraries" >&5 -$as_echo_n "checking configuration for building shared libraries... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking configuration for building shared libraries" >&5 +printf %s "checking configuration for building shared libraries... " >&6; } eval `TERMCAP_LIB=$TERMCAP_LIB ${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c ${host_cpu} -o ${host_os} -v ${host_vendor}` -# case "$SHLIB_LIBS" in -# *curses*|*termcap*|*termlib*) ;; -# *) SHLIB_LIBS="$SHLIB_LIBS $TERMCAP_LIB" ;; -# esac + # SHARED_TERMCAP is set only if opt_shared_termcap_library is set + case "$SHLIB_LIBS" in + *curses*|*tinfo*) ;; + *termcap*|*termlib*) ;; # common aliases + *) SHLIB_LIBS="$SHLIB_LIBS $SHARED_TERMCAP" ;; + esac @@ -6872,8 +7849,8 @@ $as_echo_n "checking configuration for building shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SHLIB_STATUS" >&5 -$as_echo "$SHLIB_STATUS" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SHLIB_STATUS" >&5 +printf "%s\n" "$SHLIB_STATUS" >&6; } # SHLIB_STATUS is either `supported' or `unsupported'. If it's # `unsupported', turn off any default shared library building @@ -6920,6 +7897,7 @@ esac +# CFLAGS=${CFLAGS-"$AUTO_CFLAGS"} if test -n "$want_auto_cflags"; then CFLAGS="$AUTO_CFLAGS" fi @@ -6941,9 +7919,11 @@ CFLAGS="$CFLAGS $STYLE_CFLAGS" -ac_config_files="$ac_config_files Makefile doc/Makefile examples/Makefile shlib/Makefile readline.pc" +ac_config_files="$ac_config_files Makefile doc/Makefile examples/Makefile shlib/Makefile readline.pc history.pc" + + +ac_config_commands="$ac_config_commands stamp-h" -ac_config_commands="$ac_config_commands default" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -6972,8 +7952,8 @@ _ACEOF case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -7003,15 +7983,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; /^ac_cv_env_/b end t clear :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else @@ -7025,8 +8005,8 @@ $as_echo "$as_me: updating cache $cache_file" >&6;} fi fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -7043,7 +8023,7 @@ U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" @@ -7059,8 +8039,8 @@ LTLIBOBJS=$ac_ltlibobjs ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL @@ -7083,14 +8063,16 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else +else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( @@ -7100,46 +8082,46 @@ esac fi + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then +if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -7148,13 +8130,6 @@ if test "${PATH_SEPARATOR+set}" != set; then fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -7163,8 +8138,12 @@ case $0 in #(( for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS @@ -7176,30 +8155,10 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] @@ -7212,13 +8171,14 @@ as_fn_error () as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $2" >&2 + printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -7245,18 +8205,20 @@ as_fn_unset () { eval $1=; unset $1;} } as_unset=as_fn_unset + # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : eval 'as_fn_append () { eval $1+=\$2 }' -else +else $as_nop as_fn_append () { eval $1=\$$1\$2 @@ -7268,12 +8230,13 @@ fi # as_fn_append # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else +else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` @@ -7304,7 +8267,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | +printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -7326,6 +8289,10 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) @@ -7339,6 +8306,12 @@ case `echo -n x` in #((((( ECHO_N='-n';; esac +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -7380,7 +8353,7 @@ as_fn_mkdir_p () as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -7389,7 +8362,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | +printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -7451,8 +8424,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by readline $as_me 8.1, which was -generated by GNU Autoconf 2.69. Invocation command line was +This file was extended by readline $as_me 8.2, which was +generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -7514,14 +8487,16 @@ $config_commands Report bugs to ." _ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -readline config.status 8.1 -configured by $0, generated by GNU Autoconf 2.69, +readline config.status 8.2 +configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -7559,15 +8534,15 @@ do -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; + printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; + printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" @@ -7575,7 +8550,7 @@ do --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; @@ -7584,7 +8559,7 @@ do as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; + printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; @@ -7612,7 +8587,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" @@ -7626,7 +8601,7 @@ exec 5>>config.log sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX - $as_echo "$ac_log" + printf "%s\n" "$ac_log" } >&5 _ACEOF @@ -7645,7 +8620,8 @@ do "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; "shlib/Makefile") CONFIG_FILES="$CONFIG_FILES shlib/Makefile" ;; "readline.pc") CONFIG_FILES="$CONFIG_FILES readline.pc" ;; - "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; + "history.pc") CONFIG_FILES="$CONFIG_FILES history.pc" ;; + "stamp-h") CONFIG_COMMANDS="$CONFIG_COMMANDS stamp-h" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac @@ -7657,9 +8633,9 @@ done # 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 + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers + test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree @@ -7995,7 +8971,7 @@ do esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done @@ -8003,17 +8979,17 @@ do # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | + ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac @@ -8030,7 +9006,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | +printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -8054,9 +9030,9 @@ $as_echo X"$ac_file" | case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -8113,8 +9089,8 @@ ac_sed_dataroot=' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' @@ -8157,9 +9133,9 @@ test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" @@ -8175,36 +9151,33 @@ which seems to be undefined. Please make sure it is defined" >&2;} # if test x"$ac_file" != x-; then { - $as_echo "/* $configure_input */" \ + printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else - $as_echo "/* $configure_input */" \ + printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} + :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +printf "%s\n" "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in - "default":C) -# Makefile uses this timestamp file to record whether config.h is up to date. -echo > stamp-h - ;; + "stamp-h":C) echo > stamp-h ;; esac done # for ac_tag @@ -8239,7 +9212,8 @@ if test "$no_create" != yes; then $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi + diff --git a/configure.ac b/configure.ac index 147bae5..15501fa 100644 --- a/configure.ac +++ b/configure.ac @@ -5,7 +5,7 @@ dnl report bugs to chet@po.cwru.edu dnl dnl Process this file with autoconf to produce a configure script. -# Copyright (C) 1987-2020 Free Software Foundation, Inc. +# Copyright (C) 1987-2022 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 @@ -20,28 +20,30 @@ dnl Process this file with autoconf to produce a configure script. # You should have received a copy of the GNU General Public License # along with this program. If not, see . -AC_REVISION([for Readline 8.1, version 2.90]) +AC_REVISION([for Readline 8.2, version 2.97]) -AC_INIT(readline, 8.1, bug-readline@gnu.org) +AC_INIT(readline, 8.2, bug-readline@gnu.org) dnl make sure we are using a recent autoconf version -AC_PREREQ(2.50) +AC_PREREQ(2.69) 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=8.1 +LIBVERSION=8.2 AC_CANONICAL_HOST AC_CANONICAL_BUILD dnl configure defaults opt_curses=no +opt_shared_termcap_lib=no dnl arguments to configure -AC_ARG_WITH(curses, AC_HELP_STRING([--with-curses], [use the curses library instead of the termcap library]), opt_curses=$withval) +AC_ARG_WITH(curses, AS_HELP_STRING([--with-curses], [use the curses library instead of the termcap library]), opt_curses=$withval) +AC_ARG_WITH(shared-termcap-library, AS_HELP_STRING([--with-shared-termcap-library], [link the readline shared library against the termcap/curses shared library [[default=NO]]]), opt_shared_termcap_lib=$withval) if test "$opt_curses" = "yes"; then prefer_curses=yes @@ -54,12 +56,12 @@ opt_shared_libs=yes opt_install_examples=yes opt_bracketed_paste_default=yes -AC_ARG_ENABLE(multibyte, AC_HELP_STRING([--enable-multibyte], [enable multibyte characters if OS supports them]), opt_multibyte=$enableval) -AC_ARG_ENABLE(shared, AC_HELP_STRING([--enable-shared], [build shared libraries [[default=YES]]]), opt_shared_libs=$enableval) -AC_ARG_ENABLE(static, AC_HELP_STRING([--enable-static], [build static libraries [[default=YES]]]), opt_static_libs=$enableval) -AC_ARG_ENABLE(install-examples, AC_HELP_STRING([--disable-install-examples], [don't install examples [[default=install]]]), opt_install_examples=$enableval) +AC_ARG_ENABLE(multibyte, AS_HELP_STRING([--enable-multibyte], [enable multibyte characters if OS supports them]), opt_multibyte=$enableval) +AC_ARG_ENABLE(shared, AS_HELP_STRING([--enable-shared], [build shared libraries [[default=YES]]]), opt_shared_libs=$enableval) +AC_ARG_ENABLE(static, AS_HELP_STRING([--enable-static], [build static libraries [[default=YES]]]), opt_static_libs=$enableval) +AC_ARG_ENABLE(install-examples, AS_HELP_STRING([--disable-install-examples], [don't install examples [[default=install]]]), opt_install_examples=$enableval) -AC_ARG_ENABLE(bracketed-paste-default, AC_HELP_STRING([--disable-bracketed-paste-default], [disable bracketed paste by default [[default=enable]]]), opt_bracketed_paste_default=$enableval) +AC_ARG_ENABLE(bracketed-paste-default, AS_HELP_STRING([--disable-bracketed-paste-default], [disable bracketed paste by default [[default=enable]]]), opt_bracketed_paste_default=$enableval) if test $opt_multibyte = no; then AC_DEFINE(NO_MULTIBYTE_SUPPORT) @@ -111,13 +113,12 @@ test -z "$CFLAGS" && want_auto_cflags=1 AC_PROG_MAKE_SET AC_PROG_CC -dnl AC_AIX -AC_MINIX +AC_USE_SYSTEM_EXTENSIONS # If we're using gcc and the user hasn't specified CFLAGS, add -O2 to CFLAGS if test -n "$want_auto_cflags" ; then - AUTO_CFLAGS="-g ${GCC+-O2}" - STYLE_CFLAGS="${GCC+-Wno-parentheses} ${GCC+-Wno-format-security}" + AUTO_CFLAGS="-g ${GCC:+-O2}" + STYLE_CFLAGS="${GCC:+-Wno-parentheses} ${GCC:+-Wno-format-security} ${GCC:+-Wno-tautological-constant-out-of-range-compare}" fi AC_PROG_GCC_TRADITIONAL @@ -131,24 +132,25 @@ AC_PROG_RANLIB MAKE_SHELL=/bin/sh AC_SUBST(MAKE_SHELL) +dnl include files for gettext + +m4_include([m4/codeset.m4]) + AC_C_CONST +AC_C_INLINE AC_C_PROTOTYPES AC_C_CHAR_UNSIGNED AC_C_VOLATILE -AC_TYPE_SIGNAL - AC_TYPE_SIZE_T AC_CHECK_TYPE(ssize_t, int) -AC_HEADER_STDC - AC_HEADER_STAT AC_HEADER_DIRENT -AC_CHECK_FUNCS(fcntl kill lstat readlink) -AC_CHECK_FUNCS(fnmatch memmove pselect putenv select setenv setlocale \ - strcasecmp strpbrk tcgetattr vsnprintf) +AC_CHECK_FUNCS(fcntl gettimeofday kill lstat pselect readlink select setitimer) +AC_CHECK_FUNCS(fnmatch memmove putenv setenv setlocale \ + strcasecmp strpbrk sysconf tcgetattr vsnprintf) AC_CHECK_FUNCS(isascii isxdigit) AC_CHECK_FUNCS(getpwent getpwnam getpwuid) @@ -158,7 +160,8 @@ AC_FUNC_STRCOLL AC_CHECK_HEADERS(fcntl.h unistd.h stdlib.h varargs.h stdarg.h stdbool.h \ string.h strings.h \ limits.h locale.h pwd.h memory.h termcap.h termios.h termio.h) -AC_CHECK_HEADERS(sys/ioctl.h sys/pte.h sys/stream.h sys/select.h sys/file.h) +AC_CHECK_HEADERS(sys/ioctl.h sys/pte.h sys/stream.h sys/select.h \ + sys/time.h sys/file.h) AC_CHECK_HEADERS(sys/ptem.h,,, [[ @@ -175,14 +178,12 @@ BASH_SYS_REINSTALL_SIGHANDLERS BASH_FUNC_POSIX_SETJMP BASH_FUNC_LSTAT BASH_FUNC_STRCOLL -BASH_FUNC_CTYPE_NONASCII BASH_CHECK_GETPW_FUNCS AC_HEADER_TIOCGWINSZ BASH_TYPE_SIG_ATOMIC_T -BASH_TYPE_SIGHANDLER BASH_HAVE_TIOCSTAT BASH_HAVE_FIONREAD @@ -190,6 +191,7 @@ BASH_CHECK_SPEED_T BASH_STRUCT_WINSIZE BASH_STRUCT_DIRENT_D_INO BASH_STRUCT_DIRENT_D_FILENO +BASH_STRUCT_TIMEVAL AC_CHECK_HEADERS(libaudit.h) AC_CHECK_DECLS([AUDIT_USER_TTY],,, [[#include ]]) @@ -210,6 +212,10 @@ fi if test "$TERMCAP_LIB" = "-lncurses"; then AC_CHECK_HEADERS(ncurses/termcap.h) fi +case "$opt_shared_termcap_lib" in +[[Yy]][[Ee]][[Ss]]) SHARED_TERMCAP="$TERMCAP_LIB" ;; +-l*) SHARED_TERMCAP="$opt_shared_termcap_lib" ;; +esac case "$TERMCAP_LIB" in -ltinfo) TERMCAP_PKG_CONFIG_LIB=tinfo ;; @@ -240,10 +246,12 @@ if test -f ${srcdir}/support/shobj-conf; then AC_MSG_CHECKING(configuration for building shared libraries) eval `TERMCAP_LIB=$TERMCAP_LIB ${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c ${host_cpu} -o ${host_os} -v ${host_vendor}` -# case "$SHLIB_LIBS" in -# *curses*|*termcap*|*termlib*) ;; -# *) SHLIB_LIBS="$SHLIB_LIBS $TERMCAP_LIB" ;; -# esac + # SHARED_TERMCAP is set only if opt_shared_termcap_library is set + case "$SHLIB_LIBS" in + *curses*|*tinfo*) ;; + *termcap*|*termlib*) ;; # common aliases + *) SHLIB_LIBS="$SHLIB_LIBS $SHARED_TERMCAP" ;; + esac AC_SUBST(SHOBJ_CC) AC_SUBST(SHOBJ_CFLAGS) @@ -307,6 +315,7 @@ esac AC_SUBST(BUILD_DIR) +# CFLAGS=${CFLAGS-"$AUTO_CFLAGS"} if test -n "$want_auto_cflags"; then CFLAGS="$AUTO_CFLAGS" fi @@ -328,8 +337,9 @@ AC_SUBST(LIBVERSION) AC_SUBST(TERMCAP_LIB) AC_SUBST(TERMCAP_PKG_CONFIG_LIB) -AC_OUTPUT([Makefile doc/Makefile examples/Makefile shlib/Makefile readline.pc], -[ -# Makefile uses this timestamp file to record whether config.h is up to date. -echo > stamp-h -]) +AC_CONFIG_FILES([Makefile doc/Makefile examples/Makefile shlib/Makefile readline.pc history.pc]) + +dnl Makefile uses this timestamp file to record whether config.h is up to date. +AC_CONFIG_COMMANDS([stamp-h], [echo > stamp-h]) + +AC_OUTPUT diff --git a/display.c b/display.c index f5d3294..c1135ec 100644 --- a/display.c +++ b/display.c @@ -1,6 +1,6 @@ /* display.c -- readline redisplay facility. */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2022 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -63,23 +63,23 @@ extern char *strchr (), *strrchr (); #endif /* !strchr && !__STDC__ */ -static void putc_face PARAMS((int, int, char *)); -static void puts_face PARAMS((const char *, const char *, int)); -static void norm_face PARAMS((char *, int)); +static void putc_face (int, int, char *); +static void puts_face (const char *, const char *, int); +static void norm_face (char *, int); -static void update_line PARAMS((char *, char *, 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, int)); -static void open_some_spaces PARAMS((int)); -static void cr PARAMS((void)); -static void redraw_prompt PARAMS((char *)); -static void _rl_move_cursor_relative PARAMS((int, const char *, const char *)); +static void update_line (char *, char *, char *, char *, int, int, int, int); +static void space_to_eol (int); +static void delete_chars (int); +static void insert_some_chars (char *, int, int); +static void open_some_spaces (int); +static void cr (void); +static void redraw_prompt (char *); +static void _rl_move_cursor_relative (int, const char *, const char *); /* Values for FLAGS */ #define PMT_MULTILINE 0x01 -static char *expand_prompt PARAMS((char *, int, int *, int *, int *, int *)); +static char *expand_prompt (char *, int, int *, int *, int *, int *); #define DEFAULT_LINE_BUFFER_SIZE 1024 @@ -115,7 +115,7 @@ static int line_structures_initialized = 0; #define inv_face (line_state_invisible->lface) #if defined (HANDLE_MULTIBYTE) -static int _rl_col_width PARAMS((const char *, int, int, int)); +static int _rl_col_width (const char *, int, int, int); #else # define _rl_col_width(l, s, e, f) (((e) <= (s)) ? 0 : (e) - (s)) #endif @@ -356,7 +356,7 @@ expand_prompt (char *pmt, int flags, int *lp, int *lip, int *niflp, int *vlp) { char *r, *ret, *p, *igstart, *nprompt, *ms; int l, rl, last, ignoring, ninvis, invfl, invflset, ind, pind, physchars; - int mlen, newlines, newlines_guess, bound; + int mlen, newlines, newlines_guess, bound, can_add_invis; int mb_cur_max; /* We only expand the mode string for the last line of a multiline prompt @@ -372,6 +372,7 @@ expand_prompt (char *pmt, int flags, int *lp, int *lip, int *niflp, int *vlp) else nprompt = pmt; + can_add_invis = 0; mb_cur_max = MB_CUR_MAX; if (_rl_screenwidth == 0) @@ -434,6 +435,19 @@ expand_prompt (char *pmt, int flags, int *lp, int *lip, int *niflp, int *vlp) else if (ignoring && *p == RL_PROMPT_END_IGNORE) { ignoring = 0; + /* If we have a run of invisible characters, adjust local_prompt_newlines + to add them, since update_line expects them to be counted before + wrapping the line. */ + if (can_add_invis) + { + local_prompt_newlines[newlines] = r - ret; + /* If we're adding to the number of invisible characters on the + first line of the prompt, but we've already set the number of + invisible characters on that line, we need to adjust the + counter. */ + if (invflset && newlines == 1) + invfl = ninvis; + } if (p != (igstart + 1)) last = r - ret - 1; continue; @@ -498,10 +512,17 @@ expand_prompt (char *pmt, int flags, int *lp, int *lip, int *niflp, int *vlp) new = r - ret; local_prompt_newlines[++newlines] = new; } + + /* What if a physical character of width >= 2 is split? There is + code that wraps before the physical screen width if the character + width would exceed it, but it needs to be checked against this + code and local_prompt_newlines[]. */ + if (ignoring == 0) + can_add_invis = (physchars == bound); } } - if (rl < _rl_screenwidth) + if (rl <= _rl_screenwidth) invfl = ninvis; *r = '\0'; @@ -515,7 +536,7 @@ expand_prompt (char *pmt, int flags, int *lp, int *lip, int *niflp, int *vlp) *vlp = physchars; if (nprompt != pmt) - free (nprompt); + xfree (nprompt); return ret; } @@ -749,7 +770,7 @@ rl_redisplay (void) int hl_begin, hl_end; int mb_cur_max = MB_CUR_MAX; #if defined (HANDLE_MULTIBYTE) - wchar_t wc; + WCHAR_T wc; size_t wc_bytes; int wc_width; mbstate_t ps; @@ -983,11 +1004,11 @@ rl_redisplay (void) memset (&ps, 0, sizeof (mbstate_t)); if (_rl_utf8locale && UTF8_SINGLEBYTE(rl_line_buffer[0])) { - wc = (wchar_t)rl_line_buffer[0]; + wc = (WCHAR_T)rl_line_buffer[0]; wc_bytes = 1; } else - wc_bytes = mbrtowc (&wc, rl_line_buffer, rl_end, &ps); + wc_bytes = MBRTOWC (&wc, rl_line_buffer, rl_end, &ps); } else wc_bytes = 1; @@ -1158,12 +1179,12 @@ rl_redisplay (void) in += wc_bytes; if (_rl_utf8locale && UTF8_SINGLEBYTE(rl_line_buffer[in])) { - wc = (wchar_t)rl_line_buffer[in]; + wc = (WCHAR_T)rl_line_buffer[in]; wc_bytes = 1; memset (&ps, 0, sizeof (mbstate_t)); /* re-init state */ } else - wc_bytes = mbrtowc (&wc, rl_line_buffer + in, rl_end - in, &ps); + wc_bytes = MBRTOWC (&wc, rl_line_buffer + in, rl_end - in, &ps); } else in++; @@ -1582,9 +1603,9 @@ putc_face (int c, int face, char *cur_face) if (face != FACE_NORMAL && face != FACE_STANDOUT) return; if (face == FACE_STANDOUT && cf == FACE_NORMAL) - _rl_standout_on (); + _rl_region_color_on (); if (face == FACE_NORMAL && cf == FACE_STANDOUT) - _rl_standout_off (); + _rl_region_color_off (); *cur_face = face; } if (c != EOF) @@ -1662,7 +1683,7 @@ update_line (char *old, char *old_face, char *new, char *new_face, int current_l #if defined (HANDLE_MULTIBYTE) if (mb_cur_max > 1 && rl_byte_oriented == 0) { - wchar_t wc; + WCHAR_T wc; mbstate_t ps; int oldwidth, newwidth; int oldbytes, newbytes; @@ -1681,7 +1702,7 @@ update_line (char *old, char *old_face, char *new, char *new_face, int current_l /* 1. how many screen positions does first char in old consume? */ memset (&ps, 0, sizeof (mbstate_t)); - ret = mbrtowc (&wc, old, mb_cur_max, &ps); + ret = MBRTOWC (&wc, old, mb_cur_max, &ps); oldbytes = ret; if (MB_INVALIDCH (ret)) { @@ -1697,7 +1718,7 @@ update_line (char *old, char *old_face, char *new, char *new_face, int current_l /* 2. how many screen positions does the first char in new consume? */ memset (&ps, 0, sizeof (mbstate_t)); - ret = mbrtowc (&wc, new, mb_cur_max, &ps); + ret = MBRTOWC (&wc, new, mb_cur_max, &ps); newbytes = ret; if (MB_INVALIDCH (ret)) { @@ -1718,7 +1739,7 @@ update_line (char *old, char *old_face, char *new, char *new_face, int current_l { int t; - ret = mbrtowc (&wc, new+newbytes, mb_cur_max, &ps); + ret = MBRTOWC (&wc, new+newbytes, mb_cur_max, &ps); if (MB_INVALIDCH (ret)) { newwidth += 1; @@ -1740,7 +1761,7 @@ update_line (char *old, char *old_face, char *new, char *new_face, int current_l { int t; - ret = mbrtowc (&wc, old+oldbytes, mb_cur_max, &ps); + ret = MBRTOWC (&wc, old+oldbytes, mb_cur_max, &ps); if (MB_INVALIDCH (ret)) { oldwidth += 1; @@ -1952,14 +1973,14 @@ update_line (char *old, char *old_face, char *new, char *new_face, int current_l #if defined (HANDLE_MULTIBYTE) if (mb_cur_max > 1 && rl_byte_oriented == 0 && _rl_utf8locale) { - wchar_t wc; + WCHAR_T wc; mbstate_t ps = { 0 }; int t; /* If the first character in the difference is a zero-width character, assume it's a combining character and back one up so the two base characters no longer compare equivalently. */ - t = mbrtowc (&wc, ofd, mb_cur_max, &ps); + t = MBRTOWC (&wc, ofd, mb_cur_max, &ps); if (t > 0 && UNICODE_COMBINING_CHAR (wc) && WCWIDTH (wc) == 0) { old_offset = _rl_find_prev_mbchar (old, ofd - old, MB_FIND_ANY); @@ -2421,9 +2442,24 @@ dumb_update: ((nfd-new) < (prompt_last_invisible-(current_line*_rl_screenwidth+prompt_invis_chars_first_line)))) ADJUST_CPOS (wrap_offset - prompt_invis_chars_first_line); - /* XXX - what happens if wrap_offset == prompt_invis_chars_first_line - and we are drawing the first line (current_line == 0)? We should - adjust by _rl_last_c_pos -= prompt_invis_chars_first_line */ + /* What happens if wrap_offset == prompt_invis_chars_first_line + and we are drawing the first line (current_line == 0), or if we + are drawing the first line and changing the number of invisible + characters in the line? If we're starting to draw before the last + invisible character in the prompt, we need to adjust by + _rl_last_c_pos -= prompt_invis_chars_first_line. This can happen + when we finish reading a digit argument (with the "(arg: N)" + prompt) and are switching back to displaying a line with a prompt + containing invisible characters, since we have to redraw the + entire prompt string. */ + if ((mb_cur_max > 1 && rl_byte_oriented == 0) && + current_line == 0 && wrap_offset && + displaying_prompt_first_line && + wrap_offset == prompt_invis_chars_first_line && + visible_wrap_offset != current_invis_chars && + visible_wrap_offset != prompt_invis_chars_first_line && + ((nfd-new) < prompt_last_invisible)) + ADJUST_CPOS (prompt_invis_chars_first_line); } } else /* Delete characters from line. */ @@ -2573,7 +2609,8 @@ rl_clear_visible_line (void) for (curr_line = _rl_last_v_pos; curr_line >= 0; curr_line--) { _rl_move_vert (curr_line); - _rl_clear_to_eol (0); + _rl_clear_to_eol (_rl_screenwidth); + _rl_cr (); /* in case we use space_to_eol() */ } return 0; @@ -3357,27 +3394,16 @@ _rl_redisplay_after_sigwinch (void) screen line. */ if (_rl_term_cr) { - _rl_move_vert (_rl_vis_botlin); - - _rl_cr (); - _rl_last_c_pos = 0; - -#if !defined (__MSDOS__) - if (_rl_term_clreol) - tputs (_rl_term_clreol, 1, _rl_output_character_function); - else -#endif - { - space_to_eol (_rl_screenwidth); - _rl_cr (); - } - + rl_clear_visible_line (); if (_rl_last_v_pos > 0) _rl_move_vert (0); } else rl_crlf (); + if (_rl_screenwidth < prompt_visible_length) + _rl_reset_prompt (); /* update local_prompt_newlines array */ + /* Redraw only the last line of a multi-line prompt. */ t = strrchr (rl_display_prompt, '\n'); if (t) @@ -3451,7 +3477,7 @@ _rl_refresh_line (void) static int _rl_col_width (const char *str, int start, int end, int flags) { - wchar_t wc; + WCHAR_T wc; mbstate_t ps; int tmp, point, width, max; @@ -3520,10 +3546,10 @@ _rl_col_width (const char *str, int start, int end, int flags) if (_rl_utf8locale && UTF8_SINGLEBYTE(str[point])) { tmp = 1; - wc = (wchar_t) str[point]; + wc = (WCHAR_T) str[point]; } else - tmp = mbrtowc (&wc, str + point, max, &ps); + tmp = MBRTOWC (&wc, str + point, max, &ps); if (MB_INVALIDCH ((size_t)tmp)) { /* In this case, the bytes are invalid or too short to compose a diff --git a/doc/Makefile.in b/doc/Makefile.in index a38bc9e..20a3618 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -154,15 +154,16 @@ history.ps: history.dvi # This leaves readline.html and rlman.html -- rlman.html is for www.gnu.org # readline.html: ${RLSRC} - $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/rlman.texi - sed -e 's:rlman.html:readline.html:g' rlman.html > readline.html - $(RM) rlman.html + $(MAKEINFO) -o $@ --html --no-split -I$(TEXINPUTDIR) $(srcdir)/rlman.texi + +rlman.html: ${RLSRC} + $(MAKEINFO) -o $@ --html --no-split -I$(TEXINPUTDIR) $(srcdir)/rlman.texi rluserman.html: ${RLSRC} - $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/rluserman.texi + $(MAKEINFO) --html --no-split -I$(TEXINPUTDIR) $(srcdir)/rluserman.texi history.html: ${HISTSRC} - $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/history.texi + $(MAKEINFO) --html --no-split -I$(TEXINPUTDIR) $(srcdir)/history.texi readline.0: readline.3 diff --git a/doc/history.0 b/doc/history.0 index 3c1a794..2bf3b1a 100644 --- a/doc/history.0 +++ b/doc/history.0 @@ -144,7 +144,7 @@ HISTORY(3) Library Functions Manual HISTORY(3) commands. The basic history manipulation commands are identical to the history substitution provided by bash. - The programmer can also use the Readline library, which includes some + The programmer can also use the readline library, which includes some history manipulation by default, and has the added advantage of command line editing. diff --git a/doc/history.3 b/doc/history.3 index df6cd37..06419cf 100644 --- a/doc/history.3 +++ b/doc/history.3 @@ -291,7 +291,7 @@ in new commands. The basic history manipulation commands are identical to the history substitution provided by \fBbash\fP. .PP -The programmer can also use the Readline library, which +The programmer can also use the readline library, which includes some history manipulation by default, and has the added advantage of command line editing. .PP diff --git a/doc/history.dvi b/doc/history.dvi index 9734c24..bf33fe4 100644 Binary files a/doc/history.dvi and b/doc/history.dvi differ diff --git a/doc/history.html b/doc/history.html index 3110cf3..3c258f4 100644 --- a/doc/history.html +++ b/doc/history.html @@ -1,124 +1,172 @@ - - - - + + + +GNU History Library + + + + + + + + + + + + + - - - - - - + - + +

GNU History Library

- - - - - - -
[Top][Contents][Index][ ? ]
-

GNU History Library

-This document describes the GNU History library, a programming tool that + + + + + + + +

+ +

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  GNU History User's Manual.
2. Programming with GNU History  GNU History Programmer's Manual.
A. GNU Free Documentation License  License for copying this manual.
B. Concept Index  Index of concepts described in this manual.
C. Function and Variable Index  Index of externally visible functions - and variables.
-

- -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
- -

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  What it feels like using History as a user.
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.1 History Expansion

- -

- -The History library provides a history expansion feature that is similar -to the history expansion provided by csh. This section +

+ + + + +
+
+ +

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 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 +

+

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 +

History expansion takes place in two parts. The first is to determine which line from the history list should be used during substitution. The second is to select portions of that line for inclusion into the current one. The line selected from the history is called the -event, and the portions of that line that are acted upon are -called words. Various modifiers are available to manipulate +event, and the portions of that line that are acted upon are +called words. Various modifiers are available to manipulate the selected words. The line is broken into words in the same fashion that Bash does, so that several words surrounded by quotes are considered one word. History expansions are introduced by the appearance of the -history expansion character, which is `!' by default. -

- -History expansion implements shell-like quoting conventions: +history expansion character, which is ‘!’ by default. +

+

History expansion implements shell-like quoting conventions: a backslash can be used to remove the special handling for the next character; single quotes enclose verbatim sequences of characters, and can be used to inhibit history expansion; @@ -126,396 +174,326 @@ and characters enclosed within double quotes may be subject to history expansion, since backslash can escape the history expansion character, but single quotes may not, since they are not treated specially within double quotes. -

- -

- - - -
1.1.1 Event Designators  How to specify which history line to use.
1.1.2 Word Designators  Specifying which words are of interest.
1.1.3 Modifiers  Modifying the results of substitution.
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.1.1 Event Designators

- -

- -An event designator is a reference to a command line entry in the -history list. -Unless the reference is absolute, events are relative to the current -position in the history list. - -

- -

+

-
! -
Start a history substitution, except when followed by a space, tab, -the end of the line, or `='. -

-

!n -
Refer to command line n. -

-

!-n -
Refer to the command n lines back. -

+

+
+
+ +

1.1.1 Event Designators

+ -
!! -
Refer to the previous command. This is a synonym for `!-1'. -

- -

!string -
Refer to the most recent command +

An event designator is a reference to a command line entry in the +history list. +Unless the reference is absolute, events are relative to the current +position in the history list. + +

+
+
!
+

Start a history substitution, except when followed by a space, tab, +the end of the line, or ‘=’. +

+
+
!n
+

Refer to command line n. +

+
+
!-n
+

Refer to the command n lines back. +

+
+
!!
+

Refer to the previous command. This is a synonym for ‘!-1’. +

+
+
!string
+

Refer to the most recent command preceding the current position in the history list -starting with string. -

- -

!?string[?] -
Refer to the most recent command +starting with string. +

+
+
!?string[?]
+

Refer to the most recent command preceding the current position in the history list -containing string. +containing string. The trailing -`?' may be omitted if the string is followed immediately by +‘?’ may be omitted if the string is followed immediately by a newline. -If string is missing, the string from the most recent search is used; +If string is missing, the string from the most recent search is used; it is an error if there is no previous search string. -

- -

^string1^string2^ -
Quick Substitution. Repeat the last command, replacing string1 -with string2. Equivalent to -!!:s^string1^string2^. -

- -

!# -
The entire command line typed so far. -

- -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.1.2 Word Designators

- -

- -Word designators are used to select desired words from the event. -A `:' separates the event specification from the word designator. It -may be omitted if the word designator begins with a `^', `$', -`*', `-', or `%'. Words are numbered from the beginning +

+
+
^string1^string2^
+

Quick Substitution. Repeat the last command, replacing string1 +with string2. Equivalent to +!!:s^string1^string2^. +

+
+
!#
+

The entire command line typed so far. +

+
+
+ +
+
+
+
+

+Next: , Previous: , Up: History Expansion   [Contents][Index]

+
+

1.1.2 Word Designators

+ +

Word designators are used to select desired words from the event. +A ‘:’ separates the event specification from the word designator. It +may be omitted if the word designator begins with a ‘^’, ‘$’, +‘*’, ‘-’, or ‘%’. Words are numbered from the beginning of the line, with the first word being denoted by 0 (zero). Words are inserted into the current line separated by single spaces. -

- -For example, -

- -

-
!! -
designates the preceding command. When you type this, the preceding +

+

For example, +

+
+
!!
+

designates the preceding command. When you type this, the preceding command is repeated in toto. -

- -

!!:$ -
designates the last argument of the preceding command. This may be -shortened to !$. -

- -

!fi:2 -
designates the second argument of the most recent command starting with -the letters fi. -
-

- -Here are the word designators: - -

- -
0 (zero) -
The 0th word. For many applications, this is the command word. -

- -

n -
The nth word. -

- -

^ -
The first argument; that is, word 1. -

- -

$ -
The last argument. -

- -

% -
The first word matched by the most recent `?string?' search, +

+
+
!!:$
+

designates the last argument of the preceding command. This may be +shortened to !$. +

+
+
!fi:2
+

designates the second argument of the most recent command starting with +the letters fi. +

+
+ +

Here are the word designators: +

+
+
0 (zero)
+

The 0th word. For many applications, this is the command word. +

+
+
n
+

The nth word. +

+
+
^
+

The first argument; that is, word 1. +

+
+
$
+

The last argument. +

+
+
%
+

The first word matched by the most recent ‘?string?’ search, if the search string begins with a character that is part of a word. -

- -

x-y -
A range of words; `-y' abbreviates `0-y'. -

- -

* -
All of the words, except the 0th. This is a synonym for `1-$'. -It is not an error to use `*' if there is just one word in the event; +

+
+
x-y
+

A range of words; ‘-y’ abbreviates ‘0-y’. +

+
+
*
+

All of the words, except the 0th. 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 `x' is missing, it defaults to 0. -

- -

-

- -If a word designator is supplied without an event specification, the +

+
+
x*
+

Abbreviates ‘x-$’ +

+
+
x-
+

Abbreviates ‘x-$’ like ‘x*’, but omits the last word. +If ‘x’ is missing, it defaults to 0. +

+
+
+ +

If a word designator is supplied without an event specification, the previous command is used as the event. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

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 `:'. +

+
+
+
+ +

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 ‘:’. These modify, or edit, the word or words selected from the history event. -

- -

- -
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 +

+
+
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 +

+
+
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 character may be used as the delimiter in place of `/'. -The delimiter may be quoted in old and new -with a single backslash. If `&' appears in new, -it is replaced by old. A single backslash will quote -the `&'. -If old is null, it is set to the last old +Any character may be used as the delimiter in place of ‘/’. +The delimiter may be quoted in old and new +with a single backslash. If ‘&’ appears in new, +it is replaced by old. A single backslash will quote +the ‘&’. +If old is null, it is set to the last old substituted, or, if no previous history substitutions took place, -the last string -in a !?string[?] +the last string +in a !?string[?] search. -If new is is null, each matching old is deleted. +If new is null, each matching old is deleted. The final delimiter is optional if it is the last character on the input line. -

- -

& -
Repeat the previous substitution. -

- -

g -
a -
Cause changes to be applied over the entire event line. Used in -conjunction with `s', as in gs/old/new/, -or with `&'. -

- -

G -
Apply the following `s' or `&' modifier once to each word +

+
+
&
+

Repeat the previous substitution. +

+
+
g
+
a
+

Cause changes to be applied over the entire event line. Used in +conjunction with ‘s’, as in gs/old/new/, +or with ‘&’. +

+
+
G
+

Apply the following ‘s’ or ‘&’ modifier once to each word in the event. -

- -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2. Programming with GNU History

- -

- -This chapter describes how to interface programs that you write -with the GNU History Library. +

+
+
+ +
+
+
+
+
+ +

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  What is the GNU History library for?
2.2 History Storage  How information is stored.
2.3 History Functions  Functions that you can use.
2.4 History Variables  Variables that control behaviour.
2.5 History Programming Example  Example of using the GNU History Library.
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.1 Introduction to History

- -

- -Many programs read input from the user a line at a time. The GNU +For information on the interactive use of GNU History, see 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. -

- -A programmer using the History library has available functions +

+

A programmer using the History library has available functions for remembering lines on a history list, associating arbitrary data with a line, removing lines from the list, searching through the list for a line containing an arbitrary text string, and referencing any line -in the list directly. In addition, a history expansion function +in the list directly. In addition, a history expansion function is available which provides for a consistent user interface across different programs. -

- -The user using programs written with the History library has the +

+

The user using programs written with the History library has the benefit of a consistent user interface with a set of well-known commands for manipulating the text of previous lines and using that text in new commands. The basic history manipulation commands are similar to -the history substitution provided by csh. -

- -The programmer can also use the Readline library, which +the history substitution provided by csh. +

+

The programmer can also 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 +

+

Before declaring any functions using any functionality the History library provides in other code, an application writer should include -the file <readline/history.h> in any file that uses the -History library's features. It supplies extern declarations for all -of the library's public functions and variables, and declares all of +the file <readline/history.h> in any file that uses the +History library’s features. It supplies extern declarations for all +of the library’s public functions and variables, and declares all of the public data structures. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.2 History Storage

- -

- -The history list is an array of history entries. A history entry is +

+
+
+
+ +

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 void *histdata_t;
 
 typedef struct _hist_entry {
   char *line;
   char *timestamp;
   histdata_t data;
 } HIST_ENTRY;
-

- -The history list itself might therefore be declared as -

- -
 
HIST_ENTRY **the_history_list;
-

- -The state of the History library is encapsulated into a single structure: -

- -
 
/*
+
+ +

The history list itself might therefore be declared as +

+
+
HIST_ENTRY **the_history_list;
+
+ +

The state of the History library is encapsulated into a single structure: +

+
+
/*
  * A structure used to pass around the current state of the history.
  */
 typedef struct _hist_state {
@@ -525,714 +503,516 @@ typedef struct _hist_state {
   int size;             /* Number of slots allocated to this array. */
   int flags;
 } HISTORY_STATE;
-

+

-If the flags member includes HS_STIFLED, the history has been +

If the flags member includes HS_STIFLED, the history has been stifled. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

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  Functions to call when you - want to use history in a - program.
2.3.2 History List Management  Functions used to manage the list - of history entries.
2.3.3 Information About the History List  Functions returning information about - the history list.
2.3.4 Moving Around the History List  Functions used to change the position - in the history list.
2.3.5 Searching the History List  Functions to search the history list - for entries containing a string.
2.3.6 Managing the History File  Functions that read and write a file - containing the history list.
2.3.7 History Expansion  Functions to perform csh-like history - expansion.
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.3.1 Initializing History and State Management

- -

- -This section describes functions used to initialize and manage +

+
+
+
+ +

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 +

+
+
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. -
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.3.2 History List Management

- -

- -These functions manage individual entries on the history list, or set +

+ +
+
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: 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. If the maximum number of history entries has been set using -stifle_history(), and the new number of history entries would exceed +stifle_history(), and the new number of history entries would exceed that maximum, the oldest history entry is removed. -

-

- - -

-
Function: void add_history_time (const char *string) -
Change the time stamp associated with the most recent history entry to -string. -
-

- - -

-
Function: HIST_ENTRY * remove_history (int which) -
Remove history entry at offset which from the history. The +

+ +
+
Function: void add_history_time (const char *string)
+

Change the time stamp associated with the most recent history entry to +string. +

+ +
+
Function: HIST_ENTRY * remove_history (int which)
+

Remove history entry at offset which from the history. The removed element is returned so you can free the line, data, and containing structure. -

-

+

- -
-
Function: histdata_t free_history_entry (HIST_ENTRY *histent) -
Free the history entry histent and any history library private +
+
Function: histdata_t free_history_entry (HIST_ENTRY *histent)
+

Free the history entry histent and any history library private data associated with it. Returns the application-specific data so the caller can dispose of it. -

-

+

- -
-
Function: HIST_ENTRY * replace_history_entry (int which, const char *line, histdata_t data) -
Make the history entry at offset which have line and data. +
+
Function: HIST_ENTRY * replace_history_entry (int which, const char *line, histdata_t data)
+

Make the history entry at offset which have line and data. This returns the old entry so the caller can dispose of any application-specific data. In the case -of an invalid which, a NULL pointer is returned. -

-

- - -

-
Function: void clear_history (void) -
Clear the history list by deleting all the entries. -
-

- - -

-
Function: void stifle_history (int max) -
Stifle the history list, remembering only the last max entries. -The history list will contain only max entries at a time. -
-

- - -

-
Function: int unstifle_history (void) -
Stop stifling the history. This returns the previously-set -maximum number of history entries (as set by stifle_history()). +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. +The history list will contain only max entries at a time. +

+ +
+
Function: int unstifle_history (void)
+

Stop stifling the history. This returns the previously-set +maximum number of history entries (as set by stifle_history()). The value is positive if the history was -stifled, negative if it wasn't. -

-

- - -

-
Function: int history_is_stifled (void) -
Returns non-zero if the history is stifled, zero if it is not. -
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.3.3 Information About the History List

- -

- -These functions return information about the entire history list or +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 +

+
+
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 +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. +
+
Function: HIST_ENTRY * history_get (int offset)
+

Return the history entry at position offset. The range of valid -values of offset starts at history_base and ends at -history_length - 1 (see section 2.4 History Variables). -If there is no entry there, or if offset is outside the valid -range, return a NULL pointer. -

-

- - -

-
Function: time_t history_get_time (HIST_ENTRY *entry) -
Return the time stamp associated with the history entry entry. +values of offset starts at history_base and ends at +history_length - 1 (see History Variables). +If there is no entry there, or if offset is outside the valid +range, return a NULL pointer. +

+ +
+
Function: time_t history_get_time (HIST_ENTRY *entry)
+

Return the time stamp associated with the history entry entry. If the timestamp is missing or invalid, return 0. -

-

+

- -
-
Function: int history_total_bytes (void) -
Return the number of bytes that the primary history entries are using. +
+
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. -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.3.4 Moving Around the History List

- -

- -These functions allow the current index into the history list to be +

+ +
+
+
+ +

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 +

+
+
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 +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 +
+
Function: HIST_ENTRY * previous_history (void)
+

Back up the current history offset to the previous history entry, and return a pointer to that entry. If there is no previous entry, return -a NULL pointer. -

-

- - -

-
Function: HIST_ENTRY * next_history (void) -
If the current history offset refers to a valid history entry, +a NULL pointer. +

+ +
+
Function: HIST_ENTRY * next_history (void)
+

If the current history offset refers to a valid history entry, increment the current history offset. If the possibly-incremented history offset refers to a valid history entry, return a pointer to that entry; -otherwise, return a BNULL pointer. -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.3.5 Searching the History List

- -

- -These functions allow searching of the history list for entries containing +otherwise, return a BNULL 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, +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 + +

+
+
Function: int history_search (const char *string, int direction)
+

Search the history for string, starting at the current history offset. +If direction is less than 0, then the search is through previous entries, otherwise through subsequent entries. -If string is found, then +If string is found, then the current history index is set to that history entry, and the value returned is the offset in the line of the entry where -string was found. Otherwise, nothing is changed, and a -1 is +string was found. Otherwise, nothing is changed, and a -1 is returned. -

-

+

- -
-
Function: int history_search_prefix (const char *string, int direction) -
Search the history for string, starting at the current history +
+
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 +string. If direction is less than 0, then the search is through previous entries, otherwise through subsequent entries. -If string is found, then the +If string is found, then the current history index is set to that entry, and the return value is 0. Otherwise, nothing is changed, and a -1 is returned. -

-

- - -

-
Function: int history_search_pos (const char *string, int direction, int pos) -
Search for string in the history list, starting at pos, an -absolute index into the list. If direction is negative, the search -proceeds backward from pos, otherwise forward. Returns the absolute -index of the history element where string was found, or -1 otherwise. -
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.3.6 Managing the History File

- -

- -The History library can read the history from and write it to a file. +

+ +
+
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 -from, then read until the end of the file. If filename is -NULL, then read from `~/.history'. Returns 0 if successful, -or errno if not. -
-

- - -

-
Function: int write_history (const char *filename) -
Write the current history to filename, overwriting filename +

+
+
Function: int read_history (const char *filename)
+

Add the contents of filename to the history list, a line at a time. +If filename is NULL, then read from ~/.history. +Returns 0 if successful, or errno if not. +

+ +
+
Function: int read_history_range (const char *filename, int from, int to)
+

Read a range of lines from filename, adding them to the history list. +Start reading at line from and end at to. +If from is zero, start at the beginning. If to is less than +from, then read until the end of the file. If filename is +NULL, then read from ~/.history. Returns 0 if successful, +or errno if not. +

+ +
+
Function: int write_history (const char *filename)
+

Write the current history to filename, overwriting filename if necessary. -If filename is NULL, then write the history list to -`~/.history'. -Returns 0 on success, or errno on a read or write error. -

-

- - -

-
Function: int append_history (int nelements, const char *filename) -
Append the last nelements of the history list to filename. -If filename is NULL, then append to `~/.history'. -Returns 0 on success, or errno on a read or write error. -
-

- - -

-
Function: int history_truncate_file (const char *filename, int nlines) -
Truncate the history file filename, leaving only the last -nlines lines. -If filename is NULL, then `~/.history' is truncated. -Returns 0 on success, or errno on failure. -
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

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 +If filename is NULL, then write the history list to +~/.history. +Returns 0 on success, or errno on a read or write error. +

+ +
+
Function: int append_history (int nelements, const char *filename)
+

Append the last nelements of the history list to filename. +If filename is NULL, then append to ~/.history. +Returns 0 on success, or errno on a read or write error. +

+ +
+
Function: int history_truncate_file (const char *filename, int nlines)
+

Truncate the history file filename, leaving only the last +nlines lines. +If filename is NULL, then ~/.history is truncated. +Returns 0 on success, or errno on failure. +

+ +
+
+
+ +

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 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 occurred in expansion, then output contains a descriptive +

+
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 Modifiers). +

+
+ +

If an error occurred in expansion, then output contains a descriptive error message. - -

- - -

-
Function: char * get_history_event (const char *string, int *cindex, int qchar) -
Returns the text of the history event beginning at string + -*cindex. *cindex is modified to point to after the event -specifier. At function entry, cindex points to the index into -string where the history event specification begins. qchar +

+ +
+
Function: char * get_history_event (const char *string, int *cindex, int qchar)
+

Returns the text of the history event beginning at string + +*cindex. *cindex is modified to point to after the event +specifier. At function entry, cindex points to the index into +string where the history event specification begins. qchar is a character that is allowed to end the event specification in addition -to the "normal" terminating characters. -

-

- - -

-
Function: char ** history_tokenize (const char *string) -
Return an array of tokens parsed out of string, much as the +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, +history_word_delimiters variable, and shell quoting conventions are obeyed as described below. -

-

- - -

-
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. -
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.4 History Variables

- -

- -This section describes the externally-visible variables exported by -the GNU History Library. -

- - -

-
Variable: int history_base -
The logical offset of the first entry in the history list. -
-

- - -

-
Variable: int history_length -
The number of entries currently stored in the history list. -
-

- - -

-
Variable: int history_max_entries -
The maximum number of history entries. This must be changed using -stifle_history(). -
-

- - -

-
Variable: int history_write_timestamps -
If non-zero, timestamps are written to the history file, so they can be +

+ +
+
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: int history_write_timestamps
+

If non-zero, timestamps are written to the history file, so they can be preserved between sessions. The default value is 0, meaning that timestamps are not saved. -

- -The current timestamp format uses the value of history_comment_char +

+

The current timestamp format uses the value of history_comment_char to delimit timestamp entries in the history file. If that variable does not have a value (the default), timestamps will not be written. -

-

+

- -
-
Variable: char history_expansion_char -
The character that introduces a history event. The default is `!'. +
+
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 +

+ +
+
Variable: char history_subst_char
+

The character that invokes word substitution if found at the start of +a line. The default is ‘^’. +

+ +
+
Variable: char history_comment_char
+

During tokenization, if this character is seen as the first character of a word, then it and all subsequent characters up to a newline are ignored, suppressing history expansion for the remainder of the line. This is disabled by default. -

-

- - -

-
Variable: char * history_word_delimiters -
The characters that separate tokens for history_tokenize(). -The default value is " \t\n()<>;&|". -
-

- - -

-
Variable: char * history_search_delimiter_chars -
The list of additional characters which can delimit a history search -string, in addition to space, TAB, `:' and `?' in the case of +

+ +
+
Variable: char * history_word_delimiters
+

The characters that separate tokens for history_tokenize(). +The default value is " \t\n()<>;&|". +

+ +
+
Variable: char * history_search_delimiter_chars
+

The list of additional characters which can delimit a history search +string, in addition to space, TAB, ‘:’ and ‘?’ in the case of a substring search. The default is empty. -

-

- - -

-
Variable: char * history_no_expand_chars -
The list of characters which inhibit history expansion if found immediately -following history_expansion_char. The default is space, tab, newline, -carriage return, and `='. -
-

- - -

-
Variable: int history_quotes_inhibit_expansion -
If non-zero, the history expansion code implements shell-like quoting: +

+ +
+
Variable: char * history_no_expand_chars
+

The list of characters which inhibit history expansion if found immediately +following history_expansion_char. The default is space, tab, newline, +carriage return, and ‘=’. +

+ +
+
Variable: int history_quotes_inhibit_expansion
+

If non-zero, the history expansion code implements shell-like quoting: single-quoted words are not scanned for the history expansion character or the history comment character, and double-quoted words may have history expansion performed, since single quotes are not special within double quotes. The default value is 0. -

-

- - -

-
Variable: int history_quoting_state -
An application may set this variable to indicate that the current line -being expanded is subject to existing quoting. If set to `'', the +

+ +
+
Variable: int history_quoting_state
+

An application may set this variable to indicate that the current line +being expanded is subject to existing quoting. If set to ‘'’, the history expansion function will assume that the line is single-quoted and inhibit expansion until it reads an unquoted closing single quote; if set -to `"', history expansion will assume the line is double quoted until +to ‘"’, history expansion will assume the line is double quoted until it reads an unquoted closing double quote. If set to zero, the default, the history expansion function will assume the line is not quoted and treat quote characters within the line as described above. -This is only effective if history_quotes_inhibit_expansion is set. -

-

- - -

-
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). +This is only effective if history_quotes_inhibit_expansion is set. +

+ +
+
Variable: rl_linebuf_func_t * history_inhibit_expansion_function
+

This should be set to the address of a function that takes two arguments: +a char * (string) +and an int index into that string (i). It should return a non-zero value if the history expansion starting at -string[i] should not be performed; zero if the expansion should +string[i] should not be performed; zero if the expansion should be done. It is intended for use by applications like Bash that use the history expansion character for additional purposes. -By default, this variable is set to NULL. -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.5 History Programming Example

- -

- -The following program demonstrates simple use of the GNU History Library. -

- -
 
#include <stdio.h>
-#include <readline/history.h>
+By default, this variable is set to NULL.
+

+ +
+ +
+ +

2.5 History Programming Example

+ +

The following program demonstrates simple use of the GNU History Library. +

+
+
#include <stdio.h>
+#include <readline/history.h>
 
 main (argc, argv)
      int argc;
@@ -1246,10 +1026,10 @@ main (argc, argv)
   using_history ();
   while (!done)
     {
-      printf ("history$ ");
+      printf ("history$ ");
       fflush (stdout);
       t = fgets (line, sizeof (line) - 1, stdin);
-      if (t && *t)
+      if (t && *t)
         {
           len = strlen (t);
           if (t[len - 1] == '\n')
@@ -1257,18 +1037,18 @@ main (argc, argv)
         }
 
       if (!t)
-        strcpy (line, "quit");
+        strcpy (line, "quit");
 
       if (line[0])
         {
           char *expansion;
           int result;
 
-          result = history_expand (line, &expansion);
+          result = history_expand (line, &expansion);
           if (result)
-            fprintf (stderr, "%s\n", expansion);
+            fprintf (stderr, "%s\n", expansion);
 
-          if (result < 0 || result == 2)
+          if (result < 0 || result == 2)
             {
               free (expansion);
               continue;
@@ -1279,13 +1059,13 @@ main (argc, argv)
           free (expansion);
         }
 
-      if (strcmp (line, "quit") == 0)
+      if (strcmp (line, "quit") == 0)
         done = 1;
-      else if (strcmp (line, "save") == 0)
-        write_history ("history_file");
-      else if (strcmp (line, "read") == 0)
-        read_history ("history_file");
-      else if (strcmp (line, "list") == 0)
+      else if (strcmp (line, "save") == 0)
+        write_history ("history_file");
+      else if (strcmp (line, "read") == 0)
+        read_history ("history_file");
+      else if (strcmp (line, "list") == 0)
         {
           register HIST_ENTRY **the_list;
           register int i;
@@ -1293,113 +1073,95 @@ main (argc, argv)
           the_list = history_list ();
           if (the_list)
             for (i = 0; the_list[i]; i++)
-              printf ("%d: %s\n", i + history_base, the_list[i]->line);
+              printf ("%d: %s\n", i + history_base, the_list[i]->line);
         }
-      else if (strncmp (line, "delete", 6) == 0)
+      else if (strncmp (line, "delete", 6) == 0)
         {
           int which;
-          if ((sscanf (line + 6, "%d", &which)) == 1)
+          if ((sscanf (line + 6, "%d", &which)) == 1)
             {
               HIST_ENTRY *entry = remove_history (which);
               if (!entry)
-                fprintf (stderr, "No such entry %d\n", which);
+                fprintf (stderr, "No such entry %d\n", which);
               else
                 {
-                  free (entry->line);
+                  free (entry->line);
                   free (entry);
                 }
             }
           else
             {
-              fprintf (stderr, "non-numeric arg given to `delete'\n");
+              fprintf (stderr, "non-numeric arg given to `delete'\n");
             }
         }
     }
 }
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

A. GNU Free Documentation License

- -

- -

- Version 1.3, 3 November 2008 -
-

- -
 
Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
-http://fsf.org/
+
+ +
+ + +
+ +

Appendix A GNU Free Documentation License

+ +
Version 1.3, 3 November 2008 +
+ +
+
Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+http://fsf.org/
 
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.
-

+

-
    -
  1. -PREAMBLE -

    +

      +
    1. PREAMBLE -The purpose of this License is to make a manual, textbook, or other -functional and useful document free in the sense of freedom: to +

      The purpose of this License is to make a manual, textbook, or other +functional and useful document free in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. -

      - -This License is a kind of "copyleft", which means that derivative +

      +

      This License is a kind of “copyleft”, which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. -

      - -We have designed this License in order to use it for manuals for free +

      +

      We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. -

      +

      +
    2. APPLICABILITY AND DEFINITIONS -
    3. -APPLICABILITY AND DEFINITIONS -

      - -This License applies to any manual or other work, in any medium, that +

      This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that -work under the conditions stated herein. The "Document", below, +work under the conditions stated herein. The “Document”, below, refers to any such manual or work. Any member of the public is a -licensee, and is addressed as "you". You accept the license if you +licensee, and is addressed as “you”. You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. -

      - -A "Modified Version" of the Document means any work containing the +

      +

      A “Modified Version” of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. -

      - -A "Secondary Section" is a named appendix or a front-matter section +

      +

      A “Secondary Section” is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the -publishers or authors of the Document to the Document's overall +publishers or authors of the Document to the Document’s overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain @@ -1407,24 +1169,21 @@ any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. -

      - -The "Invariant Sections" are certain Secondary Sections whose titles +

      +

      The “Invariant Sections” are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. -

      - -The "Cover Texts" are certain short passages of text that are listed, +

      +

      The “Cover Texts” are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. -

      - -A "Transparent" copy of the Document means a machine-readable copy, +

      +

      A “Transparent” copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of @@ -1435,57 +1194,49 @@ to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount -of text. A copy that is not "Transparent" is called "Opaque". -

      - -Examples of suitable formats for Transparent copies include plain -ASCII without markup, Texinfo input format, LaTeX input -format, SGML or XML using a publicly available -DTD, and standard-conforming simple HTML, -PostScript or PDF designed for human modification. Examples -of transparent image formats include PNG, XCF and -JPG. Opaque formats include proprietary formats that can be -read and edited only by proprietary word processors, SGML or -XML for which the DTD and/or processing tools are -not generally available, and the machine-generated HTML, -PostScript or PDF produced by some word processors for +of text. A copy that is not “Transparent” is called “Opaque”. +

      +

      Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, LaTeX input +format, SGML or XML using a publicly available +DTD, and standard-conforming simple HTML, +PostScript or PDF designed for human modification. Examples +of transparent image formats include PNG, XCF and +JPG. Opaque formats include proprietary formats that can be +read and edited only by proprietary word processors, SGML or +XML for which the DTD and/or processing tools are +not generally available, and the machine-generated HTML, +PostScript or PDF produced by some word processors for output purposes only. -

      - -The "Title Page" means, for a printed book, the title page itself, +

      +

      The “Title Page” means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in -formats which do not have any title page as such, "Title Page" means -the text near the most prominent appearance of the work's title, +formats which do not have any title page as such, “Title Page” means +the text near the most prominent appearance of the work’s title, preceding the beginning of the body of the text. -

      - -The "publisher" means any person or entity that distributes copies +

      +

      The “publisher” means any person or entity that distributes copies of the Document to the public. -

      - -A section "Entitled XYZ" means a named subunit of the Document whose +

      +

      A section “Entitled XYZ” means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a -specific section name mentioned below, such as "Acknowledgements", -"Dedications", "Endorsements", or "History".) To "Preserve the Title" +specific section name mentioned below, such as “Acknowledgements”, +“Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” of such a section when you modify the Document means that it remains a -section "Entitled XYZ" according to this definition. -

      - -The Document may include Warranty Disclaimers next to the notice which +section “Entitled XYZ” according to this definition. +

      +

      The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. -

      +

      +
    4. VERBATIM COPYING -
    5. -VERBATIM COPYING -

      - -You may copy and distribute the Document in any medium, either +

      You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other @@ -1494,19 +1245,15 @@ technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. -

      - -You may also lend copies, under the same conditions stated above, and +

      +

      You may also lend copies, under the same conditions stated above, and you may publicly display copies. -

      +

      +
    6. COPYING IN QUANTITY -
    7. -COPYING IN QUANTITY -

      - -If you publish printed copies (or copies in media that commonly have +

      If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the -Document's license notice requires Cover Texts, you must enclose the +Document’s license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify @@ -1516,15 +1263,13 @@ visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. -

      - -If the required texts for either cover are too voluminous to fit +

      +

      If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. -

      - -If you publish or distribute Opaque copies of the Document numbering +

      +

      If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using @@ -1536,135 +1281,98 @@ that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. -

      - -It is requested, but not required, that you contact the authors of the +

      +

      It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. -

      +

      +
    8. MODIFICATIONS -
    9. -MODIFICATIONS -

      - -You may copy and distribute a Modified Version of the Document under +

      You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: -

      - -

        -
      1. -Use in the Title Page (and on the covers, if any) a title distinct +

        +
          +
        1. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. -

          -

        2. -List on the Title Page, as authors, one or more persons or entities +
        3. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. -

          -

        4. -State on the Title page the name of the publisher of the +
        5. State on the Title page the name of the publisher of the Modified Version, as the publisher. -

          -

        6. -Preserve all the copyright notices of the Document. -

          +

        7. Preserve all the copyright notices of the Document. -
        8. -Add an appropriate copyright notice for your modifications +
        9. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. -

          -

        10. -Include, immediately after the copyright notices, a license notice +
        11. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. -

          -

        12. -Preserve in that license notice the full lists of Invariant Sections -and required Cover Texts given in the Document's license notice. -

          +

        13. Preserve in that license notice the full lists of Invariant Sections +and required Cover Texts given in the Document’s license notice. -
        14. -Include an unaltered copy of this License. -

          +

        15. Include an unaltered copy of this License. -
        16. -Preserve the section Entitled "History", Preserve its Title, and add +
        17. Preserve the section Entitled “History”, Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If -there is no section Entitled "History" in the Document, create one +there is no section Entitled “History” in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. -

          -

        18. -Preserve the network location, if any, given in the Document for +
        19. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions -it was based on. These may be placed in the "History" section. +it was based on. These may be placed in the “History” section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. -

          -

        20. -For any section Entitled "Acknowledgements" or "Dedications", Preserve +
        21. For any section Entitled “Acknowledgements” or “Dedications”, Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. -

          -

        22. -Preserve all the Invariant Sections of the Document, +
        23. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. -

          -

        24. -Delete any section Entitled "Endorsements". Such a section +
        25. Delete any section Entitled “Endorsements”. Such a section may not be included in the Modified Version. -

          -

        26. -Do not retitle any existing section to be Entitled "Endorsements" or +
        27. Do not retitle any existing section to be Entitled “Endorsements” or to conflict in title with any Invariant Section. -

          -

        28. -Preserve any Warranty Disclaimers. -
        -

        +

      2. Preserve any Warranty Disclaimers. +
      -If the Modified Version includes new front-matter sections or +

      If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the -list of Invariant Sections in the Modified Version's license notice. +list of Invariant Sections in the Modified Version’s license notice. These titles must be distinct from any other section titles. -

      - -You may add a section Entitled "Endorsements", provided it contains +

      +

      You may add a section Entitled “Endorsements”, provided it contains nothing but endorsements of your Modified Version by various -parties--for example, statements of peer review or that the text has +parties—for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. -

      - -You may add a passage of up to five words as a Front-Cover Text, and a +

      +

      You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or @@ -1673,26 +1381,21 @@ includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. -

      - -The author(s) and publisher(s) of the Document do not by this License +

      +

      The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. -

      - -

    10. -COMBINING DOCUMENTS -

      +

      +
    11. COMBINING DOCUMENTS -You may combine the Document with other documents released under this +

      You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. -

      - -The combined work need only contain one copy of this License, and +

      +

      The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by @@ -1700,60 +1403,48 @@ adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. -

      - -In the combination, you must combine any sections Entitled "History" +

      +

      In the combination, you must combine any sections Entitled “History” in the various original documents, forming one section Entitled -"History"; likewise combine any sections Entitled "Acknowledgements", -and any sections Entitled "Dedications". You must delete all -sections Entitled "Endorsements." -

      +“History”; likewise combine any sections Entitled “Acknowledgements”, +and any sections Entitled “Dedications”. You must delete all +sections Entitled “Endorsements.” +

      +
    12. COLLECTIONS OF DOCUMENTS -
    13. -COLLECTIONS OF DOCUMENTS -

      - -You may make a collection consisting of the Document and other documents +

      You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. -

      - -You may extract a single document from such a collection, and distribute +

      +

      You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. -

      +

      +
    14. AGGREGATION WITH INDEPENDENT WORKS -
    15. -AGGREGATION WITH INDEPENDENT WORKS -

      - -A compilation of the Document or its derivatives with other separate +

      A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or -distribution medium, is called an "aggregate" if the copyright +distribution medium, is called an “aggregate” if the copyright resulting from the compilation is not used to limit the legal rights -of the compilation's users beyond what the individual works permit. +of the compilation’s users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. -

      - -If the Cover Text requirement of section 3 is applicable to these +

      +

      If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of -the entire aggregate, the Document's Cover Texts may be placed on +the entire aggregate, the Document’s Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. -

      +

      +
    16. TRANSLATION -
    17. -TRANSLATION -

      - -Translation is considered a kind of modification, so you may +

      Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include @@ -1765,586 +1456,296 @@ the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. -

      - -If a section in the Document is Entitled "Acknowledgements", -"Dedications", or "History", the requirement (section 4) to Preserve +

      +

      If a section in the Document is Entitled “Acknowledgements”, +“Dedications”, or “History”, the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. -

      +

      +
    18. TERMINATION -
    19. -TERMINATION -

      - -You may not copy, modify, sublicense, or distribute the Document +

      You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License. -

      - -However, if you cease all violation of this License, then your license +

      +

      However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. -

      - -Moreover, your license from a particular copyright holder is +

      +

      Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. -

      - -Termination of your rights under this section does not terminate the +

      +

      Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it. -

      +

      +
    20. FUTURE REVISIONS OF THIS LICENSE -
    21. -FUTURE REVISIONS OF THIS LICENSE -

      - -The Free Software Foundation may publish new, revised versions +

      The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See -http://www.gnu.org/copyleft/. -

      - -Each version of the License is given a distinguishing version number. +http://www.gnu.org/copyleft/. +

      +

      Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this -License "or any later version" applies to it, you have the option of +License “or any later version” applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this -License can be used, that proxy's public statement of acceptance of a +License can be used, that proxy’s public statement of acceptance of a version permanently authorizes you to choose that version for the Document. -

      +

      +
    22. RELICENSING -
    23. -RELICENSING -

      - -"Massive Multiauthor Collaboration Site" (or "MMC Site") means any +

      “Massive Multiauthor Collaboration Site” (or “MMC Site”) means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A -"Massive Multiauthor Collaboration" (or "MMC") contained in the +“Massive Multiauthor Collaboration” (or “MMC”) contained in the site means any set of copyrightable works thus published on the MMC site. -

      - -"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 +

      +

      “CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization. -

      - -"Incorporate" means to publish or republish a Document, in whole or +

      +

      “Incorporate” means to publish or republish a Document, in whole or in part, as part of another Document. -

      - -An MMC is "eligible for relicensing" if it is licensed under this +

      +

      An MMC is “eligible for relicensing” if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008. -

      - -The operator of an MMC Site may republish an MMC contained in the site +

      +

      The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing. -

      - -

    -

    +

    +
- -

ADDENDUM: How to use this License for your documents

- -

+

ADDENDUM: How to use this License for your documents

-To use this License in a document you have written, include a copy of +

To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: -

- -
 
  Copyright (C)  year  your name.
+

+
+
  Copyright (C)  year  your name.
   Permission is granted to copy, distribute and/or modify this document
   under the terms of the GNU Free Documentation License, Version 1.3
   or any later version published by the Free Software Foundation;
   with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
   Texts.  A copy of the license is included in the section entitled ``GNU
   Free Documentation License''.
-

- -If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, -replace the "with...Texts." line with this: -

- -
 
    with the Invariant Sections being list their titles, with
-    the Front-Cover Texts being list, and with the Back-Cover Texts
-    being list.
-

- -If you have Invariant Sections without Cover Texts, or some other + + +

If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the “with…Texts.” line with this: +

+
+
    with the Invariant Sections being list their titles, with
+    the Front-Cover Texts being list, and with the Back-Cover Texts
+    being list.
+
+ +

If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. -

- -If your document contains nontrivial examples of program code, we +

+

If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

B. Concept Index

- -
Jump to:   A -   -E +

+ + +
+ +
+ +

Appendix B Concept Index

+
Jump to:   A   -H +E   -

- - - - - - - - - - - - - - -
Index Entry Section

A
anchored search2.3.5 Searching the History List

E
event designators1.1.1 Event Designators

H
history events1.1.1 Event Designators
history expansion1.1 History Expansion
History Searching2.3.5 Searching the History List

Jump to:   A +H   -E +
+ + + + + + + + + + + + + + +
Index Entry  Section

A
anchored search: Searching the History List

E
event designators: Event Designators

H
history events: Event Designators
history expansion: History Interaction
History Searching: Searching the History List

+
Jump to:   A   -H +E   -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

C. Function and Variable Index

- -
Jump to:   A +H   -C +
+ +
+
+
+
+

+Previous: , Up: GNU History Library   [Contents][Index]

+
+

Appendix C Function and Variable Index

+
Jump to:   A   -F +C   -G +F   -H +G   -N +H   -P +N   -R +P   -S +R   -U +S   -W +U   -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Index Entry Section

A
add_history2.3.2 History List Management
add_history_time2.3.2 History List Management
append_history2.3.6 Managing the History File

C
clear_history2.3.2 History List Management
current_history2.3.3 Information About the History List

F
free_history_entry2.3.2 History List Management

G
get_history_event2.3.7 History Expansion

H
history_arg_extract2.3.7 History Expansion
history_base2.4 History Variables
history_comment_char2.4 History Variables
history_expand2.3.7 History Expansion
history_expansion_char2.4 History Variables
history_get2.3.3 Information About the History List
history_get_history_state2.3.1 Initializing History and State Management
history_get_time2.3.3 Information About the History List
history_inhibit_expansion_function2.4 History Variables
history_is_stifled2.3.2 History List Management
history_length2.4 History Variables
history_list2.3.3 Information About the History List
history_max_entries2.4 History Variables
history_no_expand_chars2.4 History Variables
history_quotes_inhibit_expansion2.4 History Variables
history_quoting_state2.4 History Variables
history_search2.3.5 Searching the History List
history_search_delimiter_chars2.4 History Variables
history_search_pos2.3.5 Searching the History List
history_search_prefix2.3.5 Searching the History List
history_set_history_state2.3.1 Initializing History and State Management
history_set_pos2.3.4 Moving Around the History List
history_subst_char2.4 History Variables
history_tokenize2.3.7 History Expansion
history_total_bytes2.3.3 Information About the History List
history_truncate_file2.3.6 Managing the History File
history_word_delimiters2.4 History Variables
history_write_timestamps2.4 History Variables

N
next_history2.3.4 Moving Around the History List

P
previous_history2.3.4 Moving Around the History List

R
read_history2.3.6 Managing the History File
read_history_range2.3.6 Managing the History File
remove_history2.3.2 History List Management
replace_history_entry2.3.2 History List Management

S
stifle_history2.3.2 History List Management

U
unstifle_history2.3.2 History List Management
using_history2.3.1 Initializing History and State Management

W
where_history2.3.3 Information About the History List
write_history2.3.6 Managing the History File

Jump to:   A +W   -C +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Index Entry  Section

A
add_history: History List Management
add_history_time: History List Management
append_history: Managing the History File

C
clear_history: History List Management
current_history: Information About the History List

F
free_history_entry: History List Management

G
get_history_event: History Expansion

H
history_arg_extract: History Expansion
history_base: History Variables
history_comment_char: History Variables
history_expand: History Expansion
history_expansion_char: History Variables
history_get: Information About the History List
history_get_history_state: Initializing History and State Management
history_get_time: Information About the History List
history_inhibit_expansion_function: History Variables
history_is_stifled: History List Management
history_length: History Variables
history_list: Information About the History List
history_max_entries: History Variables
history_no_expand_chars: History Variables
history_quotes_inhibit_expansion: History Variables
history_quoting_state: History Variables
history_search: Searching the History List
history_search_delimiter_chars: History Variables
history_search_pos: Searching the History List
history_search_prefix: Searching the History List
history_set_history_state: Initializing History and State Management
history_set_pos: Moving Around the History List
history_subst_char: History Variables
history_tokenize: History Expansion
history_total_bytes: Information About the History List
history_truncate_file: Managing the History File
history_word_delimiters: History Variables
history_write_timestamps: History Variables

N
next_history: Moving Around the History List

P
previous_history: Moving Around the History List

R
read_history: Managing the History File
read_history_range: Managing the History File
remove_history: History List Management
replace_history_entry: History List Management

S
stifle_history: History List Management

U
unstifle_history: History List Management
using_history: Initializing History and State Management

W
where_history: Information About the History List
write_history: Managing the History File

+
Jump to:   A   -F +C   -G +F   -H +G   -N +H   -P +N   -R +P   -S +R   -U +S   -W +U   -

- -


- - - - - - -
[Top][Contents][Index][ ? ]
-

Table of Contents

- -
- - - - - - -
[Top][Contents][Index][ ? ]
-

Short Table of Contents

-
-1. Using History Interactively -
-2. Programming with GNU History -
-A. GNU Free Documentation License -
-B. Concept Index -
-C. Function and Variable Index -
- -
-
- - - - - - -
[Top][Contents][Index][ ? ]
-

About this document

-This document was generated by Chet Ramey on October, 30 2020 -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 - +W   -
- [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, 30 2020 -using texi2html - - - +
+ + + + + + + + diff --git a/doc/history.info b/doc/history.info index 749d53e..a6799c3 100644 --- a/doc/history.info +++ b/doc/history.info @@ -1,11 +1,11 @@ -This is history.info, produced by makeinfo version 6.7 from +This is history.info, produced by makeinfo version 6.8 from history.texi. -This document describes the GNU History library (version 8.1, 29 October -2020), a programming tool that provides a consistent user interface for -recalling lines of previously typed input. +This document describes the GNU History library (version 8.2, 19 +September 2022), a programming tool that provides a consistent user +interface for recalling lines of previously typed input. - Copyright (C) 1988-2020 Free Software Foundation, Inc. + Copyright (C) 1988-2022 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, @@ -230,7 +230,7 @@ or edit, the word or words selected from the history event. '&' appears in NEW, it is replaced by OLD. A single backslash will quote the '&'. If OLD is null, it is set to the last OLD substituted, or, if no previous history substitutions took place, - the last STRING in a !?STRING'[?]' search. If NEW is is null, each + the last STRING in a !?STRING'[?]' search. If NEW is null, each matching OLD is deleted. The final delimiter is optional if it is the last character on the input line. @@ -1395,28 +1395,28 @@ Appendix C Function and Variable Index  Tag Table: -Node: Top848 -Node: Using History Interactively1493 -Node: History Interaction2001 -Node: Event Designators3899 -Node: Word Designators5173 -Node: Modifiers6933 -Node: Programming with GNU History8478 -Node: Introduction to History9222 -Node: History Storage10900 -Node: History Functions12035 -Node: Initializing History and State Management13024 -Node: History List Management13836 -Node: Information About the History List16130 -Node: Moving Around the History List17744 -Node: Searching the History List18837 -Node: Managing the History File20762 -Node: History Expansion22582 -Node: History Variables24511 -Node: History Programming Example28491 -Node: GNU Free Documentation License31168 -Node: Concept Index56340 -Node: Function and Variable Index57045 +Node: Top850 +Node: Using History Interactively1495 +Node: History Interaction2003 +Node: Event Designators3901 +Node: Word Designators5175 +Node: Modifiers6935 +Node: Programming with GNU History8477 +Node: Introduction to History9221 +Node: History Storage10899 +Node: History Functions12034 +Node: Initializing History and State Management13023 +Node: History List Management13835 +Node: Information About the History List16129 +Node: Moving Around the History List17743 +Node: Searching the History List18836 +Node: Managing the History File20761 +Node: History Expansion22581 +Node: History Variables24510 +Node: History Programming Example28490 +Node: GNU Free Documentation License31167 +Node: Concept Index56339 +Node: Function and Variable Index57044  End Tag Table diff --git a/doc/history.pdf b/doc/history.pdf index 949244f..0732585 100644 Binary files a/doc/history.pdf and b/doc/history.pdf differ diff --git a/doc/history.ps b/doc/history.ps index 3e9c231..3776eab 100644 --- a/doc/history.ps +++ b/doc/history.ps @@ -1,7 +1,7 @@ %!PS-Adobe-2.0 -%%Creator: dvips(k) 5.999 Copyright 2019 Radical Eye Software +%%Creator: dvips(k) 2022.1 (TeX Live 2022) Copyright 2022 Radical Eye Software %%Title: history.dvi -%%CreationDate: Fri Oct 30 14:07:46 2020 +%%CreationDate: Tue Sep 20 14:17:06 2022 %%Pages: 24 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 @@ -12,7 +12,7 @@ %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -D 600 -t letter -o history.ps history.dvi %DVIPSParameters: dpi=600 -%DVIPSSource: TeX output 2020.10.30:1007 +%DVIPSSource: TeX output 2022.09.20:1017 %%BeginProcSet: tex.pro 0 0 %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S @@ -5240,29 +5240,30 @@ ifelse %%EndSetup %%Page: 1 1 TeXDict begin 1 0 bop 150 1318 a Fr(GNU)65 b(History)h(Library)p -150 1418 3600 34 v 1920 1515 a Fq(Edition)31 b(8.1,)h(for)e -Fp(History)e(Library)h Fq(V)-8 b(ersion)31 b(8.1.)3217 -1623 y(Octob)s(er)f(2020)150 4927 y Fo(Chet)45 b(Ramey)-11 +150 1418 3600 34 v 1920 1515 a Fq(Edition)31 b(8.2,)h(for)e +Fp(History)e(Library)h Fq(V)-8 b(ersion)31 b(8.2.)3118 +1623 y(Septem)m(b)s(er)f(2022)150 4927 y Fo(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46 b(Reserv)l(e)g(Univ)l(ersit)l(y)150 5068 y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F) -11 b(oundation)p 150 5141 3600 17 v eop end %%Page: 2 2 -TeXDict begin 2 1 bop 150 4413 a Fq(This)35 b(do)s(cumen)m(t)g(describ) -s(es)g(the)h(GNU)h(History)f(library)f(\(v)m(ersion)i(8.1,)h(29)f -(Octob)s(er)f(2020\),)j(a)d(pro-)150 4523 y(gramming)23 -b(to)s(ol)g(that)g(pro)m(vides)f(a)h(consisten)m(t)h(user)d(in)m -(terface)j(for)e(recalling)i(lines)f(of)f(previously)g(t)m(yp)s(ed)150 -4633 y(input.)150 4767 y(Cop)m(yrigh)m(t)602 4764 y(c)577 -4767 y Fn(\015)30 b Fq(1988{2020)35 b(F)-8 b(ree)31 b(Soft)m(w)m(are)h -(F)-8 b(oundation,)31 b(Inc.)390 4902 y(P)m(ermission)21 -b(is)f(gran)m(ted)h(to)g(cop)m(y)-8 b(,)24 b(distribute)c(and/or)h(mo)s -(dify)e(this)i(do)s(cumen)m(t)f(under)f(the)390 5011 -y(terms)25 b(of)h(the)f(GNU)h(F)-8 b(ree)27 b(Do)s(cumen)m(tation)g -(License,)g(V)-8 b(ersion)26 b(1.3)g(or)f(an)m(y)h(later)g(v)m(ersion) -390 5121 y(published)43 b(b)m(y)h(the)h(F)-8 b(ree)46 -b(Soft)m(w)m(are)g(F)-8 b(oundation;)53 b(with)44 b(no)g(In)m(v)-5 -b(arian)m(t)46 b(Sections,)j(no)390 5230 y(F)-8 b(ron)m(t-Co)m(v)m(er) -31 b(T)-8 b(exts,)30 b(and)f(no)f(Bac)m(k-Co)m(v)m(er)k(T)-8 +TeXDict begin 2 1 bop 150 4413 a Fq(This)43 b(do)s(cumen)m(t)g(describ) +s(es)g(the)h(GNU)g(History)h(library)e(\(v)m(ersion)h(8.2,)49 +b(19)44 b(Septem)m(b)s(er)f(2022\),)50 b(a)150 4523 y(programming)32 +b(to)s(ol)h(that)f(pro)m(vides)g(a)h(consisten)m(t)g(user)e(in)m +(terface)j(for)d(recalling)j(lines)e(of)g(previously)150 +4633 y(t)m(yp)s(ed)e(input.)150 4767 y(Cop)m(yrigh)m(t)602 +4764 y(c)577 4767 y Fn(\015)g Fq(1988{2022)35 b(F)-8 +b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390 +4902 y(P)m(ermission)21 b(is)f(gran)m(ted)h(to)g(cop)m(y)-8 +b(,)24 b(distribute)c(and/or)h(mo)s(dify)e(this)i(do)s(cumen)m(t)f +(under)f(the)390 5011 y(terms)25 b(of)h(the)f(GNU)h(F)-8 +b(ree)27 b(Do)s(cumen)m(tation)g(License,)g(V)-8 b(ersion)26 +b(1.3)g(or)f(an)m(y)h(later)g(v)m(ersion)390 5121 y(published)43 +b(b)m(y)h(the)h(F)-8 b(ree)46 b(Soft)m(w)m(are)g(F)-8 +b(oundation;)53 b(with)44 b(no)g(In)m(v)-5 b(arian)m(t)46 +b(Sections,)j(no)390 5230 y(F)-8 b(ron)m(t-Co)m(v)m(er)31 +b(T)-8 b(exts,)30 b(and)f(no)f(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts.)41 b(A)29 b(cop)m(y)h(of)f(the)g(license)h(is)f(included)390 5340 y(in)h(the)h(section)g(en)m(titled)h(\\GNU)f(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License".)p eop end @@ -5436,12 +5437,12 @@ Fq(.)k(A)31 b(single)g(bac)m(kslash)g(will)g(quote)g(the)g(`)p Fp(&)p Fq('.)41 b(If)31 b Fk(old)j Fq(is)c(n)m(ull,)h(it)g(is)g(set)g (to)g(the)g(last)g Fk(old)630 1484 y Fq(substituted,)j(or,)g(if)f(no)g (previous)g(history)g(substitutions)g(to)s(ok)h(place,)h(the)e(last)h -Fk(string)630 1594 y Fq(in)j(a)g(!?)p Fk(string)8 b Fp([?])37 -b Fq(searc)m(h.)61 b(If)37 b Fk(new)45 b Fq(is)37 b(is)g(n)m(ull,)i -(eac)m(h)f(matc)m(hing)h Fk(old)h Fq(is)e(deleted.)61 -b(The)630 1704 y(\014nal)30 b(delimiter)h(is)g(optional)g(if)f(it)h(is) -g(the)f(last)i(c)m(haracter)f(on)g(the)f(input)g(line.)150 -1863 y Fp(&)432 b Fq(Rep)s(eat)31 b(the)f(previous)g(substitution.)150 +Fk(string)630 1594 y Fq(in)d(a)g(!?)p Fk(string)8 b Fp([?])30 +b Fq(searc)m(h.)44 b(If)31 b Fk(new)38 b Fq(is)31 b(n)m(ull,)h(eac)m(h) +g(matc)m(hing)g Fk(old)j Fq(is)c(deleted.)44 b(The)30 +b(\014nal)630 1704 y(delimiter)h(is)g(optional)g(if)f(it)h(is)g(the)f +(last)h(c)m(haracter)h(on)f(the)f(input)g(line.)150 1863 +y Fp(&)432 b Fq(Rep)s(eat)31 b(the)f(previous)g(substitution.)150 2022 y Fp(g)150 2132 y(a)432 b Fq(Cause)38 b(c)m(hanges)i(to)f(b)s(e)f (applied)h(o)m(v)m(er)h(the)f(en)m(tire)g(ev)m(en)m(t)h(line.)66 b(Used)39 b(in)f(conjunction)630 2242 y(with)30 b(`)p diff --git a/doc/history.texi b/doc/history.texi index 7a3a476..721118b 100644 --- a/doc/history.texi +++ b/doc/history.texi @@ -12,7 +12,7 @@ This document describes the GNU History library a programming tool that provides a consistent user interface for recalling lines of previously typed input. -Copyright @copyright{} 1988--2020 Free Software Foundation, Inc. +Copyright @copyright{} 1988--2022 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/history_3.ps b/doc/history_3.ps index 1f2b083..4440b3f 100644 --- a/doc/history_3.ps +++ b/doc/history_3.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.22.4 -%%CreationDate: Mon Oct 12 10:59:26 2020 +%%CreationDate: Fri Sep 23 09:52:37 2022 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic @@ -439,9 +439,9 @@ R .059(ace with a)-.1 F .918(set of well-kno)108 604.8 R .917 (vious lines and using that te)-.25 F .917(xt in ne)-.15 F 3.417(wc)-.25 G(om-)-3.417 E 4.183(mands. The)108 616.8 R 1.684(basic history manipul\ ation commands are identical to the history substitution pro)4.183 F -1.684(vided by)-.15 F F1(bash)108 628.8 Q F0(.)A .915 -(The programmer can also use the Readline library)108 645.6 R 3.415(,w) --.65 G .915(hich includes some history manipulation by def)-3.415 F +1.684(vided by)-.15 F F1(bash)108 628.8 Q F0(.)A 1.154 +(The programmer can also use the readline library)108 645.6 R 3.654(,w) +-.65 G 1.153(hich includes some history manipulation by def)-3.654 F (ault,)-.1 E(and has the added adv)108 657.6 Q (antage of command line editing.)-.25 E .39(Before declaring an)108 674.4 R 2.89(yf)-.15 G .39(unctions using an)-2.89 F 2.89(yf)-.15 G .39 diff --git a/doc/hstech.texi b/doc/hstech.texi index 7ac1195..da6417b 100644 --- a/doc/hstech.texi +++ b/doc/hstech.texi @@ -1,7 +1,7 @@ @ignore This file documents the user interface to the GNU History library. -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2022 Free Software Foundation, Inc. Authored by Brian Fox and Chet Ramey. Permission is granted to make and distribute verbatim copies of this manual diff --git a/doc/hsuser.texi b/doc/hsuser.texi index b8fedf3..9081baf 100644 --- a/doc/hsuser.texi +++ b/doc/hsuser.texi @@ -1,7 +1,7 @@ @ignore This file documents the user interface to the GNU History library. -Copyright (C) 1988--2020 Free Software Foundation, Inc. +Copyright (C) 1988--2022 Free Software Foundation, Inc. Authored by Brian Fox and Chet Ramey. Permission is granted to make and distribute verbatim copies of this manual @@ -214,8 +214,9 @@ end of the history, and an index of @samp{-1} refers to the current @code{history -d} command. @item -d @var{start}-@var{end} -Delete the history entries between positions @var{start} and @var{end}, -inclusive. Positive and negative values for @var{start} and @var{end} +Delete the range of history entries between positions @var{start} and +@var{end}, inclusive. +Positive and negative values for @var{start} and @var{end} are interpreted as described above. @item -a @@ -245,10 +246,15 @@ the history list as a single entry. @end table -When any of the @option{-w}, @option{-r}, @option{-a}, or @option{-n} options is -used, if @var{filename} -is given, then it is used as the history file. If not, then -the value of the @env{HISTFILE} variable is used. +If a @var{filename} argument is supplied +when any of the @option{-w}, @option{-r}, @option{-a}, or @option{-n} options +is used, Bash uses @var{filename} as the history file. +If not, then the value of the @env{HISTFILE} variable is used. + +The return value is 0 unless an invalid option is encountered, an +error occurs while reading or writing the history file, an invalid +@var{offset} or range is supplied as an argument to @option{-d}, or the +history expansion supplied as an argument to @option{-p} fails. @end table @end ifset @@ -507,7 +513,7 @@ substituted, or, if no previous history substitutions took place, the last @var{string} in a !?@var{string}@code{[?]} search. -If @var{new} is is null, each matching @var{old} is deleted. +If @var{new} is null, each matching @var{old} is deleted. The final delimiter is optional if it is the last character on the input line. diff --git a/doc/readline.0 b/doc/readline.0 index d32329b..b7c45a7 100644 --- a/doc/readline.0 +++ b/doc/readline.0 @@ -173,23 +173,49 @@ READLINE(3) Library Functions Manual READLINE(3) sitive), and "1" are equivalent to On. All other values are equivalent to Off. The variables and their default values are: + active-region-start-color + A string variable that controls the text color and background + when displaying the text in the active region (see the descrip- + tion of enable-active-region below). This string must not take + up any physical character positions on the display, so it should + consist only of terminal escape sequences. It is output to the + terminal before displaying the text in the active region. This + variable is reset to the default value whenever the terminal + type changes. The default value is the string that puts the + terminal in standout mode, as obtained from the terminal's ter- + minfo description. A sample value might be "\e[01;33m". + active-region-end-color + A string variable that "undoes" the effects of active-re- + gion-start-color and restores "normal" terminal display appear- + ance after displaying text in the active region. This string + must not take up any physical character positions on the dis- + play, so it should consist only of terminal escape sequences. + It is output to the terminal after displaying the text in the + active region. This variable is reset to the default value + whenever the terminal type changes. The default value is the + string that restores the terminal from standout mode, as ob- + tained from the terminal's terminfo description. A sample value + might be "\e[0m". bell-style (audible) - Controls what happens when readline wants to ring the terminal + Controls what happens when readline wants to ring the terminal bell. If set to none, readline never rings the bell. If set to - visible, readline uses a visible bell if one is available. If + visible, readline uses a visible bell if one is available. If set to audible, readline attempts to ring the terminal's bell. bind-tty-special-chars (On) - If set to On (the default), readline attempts to bind the con- - trol characters treated specially by the kernel's terminal + If set to On (the default), readline attempts to bind the con- + trol characters treated specially by the kernel's terminal driver to their readline equivalents. blink-matching-paren (Off) If set to On, readline attempts to briefly move the cursor to an opening parenthesis when a closing parenthesis is inserted. colored-completion-prefix (Off) - If set to On, when listing completions, readline displays the + If set to On, when listing completions, readline displays the common prefix of the set of possible completions using a differ- - ent color. The color definitions are taken from the value of - the LS_COLORS environment variable. + ent color. The color definitions are taken from the value of + the LS_COLORS environment variable. If there is a color defini- + tion in $LS_COLORS for the custom suffix "readline-colored-com- + pletion-prefix", readline uses this color for the common prefix + instead of its default. colored-stats (Off) If set to On, readline displays possible completions using dif- ferent colors to indicate their file type. The color defini- @@ -232,7 +258,9 @@ READLINE(3) Library Functions Manual READLINE(3) 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 meta prefix). The default is On, but readline will set - it to Off if the locale contains eight-bit characters. + it to Off if the locale contains eight-bit characters. This + variable is dependent on the LC_CTYPE locale category, and may + change if the locale is changed. disable-completion (Off) If set to On, readline will inhibit word completion. Completion characters will be inserted into the line as if they had been @@ -254,13 +282,23 @@ READLINE(3) Library Functions Manual READLINE(3) escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. + enable-active-region (On) + The point is the current cursor position, and mark refers to a + saved cursor position. The text between the point and mark is + referred to as the region. When this variable is set to On, + readline allows certain commands to designate the region as ac- + tive. When the region is active, readline highlights the text + in the region using the value of the active-region-start-color, + which defaults to the string that enables the terminal's stand- + out mode. The active region shows the text inserted by brack- + eted-paste and any matching text found by incremental and non- + incremental history searches. enable-bracketed-paste (On) - When set to On, readline will configure the terminal in a way - that will enable it to insert each paste into the editing buffer - as a single string of characters, instead of treating each char- - acter as if it had been read from the keyboard. This can pre- - vent pasted characters from being interpreted as editing com- - mands. + When set to On, readline configures the terminal to insert each + paste into the editing buffer as a single string of characters, + instead of treating each character as if it had been read from + the keyboard. This prevents readline from executing any editing + commands bound to key sequences appearing in the pasted text. enable-keypad (Off) When set to On, readline will try to enable the application key- pad when it is called. Some systems need this to enable the ar- @@ -296,159 +334,162 @@ READLINE(3) Library Functions Manual READLINE(3) gardless of what the terminal claims it can support. The name meta-flag is a synonym for this variable. The default is Off, but readline will set it to On if the locale contains eight-bit - characters. + characters. This variable is dependent on the LC_CTYPE locale + category, and may change if the locale is changed. isearch-terminators (``C-[ C-J'') - The string of characters that should terminate an incremental - search without subsequently executing the character as a com- - mand. If this variable has not been given a value, the charac- + The string of characters that should terminate an incremental + search without subsequently executing the character as a com- + mand. If this variable has not been given a value, the charac- ters ESC and C-J will terminate an incremental search. keymap (emacs) - Set the current readline keymap. The set of legal keymap names - is emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move, - vi-command, and vi-insert. vi is equivalent to vi-command; - emacs is equivalent to emacs-standard. The default value is - emacs. The value of editing-mode also affects the default + Set the current readline keymap. The set of legal keymap names + is emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move, + vi-command, and vi-insert. vi is equivalent to vi-command; + emacs is equivalent to emacs-standard. The default value is + emacs. The value of editing-mode also affects the default keymap. keyseq-timeout (500) - Specifies the duration readline will wait for a character when - reading an ambiguous key sequence (one that can form a complete + Specifies the duration readline will wait for a character when + reading an ambiguous key sequence (one that can form a complete key sequence using the input read so far, or can take additional - input to complete a longer key sequence). If no input is re- - ceived within the timeout, readline will use the shorter but - complete key sequence. The value is specified in milliseconds, - so a value of 1000 means that readline will wait one second for - additional input. If this variable is set to a value less than - or equal to zero, or to a non-numeric value, readline will wait - until another key is pressed to decide which key sequence to + input to complete a longer key sequence). If no input is re- + ceived within the timeout, readline will use the shorter but + complete key sequence. The value is specified in milliseconds, + so a value of 1000 means that readline will wait one second for + additional input. If this variable is set to a value less than + or equal to zero, or to a non-numeric value, readline will wait + until another key is pressed to decide which key sequence to complete. mark-directories (On) If set to On, completed directory names have a slash appended. mark-modified-lines (Off) - If set to On, history lines that have been modified are dis- + If set to On, history lines that have been modified are dis- played with a preceding asterisk (*). mark-symlinked-directories (Off) If set to On, completed names which are symbolic links to direc- - tories have a slash appended (subject to the value of mark-di- + tories have a slash appended (subject to the value of mark-di- rectories). match-hidden-files (On) - This variable, when set to On, causes readline to match files - whose names begin with a `.' (hidden files) when performing - filename completion. If set to Off, the leading `.' must be + This variable, when set to On, causes readline to match files + whose names begin with a `.' (hidden files) when performing + filename completion. If set to Off, the leading `.' must be supplied by the user in the filename to be completed. menu-complete-display-prefix (Off) - If set to On, menu completion displays the common prefix of the + If set to On, menu completion displays the common prefix of the list of possible completions (which may be empty) before cycling through the list. output-meta (Off) - If set to On, readline will display characters with the eighth + 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, but readline will set it to On if the locale - contains eight-bit characters. + contains eight-bit characters. This variable is dependent on + the LC_CTYPE locale category, and may change if the locale is + changed. page-completions (On) - If set to On, readline uses an internal more-like pager to dis- + If set to On, readline uses an internal more-like pager to dis- play a screenful of possible completions at a time. print-completions-horizontally (Off) - If set to On, readline will display completions with matches - sorted horizontally in alphabetical order, rather than down the + If set to On, readline will display completions with matches + sorted horizontally in alphabetical order, rather than down the screen. revert-all-at-newline (Off) - If set to On, readline will undo all changes to history lines + If set to On, readline will undo all changes to history lines before returning when accept-line is executed. By default, his- - tory lines may be modified and retain individual undo lists + tory lines may be modified and retain individual undo lists across calls to readline. show-all-if-ambiguous (Off) - This alters the default behavior of the completion functions. + This alters the default behavior of the completion functions. If set to On, words which have more than one possible completion - cause the matches to be listed immediately instead of ringing + cause the matches to be listed immediately instead of ringing the bell. show-all-if-unmodified (Off) - This alters the default behavior of the completion functions in + This alters the default behavior of the completion functions in a fashion similar to show-all-if-ambiguous. If set to On, words - which have more than one possible completion without any possi- - ble partial completion (the possible completions don't share a - common prefix) cause the matches to be listed immediately in- + which have more than one possible completion without any possi- + ble partial completion (the possible completions don't share a + common prefix) cause the matches to be listed immediately in- stead of ringing the bell. show-mode-in-prompt (Off) - If set to On, add a string to the beginning of the prompt indi- - cating the editing mode: emacs, vi command, or vi insertion. + If set to On, add a string to the beginning of the prompt indi- + cating the editing mode: emacs, vi command, or vi insertion. The mode strings are user-settable (e.g., emacs-mode-string). skip-completed-text (Off) - If set to On, this alters the default completion behavior when - inserting a single match into the line. It's only active when - performing completion in the middle of a word. If enabled, - readline does not insert characters from the completion that - match characters after point in the word being completed, so + If set to On, this alters the default completion behavior when + inserting a single match into the line. It's only active when + performing completion in the middle of a word. If enabled, + readline does not insert characters from the completion that + match characters after point in the word being completed, so portions of the word following the cursor are not duplicated. vi-cmd-mode-string ((cmd)) - If the show-mode-in-prompt variable is enabled, this string is + If the show-mode-in-prompt variable is enabled, this string is displayed immediately before the last line of the primary prompt - when vi editing mode is active and in command mode. The value + when vi editing mode is active and in command mode. The value is expanded like a key binding, so the standard set of meta- and - control prefixes and backslash escape sequences is available. - Use the \1 and \2 escapes to begin and end sequences of non- - printing characters, which can be used to embed a terminal con- + control prefixes and backslash escape sequences is available. + Use the \1 and \2 escapes to begin and end sequences of non- + printing characters, which can be used to embed a terminal con- trol sequence into the mode string. vi-ins-mode-string ((ins)) - If the show-mode-in-prompt variable is enabled, this string is + If the show-mode-in-prompt variable is enabled, this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in insertion mode. The value is expanded like a key binding, so the standard set of meta- and - control prefixes and backslash escape sequences is available. - Use the \1 and \2 escapes to begin and end sequences of non- - printing characters, which can be used to embed a terminal con- + control prefixes and backslash escape sequences is available. + Use the \1 and \2 escapes to begin and end sequences of non- + printing characters, which can be used to embed a terminal con- trol sequence into the mode string. visible-stats (Off) - If set to On, a character denoting a file's type as reported by - stat(2) is appended to the filename when listing possible com- + If set to On, a character denoting a file's type as reported by + stat(2) is appended to the filename when listing possible com- pletions. Conditional 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 + 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 edit- - ing mode, the terminal being used, or the application using - readline. The text of the test, after any comparison operator, + $if The $if construct allows bindings to be made based on the edit- + ing mode, the terminal being used, or the application using + readline. The text of the test, after any comparison operator, extends to the end of the line; unless otherwise noted, no char- acters are required to isolate it. - mode The mode= form of the $if directive is used to test - whether readline is in emacs or vi mode. This may be - used in conjunction with the set keymap command, for in- - stance, to set bindings in the emacs-standard and emacs- - ctlx keymaps only if readline is starting out in emacs + mode The mode= form of the $if directive is used to test + whether readline is in emacs or vi mode. This may be + used in conjunction with the set keymap command, for in- + stance, to set bindings in the emacs-standard and emacs- + ctlx keymaps only if readline is starting out in emacs mode. - term The term= form may be used to include terminal-specific + term The term= form may be used to include terminal-specific key bindings, perhaps to bind the key sequences output by the terminal's function keys. The word on the right side - of the = is tested against the full name of the terminal - and the portion of the terminal name before the first -. - This allows sun to match both sun and sun-cmd, for in- + of the = is tested against the full name of the terminal + and the portion of the terminal name before the first -. + This allows sun to match both sun and sun-cmd, for in- stance. version - The version test may be used to perform comparisons - against specific readline versions. The version expands - to the current readline version. The set of comparison - operators includes =, (and ==), !=, <=, >=, <, and >. - The version number supplied on the right side of the op- - erator consists of a major version number, an optional + The version test may be used to perform comparisons + against specific readline versions. The version expands + to the current readline version. The set of comparison + operators includes =, (and ==), !=, <=, >=, <, and >. + The version number supplied on the right side of the op- + erator consists of a major version number, an optional decimal point, and an optional minor version (e.g., 7.1). - If the minor version is omitted, it is assumed to be 0. + If the minor version is omitted, it is assumed to be 0. The operator may be separated from the string version and from the version number argument by whitespace. application The application construct is used to include application- - specific settings. Each program using the readline li- - brary sets the application name, and an initialization + specific settings. Each program using the readline li- + brary sets the application name, 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 + to bind key sequences to functions useful for a specific + program. For instance, the following command adds a key + sequence that quotes the current or previous word in bash: $if Bash @@ -458,12 +499,12 @@ READLINE(3) Library Functions Manual READLINE(3) variable The variable construct provides simple equality tests for - readline variables and values. The permitted comparison - operators are =, ==, and !=. The variable name must be + readline variables and values. The permitted comparison + operators are =, ==, and !=. The variable name must be separated from the comparison operator by whitespace; the - operator may be separated from the value on the right - hand side by whitespace. Both string and boolean vari- - ables may be tested. Boolean variables must be tested + operator may be separated from the value on the right + hand side by whitespace. Both string and boolean vari- + ables may be tested. Boolean variables must be tested against the values on and off. $endif This command, as seen in the previous example, terminates an $if @@ -473,52 +514,52 @@ READLINE(3) Library Functions Manual READLINE(3) test fails. $include - This directive takes a single filename as an argument and reads - commands and bindings from that file. For example, the follow- + This directive takes a single filename as an argument and reads + commands and bindings from that file. For example, the follow- ing directive would read /etc/inputrc: $include /etc/inputrc SEARCHING - Readline provides commands for searching through the command history - for lines containing a specified string. There are two search modes: + Readline provides commands for searching through the command history + for lines containing a specified string. There are two search modes: incremental and non-incremental. - Incremental searches begin before the user has finished typing the - search string. As each character of the search string is typed, read- + Incremental searches begin before the user has finished typing the + search string. As each character of the search string is typed, read- line 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 + so far. An incremental search requires only as many characters as + needed to find the desired history entry. To search backward in the history for a particular string, type C-r. Typing C-s searches forward - through the history. The characters present in the value of the - isearch-terminators variable are used to terminate an incremental - search. If that variable has not been assigned a value the Escape and + through the history. The characters present in the value of the + isearch-terminators variable are used to terminate an incremental + search. If that variable has not been assigned a value the Escape and C-J characters will terminate an incremental search. C-G will abort an - incremental search and restore the original line. When the search is - terminated, the history entry containing the search string becomes the + incremental search and restore the original line. When the search is + terminated, the history entry containing the search string becomes the current line. - To find other matching entries in the history list, type C-s or C-r 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 + To find other matching entries in the history list, type C-s or C-r 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 command from the history + cute that command. For instance, a newline will terminate the search + and accept the line, thereby executing the command from the history list. A movement command will terminate the search, make the last line found the current line, and begin editing. - Non-incremental searches read the entire search string before starting - to search for matching history lines. The search string may be typed + 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. EDITING COMMANDS - The following is a list of the names of the commands and the default + The following is a list of the names of the commands and the default key sequences to which they are bound. Command names without an accom- panying key sequence are unbound by default. In the following descriptions, point refers to the current cursor posi- - tion, and mark refers to a cursor position saved by the set-mark com- - mand. The text between the point and mark is referred to as the re- + tion, and mark refers to a cursor position saved by the set-mark com- + mand. The text between the point and mark is referred to as the re- gion. Commands for Moving @@ -534,27 +575,27 @@ READLINE(3) Library Functions Manual READLINE(3) Move forward to the end of the next word. Words are composed of alphanumeric characters (letters and digits). backward-word (M-b) - Move back to the start of the current or previous word. Words + Move back to the start of the current or previous word. Words are composed of alphanumeric characters (letters and digits). previous-screen-line - Attempt to move point to the same physical screen column on the - previous physical screen line. This will not have the desired - effect if the current Readline line does not take up more than - one physical line or if point is not greater than the length of + Attempt to move point to the same physical screen column on the + previous physical screen line. This will not have the desired + effect if the current readline line does not take up more than + one physical line or if point is not greater than the length of the prompt plus the screen width. next-screen-line - Attempt to move point to the same physical screen column on the + Attempt to move point to the same physical screen column on the next physical screen line. This will not have the desired effect - if the current Readline line does not take up more than one - physical line or if the length of the current Readline line is + if the current readline line does not take up more than one + physical line or if the length of the current readline line is not greater than the length of the prompt plus the screen width. clear-display (M-C-l) - Clear the screen and, if possible, the terminal's scrollback - buffer, then redraw the current line, leaving the current line + Clear the screen and, if possible, the terminal's scrollback + buffer, then redraw the current line, leaving the current line at the top of the screen. clear-screen (C-l) Clear the screen, then redraw the current line, leaving the cur- - rent line at the top of the screen. With an argument, refresh + rent line at the top of the screen. With an argument, refresh the current line without clearing the screen. redraw-current-line Refresh the current line. @@ -563,96 +604,100 @@ READLINE(3) Library Functions Manual READLINE(3) accept-line (Newline, Return) Accept the line regardless of where the cursor is. If this line is non-empty, it may be added to the history list for future re- - call with add_history(). If the line is a modified history + call with add_history(). If the line is a modified history line, the history line is restored to its original state. previous-history (C-p) Fetch the previous command from the history list, moving back in the list. next-history (C-n) - Fetch the next command from the history list, moving forward in + Fetch the next command from the history list, moving forward in the list. 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 + Move to the end of the input history, i.e., the line currently being entered. + operate-and-get-next (C-o) + Accept the current line for return to the calling application as + if a newline had been entered, and fetch the next line relative + to the current line from the history for editing. A numeric ar- + gument, if supplied, specifies the history entry to use instead + of the current line. + fetch-history + With a numeric argument, fetch that entry from the history list + and make it the current line. Without an argument, move back to + the first entry in the history list. 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 backward starting at the current line and moving `up' + through the history as necessary. This is an incremental search. forward-search-history (C-s) - Search forward starting at the current line and moving `down' - through the history as necessary. This is an incremental + Search forward starting at the current line and moving `down' + through the history as necessary. This is an incremental search. non-incremental-reverse-search-history (M-p) Search backward through the history starting at the current line - using a non-incremental search for a string supplied by the + using a non-incremental search for a string supplied by the user. non-incremental-forward-search-history (M-n) - Search forward through the history using a non-incremental + Search forward through the history using a non-incremental search for a string supplied by the user. history-search-backward Search backward through the history for the string of characters between the start of the current line and the current cursor po- - sition (the point). The search string must match at the begin- + sition (the point). The search string must match at the begin- ning of a history line. This is a non-incremental search. history-search-forward - Search forward through the history for the string of characters + Search forward through the history for the string of characters between the start of the current line and the point. The search string must match at the beginning of a history line. This is a non-incremental search. history-substring-search-backward Search backward through the history for the string of characters between the start of the current line and the current cursor po- - sition (the point). The search string may match anywhere in a + sition (the point). The search string may match anywhere in a history line. This is a non-incremental search. history-substring-search-forward - Search forward through the history for the string of characters + Search forward through the history for the string of characters between the start of the current line and the point. The search - string may match anywhere in a history line. This is a non-in- + string may match anywhere in a history line. This is a non-in- cremental search. yank-nth-arg (M-C-y) - Insert the first argument to the previous command (usually the + Insert the first argument to the previous command (usually the second word on the previous line) at point. With an argument n, - insert the nth word from the previous command (the words in the - previous command begin with word 0). A negative argument in- - serts the nth word from the end of the previous command. Once - the argument n is computed, the argument is extracted as if the + insert the nth word from the previous command (the words in the + previous command begin with word 0). A negative argument in- + serts the nth word from the end of the previous command. Once + the argument n is computed, the argument is extracted as if the "!n" history expansion had been specified. yank-last-arg (M-., M-_) - Insert the last argument to the previous command (the last word + Insert the last argument to the previous command (the last word of the previous history entry). With a numeric argument, behave - exactly like yank-nth-arg. Successive calls to yank-last-arg - move back through the history list, inserting the last word (or - the word specified by the argument to the first call) of each + exactly like yank-nth-arg. Successive calls to yank-last-arg + move back through the history list, inserting the last word (or + the word specified by the argument to the first call) of each line in turn. Any numeric argument supplied to these successive - calls determines the direction to move through the history. A - negative argument switches the direction through the history + calls determines the direction to move through the history. A + negative argument switches the direction through the history (back or forward). The history expansion facilities are used to - extract the last argument, as if the "!$" history expansion had + extract the last argument, as if the "!$" history expansion had been specified. - operate-and-get-next (C-o) - Accept the current line for return to the calling application as - if a newline had been entered, and fetch the next line relative - to the current line from the history for editing. A numeric ar- - gument, if supplied, specifies the history entry to use instead - of the current line. Commands for Changing Text end-of-file (usually C-d) - The character indicating end-of-file as set, for example, by - ``stty''. If this character is read when there are no charac- - ters on the line, and point is at the beginning of the line, - Readline interprets it as the end of input and returns EOF. + The character indicating end-of-file as set, for example, by + ``stty''. If this character is read when there are no charac- + ters on the line, and point is at the beginning of the line, + readline interprets it as the end of input and returns EOF. delete-char (C-d) Delete the character at point. If this function is bound to the same character as the tty EOF character, as C-d commonly is, see above for the effects. backward-delete-char (Rubout) - Delete the character behind the cursor. When given a numeric + Delete the character behind the cursor. When given a numeric argument, save the deleted text on the kill ring. forward-backward-delete-char - Delete the character under the cursor, unless the cursor is at + Delete the character under the cursor, unless the cursor is at the end of the line, in which case the character behind the cur- sor is deleted. quoted-insert (C-q, C-v) @@ -663,32 +708,32 @@ READLINE(3) Library Functions Manual READLINE(3) self-insert (a, b, A, 1, !, ...) Insert the character typed. transpose-chars (C-t) - Drag the character before point forward over the character at - point, moving point forward as well. If point is at the end of - the line, then this transposes the two characters before point. + Drag the character before point forward over the character at + point, moving point forward as well. If point is at the end of + the line, then this transposes the two characters before point. Negative arguments have no effect. transpose-words (M-t) - Drag the word before point past the word after point, moving - point over that word as well. If point is at the end of the + 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. upcase-word (M-u) - Uppercase the current (or following) word. With a negative ar- + Uppercase the current (or following) word. With a negative ar- gument, uppercase the previous word, but do not move point. downcase-word (M-l) - Lowercase the current (or following) word. With a negative ar- + Lowercase the current (or following) word. With a negative ar- gument, lowercase the previous word, but do not move point. capitalize-word (M-c) Capitalize the current (or following) word. With a negative ar- gument, capitalize the previous word, but do not move point. overwrite-mode - Toggle overwrite mode. With an explicit positive numeric argu- + Toggle overwrite mode. With an explicit positive numeric argu- ment, switches to overwrite mode. With an explicit non-positive numeric argument, switches to insert mode. This command affects - only emacs mode; vi mode does overwrite differently. Each call + only emacs mode; vi mode does overwrite differently. Each call to readline() starts in insert mode. In overwrite mode, charac- - ters bound to self-insert replace the text at point rather than - pushing the text to the right. Characters bound to back- - ward-delete-char replace the character before point with a + ters bound to self-insert replace the text at point rather than + pushing the text to the right. Characters bound to back- + ward-delete-char replace the character before point with a space. By default, this command is unbound. Killing and Yanking @@ -697,123 +742,123 @@ READLINE(3) Library Functions Manual READLINE(3) backward-kill-line (C-x Rubout) Kill backward to the beginning of the line. unix-line-discard (C-u) - Kill backward from point to the beginning of the line. The + Kill backward from point to the beginning of the line. The killed text is saved on the kill-ring. kill-whole-line - Kill all characters on the current line, no matter where point + Kill all characters on the current line, no matter where point is. kill-word (M-d) - Kill from point the end of the current word, or if between - words, to the end of the next word. Word boundaries are the + 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 forward-word. backward-kill-word (M-Rubout) - Kill the word behind point. Word boundaries are the same as + Kill the word behind point. Word boundaries are the same as those used by backward-word. unix-word-rubout (C-w) - Kill the word behind point, using white space as a word bound- + Kill the word behind point, using white space as a word bound- ary. The killed text is saved on the kill-ring. unix-filename-rubout - Kill the word behind point, using white space and the slash - character as the word boundaries. The killed text is saved on + Kill the word behind point, using white space and the slash + character as the word boundaries. The killed text is saved on the kill-ring. delete-horizontal-space (M-\) Delete all spaces and tabs around point. kill-region - Kill the text between the point and mark (saved cursor posi- + Kill the text between the point and mark (saved cursor posi- tion). This text is referred to as the region. copy-region-as-kill Copy the text in the region to the kill buffer. copy-backward-word - Copy the word before point to the kill buffer. The word bound- + Copy the word before point to the kill buffer. The word bound- aries are the same as backward-word. copy-forward-word - Copy the word following point to the kill buffer. The word + Copy the word following point to the kill buffer. The word boundaries are the same as forward-word. 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. Only works follow- + Rotate the kill ring, and yank the new top. Only works follow- ing yank or yank-pop. Numeric Arguments digit-argument (M-0, M-1, ..., M--) - Add this digit to the argument already accumulating, or start a + Add this digit to the argument already accumulating, or start a new argument. M-- starts a negative argument. universal-argument - This is another way to specify an argument. If this command is - followed by one or more digits, optionally with a leading minus - sign, those digits define the argument. If the command is fol- + 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 fol- lowed by digits, executing universal-argument again ends the nu- meric argument, but is otherwise ignored. As a special case, if this command is immediately followed by a character that is nei- ther a digit or minus sign, the argument count for the next com- - mand is multiplied by four. The argument count is initially - one, so executing this function the first time makes the argu- + mand is multiplied by four. The argument count is initially + one, so executing this function the first time makes the argu- ment count four, a second time makes the argument count sixteen, and so on. Completing complete (TAB) Attempt to perform completion on the text before point. The ac- - tual completion performed is application-specific. Bash, for - instance, attempts completion treating the text as a variable - (if the text begins with $), username (if the text begins with - ~), hostname (if the text begins with @), or command (including - aliases and functions) in turn. If none of these produces a - match, filename completion is attempted. Gdb, on the other - hand, allows completion of program functions and variables, and + tual completion performed is application-specific. Bash, for + instance, attempts completion treating the text as a variable + (if the text begins with $), username (if the text begins with + ~), hostname (if the text begins with @), or command (including + aliases and functions) in turn. If none of these produces a + match, filename completion is attempted. Gdb, on the other + hand, allows completion of program functions and variables, and only attempts filename completion under certain circumstances. possible-completions (M-?) - List the possible completions of the text before point. When + List the possible completions of the text before point. When displaying completions, readline sets the number of columns used - for display to the value of completion-display-width, the value - of the environment variable COLUMNS, or the screen width, in + for display to the value of completion-display-width, the value + of the environment variable COLUMNS, or the screen width, in that order. insert-completions (M-*) - Insert all completions of the text before point that would have + Insert all completions of the text before point that would have been generated by possible-completions. menu-complete - Similar to complete, but replaces the word to be completed with - a single match from the list of possible completions. Repeated - execution of menu-complete steps through the list of possible - completions, inserting each match in turn. At the end of the + Similar to complete, but replaces the word to be completed with + a single match from the list of possible completions. Repeated + execution of menu-complete steps through the list of possible + completions, inserting each match in turn. At the end of the list of completions, the bell is rung (subject to the setting of bell-style) and the original text is restored. An argument of n moves n positions forward in the list of matches; a negative ar- gument may be used to move backward through the list. This com- mand is intended to be bound to TAB, but is unbound by default. menu-complete-backward - Identical to menu-complete, but moves backward through the list - of possible completions, as if menu-complete had been given a + Identical to menu-complete, but moves backward through the list + of possible completions, as if menu-complete had been given a negative argument. This command 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). If at the end of the + Deletes the character under the cursor if not at the beginning + or end of the line (like delete-char). If at the end of the line, behaves identically to possible-completions. Keyboard Macros start-kbd-macro (C-x () - Begin saving the characters typed into the current keyboard + 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 store the definition. call-last-kbd-macro (C-x e) - Re-execute the last keyboard macro defined, by making the char- + Re-execute the last keyboard macro defined, by making the char- acters in the macro appear as if typed at the keyboard. print-last-kbd-macro () - Print the last keyboard macro defined in a format suitable for + Print the last keyboard macro defined in a format suitable for the inputrc file. Miscellaneous re-read-init-file (C-x C-r) - Read in the contents of the inputrc file, and incorporate any + 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 + Abort the current editing command and ring the terminal's bell (subject to the setting of bell-style). do-lowercase-version (M-A, M-B, M-x, ...) - If the metafied character x is uppercase, run the command that + If the metafied character x is uppercase, run the command that is bound to the corresponding metafied lowercase character. The behavior is undefined if x is already lowercase. prefix-meta (ESC) @@ -821,80 +866,80 @@ READLINE(3) Library Functions Manual READLINE(3) undo (C-_, 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 return the line to its initial + Undo all changes made to this line. This is like executing the + undo command enough times to return the line to its initial state. tilde-expand (M-&) Perform tilde expansion on the current word. set-mark (C-@, M-) - Set the mark to the point. If a numeric argument is supplied, + 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 + 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 occur- - rences. + that character. A negative argument searches for previous oc- + currences. character-search-backward (M-C-]) - A character is read and point is moved to the previous occur- - rence of that character. A negative count searches for subse- - quent occurrences. + A character is read and point is moved to the previous occur- + rence of that character. A negative argument searches for sub- + sequent occurrences. skip-csi-sequence - Read enough characters to consume a multi-key sequence such as - those defined for keys like Home and End. Such sequences begin + Read enough characters to consume a multi-key sequence such as + those defined for keys like Home and End. Such sequences begin with a Control Sequence Indicator (CSI), usually ESC-[. If this - sequence is bound to "\[", keys producing such sequences will - have no effect unless explicitly bound to a readline command, - instead of inserting stray characters into the editing buffer. + sequence is bound to "\[", keys producing such sequences will + have no effect unless explicitly bound to a readline command, + instead of inserting stray characters into the editing buffer. This is unbound by default, but usually bound to ESC-[. insert-comment (M-#) - Without a numeric argument, the value of the readline com- - ment-begin variable is inserted at the beginning of the current + Without a numeric argument, the value of the readline com- + ment-begin variable is inserted at the beginning of the current line. If a numeric argument is supplied, this command acts as a - toggle: if the characters at the beginning of the line do not - match the value of comment-begin, the value is inserted, other- + toggle: if the characters at the beginning of the line do not + match the value of comment-begin, the value is inserted, other- wise the characters in comment-begin are deleted from the begin- - ning of the line. In either case, the line is accepted as if a - newline had been typed. The default value of comment-begin - makes the current line a shell comment. If a numeric argument + ning of the line. In either case, the line is accepted as if a + newline had been typed. The default value of comment-begin + makes the current line a shell comment. If a numeric argument causes the comment character to be removed, the line will be ex- ecuted by the shell. dump-functions - Print all of the functions and their key bindings to the read- + Print all of the functions and their key bindings to the read- line output stream. If a numeric argument is supplied, the out- - put is formatted in such a way that it can be made part of an + put is formatted in such a way that it can be made part of an inputrc file. dump-variables - Print all of the settable variables and their values to the - readline output stream. If a numeric argument is supplied, the + 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. dump-macros - Print all of the readline key sequences bound to macros and the - strings they output. If a numeric argument is supplied, the + 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. emacs-editing-mode (C-e) - When in vi command mode, this causes a switch to emacs editing + When in vi command mode, this causes a switch to emacs editing mode. vi-editing-mode (M-C-j) - When in emacs editing mode, this causes a switch to vi editing + When in emacs editing mode, this causes a switch to vi editing mode. DEFAULT KEY BINDINGS - The following is a list of the default emacs and vi bindings. Charac- - ters with the eighth bit set are written as M-, and are re- - ferred to as metafied characters. The printable ASCII characters not - mentioned in the list of emacs standard bindings are bound to the - self-insert function, which just inserts the given character into the + The following is a list of the default emacs and vi bindings. Charac- + ters with the eighth bit set are written as M-, and are re- + ferred to as metafied characters. The printable ASCII characters not + mentioned in the list of emacs standard bindings are bound to the + self-insert function, which just inserts the given character into the input line. In vi insertion mode, all characters not specifically men- tioned are bound to self-insert. Characters assigned to signal genera- tion by stty(1) or the terminal driver, such as C-Z or C-C, retain that - function. Upper and lower case metafied characters are bound to the - same function in the emacs mode meta keymap. The remaining characters - are unbound, which causes readline to ring the bell (subject to the + function. Upper and lower case metafied characters are bound to the + same function in the emacs mode meta keymap. The remaining characters + are unbound, which causes readline to ring the bell (subject to the setting of the bell-style variable). Emacs Mode @@ -1109,14 +1154,14 @@ READLINE(3) Library Functions Manual READLINE(3) chet.ramey@case.edu BUG REPORTS - If you find a bug in readline, you should report it. But first, you - should make sure that it really is a bug, and that it appears in the + If you find a bug in readline, you should report it. But first, you + should make sure that it really is a bug, and that it appears in the latest version of the readline library that you have. - Once you have determined that a bug actually exists, mail a bug report - to bug-readline@gnu.org. If you have a fix, you are welcome to mail - that as well! Suggestions and `philosophical' bug reports may be - mailed to bug-readline@gnu.org or posted to the Usenet newsgroup + Once you have determined that a bug actually exists, mail a bug report + to bug-readline@gnu.org. If you have a fix, you are welcome to mail + that as well! Suggestions and `philosophical' bug reports may be + mailed to bug-readline@gnu.org or posted to the Usenet newsgroup gnu.bash.bug. Comments and bug reports concerning this manual page should be directed @@ -1127,4 +1172,4 @@ READLINE(3) Library Functions Manual READLINE(3) -GNU Readline 8.1 2020 October 29 READLINE(3) +GNU Readline 8.2 2022 September 19 READLINE(3) diff --git a/doc/readline.3 b/doc/readline.3 index 179c781..77ef02a 100644 --- a/doc/readline.3 +++ b/doc/readline.3 @@ -6,9 +6,9 @@ .\" Case Western Reserve University .\" chet.ramey@case.edu .\" -.\" Last Change: Tue Mar 24 09:27:30 EDT 2020 +.\" Last Change: Mon Sep 19 11:11:22 EDT 2022 .\" -.TH READLINE 3 "2020 October 29" "GNU Readline 8.1" +.TH READLINE 3 "2022 September 19" "GNU Readline 8.2" .\" .\" File Name macro. This used to be `.PN', for Path Name, .\" but Sun doesn't seem to like that very much. @@ -339,6 +339,30 @@ The variables and their default values are: .PP .PD 0 .TP +.B active\-region\-start\-color +A string variable that controls the text color and background when displaying +the text in the active region (see the description of +\fBenable\-active\-region\fP below). +This string must not take up any physical character positions on the display, +so it should consist only of terminal escape sequences. +It is output to the terminal before displaying the text in the active region. +This variable is reset to the default value whenever the terminal type changes. +The default value is the string that puts the terminal in standout mode, +as obtained from the terminal's terminfo description. +A sample value might be \f(CW"\ee[01;33m"\fP. +.TP +.B active\-region\-end\-color +A string variable that "undoes" the effects of \fBactive\-region\-start\-color\fP +and restores "normal" terminal display appearance after displaying text +in the active region. +This string must not take up any physical character positions on the display, +so it should consist only of terminal escape sequences. +It is output to the terminal after displaying the text in the active region. +This variable is reset to the default value whenever the terminal type changes. +The default value is the string that restores the terminal from standout mode, +as obtained from the terminal's terminfo description. +A sample value might be \f(CW"\ee[0m\fP". +.TP .B bell\-style (audible) Controls what happens when readline wants to ring the terminal bell. If set to \fBnone\fP, readline never rings the bell. If set to @@ -359,6 +383,9 @@ If set to \fBOn\fP, when listing completions, readline displays the common prefix of the set of possible completions using a different color. The color definitions are taken from the value of the \fBLS_COLORS\fP environment variable. +If there is a color definition in \fB$LS_COLORS\fP for the custom suffix +"readline-colored-completion-prefix", readline uses this color for +the common prefix instead of its default. .TP .B colored\-stats (Off) If set to \fBOn\fP, readline displays possible completions using different @@ -408,7 +435,8 @@ If the number of possible completions is greater than or equal to the value of this variable, readline will ask whether or not the user wishes to view them; otherwise they are simply listed -on the terminal. A negative value causes readline to never ask. +on the terminal. +A negative value causes readline to never ask. .TP .B convert\-meta (On) If set to \fBOn\fP, readline will convert characters with the @@ -417,6 +445,8 @@ by stripping the eighth bit and prefixing it with an escape character (in effect, using escape as the \fImeta prefix\fP). The default is \fIOn\fP, but readline will set it to \fIOff\fP if the locale contains eight-bit characters. +This variable is dependent on the \fBLC_CTYPE\fP locale category, and +may change if the locale is changed. .TP .B disable\-completion (Off) If set to \fBOn\fP, readline will inhibit word completion. Completion @@ -447,12 +477,25 @@ Use the \e1 and \e2 escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. .TP +.B enable\-active\-region (On) +The \fIpoint\fP is the current cursor position, and \fImark\fP refers +to a saved cursor position. +The text between the point and mark is referred to as the \fIregion\fP. +When this variable is set to \fIOn\fP, readline allows certain commands +to designate the region as \fIactive\fP. +When the region is active, readline highlights the text in the region using +the value of the \fBactive\-region\-start\-color\fP, which defaults to the +string that enables +the terminal's standout mode. +The active region shows the text inserted by bracketed-paste and any +matching text found by incremental and non-incremental history searches. +.TP .B enable\-bracketed\-paste (On) -When set to \fBOn\fP, readline will configure the terminal in a way -that will enable it to insert each paste into the editing buffer as a -single string of characters, instead of treating each character as if -it had been read from the keyboard. This can prevent pasted characters -from being interpreted as editing commands. +When set to \fBOn\fP, readline configures the terminal to insert each +paste into the editing buffer as a single string of characters, instead +of treating each character as if it had been read from the keyboard. +This prevents readline from executing any editing commands bound to key +sequences appearing in the pasted text. .TP .B enable\-keypad (Off) When set to \fBOn\fP, readline will try to enable the application @@ -497,6 +540,8 @@ regardless of what the terminal claims it can support. The name is a synonym for this variable. The default is \fIOff\fP, but readline will set it to \fIOn\fP if the locale contains eight-bit characters. +This variable is dependent on the \fBLC_CTYPE\fP locale category, and +may change if the locale is changed. .TP .B isearch\-terminators (``C\-[ C\-J'') The string of characters that should terminate an incremental @@ -560,6 +605,8 @@ eighth bit set directly rather than as a meta-prefixed escape sequence. The default is \fIOff\fP, but readline will set it to \fIOn\fP if the locale contains eight-bit characters. +This variable is dependent on the \fBLC_CTYPE\fP locale category, and +may change if the locale is changed. .TP .B page\-completions (On) If set to \fBOn\fP, readline uses an internal \fImore\fP-like pager @@ -803,14 +850,14 @@ composed of alphanumeric characters (letters and digits). .B previous\-screen\-line Attempt to move point to the same physical screen column on the previous physical screen line. This will not have the desired effect if the current -Readline line does not take up more than one physical line or if point is not +readline line does not take up more than one physical line or if point is not greater than the length of the prompt plus the screen width. .TP .B next\-screen\-line Attempt to move point to the same physical screen column on the next physical screen line. This will not have the desired effect if the current -Readline line does not take up more than one physical line or if the length -of the current Readline line is not greater than the length of the prompt +readline line does not take up more than one physical line or if the length +of the current readline line is not greater than the length of the prompt plus the screen width. .TP .B clear\-display (M\-C\-l) @@ -853,6 +900,21 @@ Move to the first line in the history. Move to the end of the input history, i.e., the line currently being entered. .TP +.B +operate\-and\-get\-next (C\-o) +Accept the current line for return to the calling application as if a +newline had been entered, +and fetch the next line relative to the current line from the history +for editing. +A numeric argument, if supplied, specifies the history entry to use instead +of the current line. +.TP +.B +fetch\-history +With a numeric argument, fetch that entry from the history list +and make it the current line. +Without an argument, move back to the first entry in the history list. +.TP .B reverse\-search\-history (C\-r) Search backward starting at the current line and moving `up' through the history as necessary. This is an incremental search. @@ -919,15 +981,6 @@ the direction to move through the history. A negative argument switches the direction through the history (back or forward). The history expansion facilities are used to extract the last argument, as if the "!$" history expansion had been specified. -.TP -.B -operate\-and\-get\-next (C\-o) -Accept the current line for return to the calling application as if a -newline had been entered, -and fetch the next line relative to the current line from the history -for editing. -A numeric argument, if supplied, specifies the history entry to use instead -of the current line. .PD .SS Commands for Changing Text .PD 0 @@ -937,7 +990,7 @@ The character indicating end-of-file as set, for example, by .if t \f(CWstty\fP. .if n ``stty''. If this character is read when there are no characters -on the line, and point is at the beginning of the line, Readline +on the line, and point is at the beginning of the line, readline interprets it as the end of input and returns .SM .BR EOF . @@ -1206,11 +1259,11 @@ the saved position, and the old cursor position is saved as the mark. .TP .B character\-search (C\-]) A character is read and point is moved to the next occurrence of that -character. A negative count searches for previous occurrences. +character. A negative argument searches for previous occurrences. .TP .B character\-search\-backward (M\-C\-]) A character is read and point is moved to the previous occurrence of that -character. A negative count searches for subsequent occurrences. +character. A negative argument searches for subsequent occurrences. .TP .B skip\-csi\-sequence Read enough characters to consume a multi-key sequence such as those diff --git a/doc/readline.dvi b/doc/readline.dvi index 715e5ae..7296d40 100644 Binary files a/doc/readline.dvi and b/doc/readline.dvi differ diff --git a/doc/readline.html b/doc/readline.html index 1dd7693..1002f4f 100644 --- a/doc/readline.html +++ b/doc/readline.html @@ -1,1274 +1,1273 @@ - - - - + + + +GNU Readline Library + + + + + + + + + + + + + - - - - - - + - + +

GNU Readline Library

- - - - - - -
[Top][Contents][Index][ ? ]
-

GNU Readline Library

-This document describes the GNU Readline Library, a utility which aids + + + + + + + +

+ +

GNU Readline Library

+ +

This document describes the GNU Readline Library, a utility which aids in the consistency of user interface across discrete programs which provide a command line interface. -The Readline home page is http://www.gnu.org/software/readline/. -

- -

- - - - - -
1. Command Line Editing  GNU Readline User's Manual.
2. Programming with GNU Readline  GNU Readline Programmer's Manual.
A. GNU Free Documentation License  License for copying this manual.
Concept Index  Index of concepts described in this manual.
Function and Variable Index  Index of externally visible functions - and variables.
-

- -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
- -

1. Command Line Editing

- -

- -This chapter describes the basic features of the GNU +The Readline home page is http://www.gnu.org/software/readline/. +

+ + + + + +
+

Table of Contents

+ +
+ + +
+
+
+
+ +

1 Command Line Editing

+ +

This chapter describes the basic features of the GNU command line editing interface. -

- -

- - - - - -
1.1 Introduction to Line Editing  Notation used in this text.
1.2 Readline Interaction  The minimum set of commands for editing a line.
1.3 Readline Init File  Customizing Readline from a user's view.
1.4 Bindable Readline Commands  A description of most of the Readline commands - available for binding
1.5 Readline vi Mode  A short description of how to make Readline - behave like the vi editor.
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.1 Introduction to Line Editing

- -

- -The following paragraphs describe the notation used to represent +

+ + +
+
+ +

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 +

+

The text C-k is read as ‘Control-K’ and describes the character +produced when the k key is pressed while the Control key is depressed. -

- -The text M-k is read as `Meta-K' and describes the character -produced when the Meta key (if you have one) is depressed, and the k +

+

The text M-k is read as ‘Meta-K’ and describes the character +produced when the Meta key (if you have one) is depressed, and the k key is pressed. -The Meta key is labeled ALT on many keyboards. -On keyboards with two keys labeled ALT (usually to either side of -the space bar), the ALT on the left side is generally set to +The Meta key is labeled ALT on many keyboards. +On keyboards with two keys labeled ALT (usually to either side of +the space bar), the ALT on the left side is generally set to work as a Meta key. -The ALT key on the right may also be configured to work as a +The ALT key on the right may also be configured to work as a Meta key or may be configured as some other modifier, such as a Compose key for typing accented characters. -

- -If you do not have a Meta or ALT key, or another key working as -a Meta key, the identical keystroke can be generated by typing ESC -first, and then typing k. -Either process is known as metafying the k key. -

- -The text M-C-k is read as `Meta-Control-k' and describes the -character produced by metafying C-k. -

- -In addition, several keys have their own names. Specifically, -DEL, ESC, LFD, SPC, RET, and TAB all +

+

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 +(see 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 +The RET key may be labeled Return or Enter on some keyboards. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.2 Readline Interaction

- -

- -Often during an interactive session you type in a long line of text, +

+
+
+
+ +

1.2 Readline Interaction

+ + +

Often during an interactive session you type in a long line of text, only to notice that the first word on the line is misspelled. The Readline library gives you a set of commands for manipulating the text as you type it in, allowing you to just fix your typo, and not forcing you to retype the majority of the line. Using these editing commands, you move the cursor to the place that needs correction, and delete or insert the text of the corrections. Then, when you are satisfied with -the line, you simply press RET. You do not have to be at the -end of the line to press RET; the entire line is accepted +the line, you simply press RET. You do not have to be at the +end of the line to press RET; the entire line is accepted regardless of the location of the cursor within the line. -

- -

- - - - - -
1.2.1 Readline Bare Essentials  The least you need to know about Readline.
1.2.2 Readline Movement Commands  Moving about the input line.
1.2.3 Readline Killing Commands  How to delete text, and how to get it back!
1.2.4 Readline Arguments  Giving numeric arguments to commands.
1.2.5 Searching for Commands in the History  Searching through previous lines.
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.2.1 Readline Bare Essentials

- -

- -In order to enter characters into the line, simply type them. The typed +

+ + +
+
+ +

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 +

+

Sometimes you may mistype a character, and not notice the error until you have typed several other characters. In -that case, you can type C-b to move the cursor to the left, and then +that case, you can type C-b to move the cursor to the left, and then correct your mistake. Afterwards, you can move the cursor to the right -with C-f. -

- -When you add text in the middle of a line, you will notice that characters -to the right of the cursor are `pushed over' to make room for the text +with C-f. +

+

When you add text in the middle of a line, you will notice that characters +to the right of the cursor are ‘pushed over’ to make room for the text that you have inserted. Likewise, when you delete text behind the cursor, -characters to the right of the cursor are `pulled back' to fill in the +characters to the right of the cursor are ‘pulled back’ to fill in the blank space created by the removal of the text. A list of the bare essentials for editing the text of an input line follows. -

- -

-
C-b -
Move back one character. -
C-f -
Move forward one character. -
DEL or Backspace -
Delete the character to the left of the cursor. -
C-d -
Delete the character underneath the cursor. -
Printing characters -
Insert the character into the line at the cursor. -
C-_ or C-x C-u -
Undo the last editing command. You can undo all the way back to an +

+
+
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 +

(Depending on your configuration, the Backspace key might 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.) -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.2.2 Readline Movement Commands

- -

- -The above table describes the most basic keystrokes that you need +

+
+
+
+ +

1.2.2 Readline Movement Commands

+ + +

The above table describes the most basic keystrokes that you need in order to do editing of the input line. For your convenience, many -other commands have been added in addition to C-b, C-f, -C-d, and DEL. Here are some commands for moving more rapidly +other commands have been added in addition to C-b, C-f, +C-d, and DEL. Here are some commands for moving more rapidly about the line. -

- -

-
C-a -
Move to the start of the line. -
C-e -
Move to the end of the line. -
M-f -
Move forward a word, where a word is composed of letters and digits. -
M-b -
Move backward a word. -
C-l -
Clear the screen, reprinting the current line at the top. -
-

- -Notice how C-f moves forward a character, while M-f moves +

+
+
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. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

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) +

+
+
+
+ +

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 +(‘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. +

+

When you use a kill command, the text is saved in a kill-ring. Any number of consecutive kills save all of the killed text together, so that when you yank it back, you get it all. The kill ring is not line specific; the text that you killed on a previously typed line is available to be yanked back later, when you are typing another line. - -

- -Here is the list of commands for killing text. -

- -

-
C-k -
Kill the text from the current cursor position to the end of the line. -

- -

M-d -
Kill from the cursor to the end of the current word, or, if between + +

+

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 +Word boundaries are the same as those used by M-f. +

+
+
M-DEL
+

Kill from the cursor to 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 +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. -
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

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 +

+
+
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 argument that is significant. If you pass a negative argument to a command which normally acts in a forward direction, that command will act in a backward direction. For example, to kill text back to the -start of the line, you might type `M-- C-k'. -

- -The general way to pass numeric arguments to a command is to type meta -digits before the command. If the first `digit' typed is a minus -sign (`-'), then the sign of the argument will be negative. Once +start of the line, you might type ‘M-- C-k’. +

+

The general way to pass numeric arguments to a command is to type meta +digits before the command. If the first ‘digit’ typed is a minus +sign (‘-’), then the sign of the argument will be negative. Once you have typed one meta digit to get the argument started, you can type the remainder of the digits, and then the command. For example, to give -the C-d command an argument of 10, you could type `M-1 0 C-d', +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. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.2.5 Searching for Commands in the History

- -

- -Readline provides commands for searching through the command history +

+
+
+
+ +

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 +There are two search modes: incremental and non-incremental. +

+

Incremental searches begin before the user has finished typing the search string. As each character of the search string is typed, Readline displays the next entry from the history matching the string typed so far. An incremental search requires only as many characters as needed to find the desired history entry. To search backward in the history for a particular string, type -C-r. Typing C-s searches forward through the history. -The characters present in the value of the isearch-terminators variable +C-r. Typing C-s searches forward through the history. +The characters present in the value of the isearch-terminators variable are used to terminate an incremental search. -If that variable has not been assigned a value, the ESC and -C-J characters will terminate an incremental search. -C-g will abort an incremental search and restore the original line. +If that variable has not been assigned a value, the ESC and +C-J characters will terminate an incremental search. +C-g will abort an incremental search and restore the original line. When the search is terminated, the history entry containing the search string becomes the current line. -

- -To find other matching entries in the history list, type C-r or -C-s as appropriate. +

+

To find other matching entries in the history list, type C-r or +C-s as appropriate. This will search backward or forward in the history for the next entry matching the search string typed so far. Any other key sequence bound to a Readline command will terminate the search and execute that command. -For instance, a RET will terminate the search and accept +For instance, a RET will terminate the search and accept the line, thereby executing the command from the history list. A movement command will terminate the search, make the last line found the current line, and begin editing. -

- -Readline remembers the last incremental search string. If two -C-rs are typed without any intervening characters defining a new +

+

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 +

+

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. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.3 Readline Init File

- -

- -Although the Readline library comes with a set of Emacs-like +

+
+
+
+
+ +

1.3 Readline Init File

+ + +

Although the Readline library comes with a set of Emacs-like keybindings installed by default, it is possible to use a different set of keybindings. Any user can customize programs that use Readline by putting -commands in an inputrc file, conventionally in his home directory. +commands in an inputrc file, +conventionally in their home directory. The name of this -file is taken from the value of the environment variable INPUTRC. If -that variable is unset, the default is `~/.inputrc'. If that +file is taken from the value of the environment variable INPUTRC. If +that variable is unset, the default is ~/.inputrc. If that file does not exist or cannot be read, the ultimate default is -`/etc/inputrc'. -

- -When a program which uses the Readline library starts up, the +/etc/inputrc. +

+

When a program which uses the Readline library starts up, the init file is read, and the key bindings are set. -

- -In addition, the C-x C-r command re-reads this init file, thus +

+

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  Syntax for the commands in the inputrc file.
- -
- - -
1.3.2 Conditional Init Constructs  Conditional key bindings in the inputrc file.
- -
- - -
1.3.3 Sample Init File  An example inputrc file.
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.3.1 Readline Init File Syntax

- -

- -There are only a few basic constructs allowed in the +

+ + +
+
+ +

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 +Lines beginning with a ‘#’ are comments. +Lines beginning with a ‘$’ indicate conditional +constructs (see Conditional Init Constructs). Other lines denote variable settings and key bindings. -

- -

-
Variable Settings -
You can modify the run-time behavior of Readline by +

+
+
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. +using the set command within the init file. The syntax is simple: -

- -
 
set variable value
-

+

+
+
set variable value
+
-Here, for example, is how to +

Here, for example, is how to change from the default Emacs-like key binding to use -vi line editing commands: -

+vi line editing commands: +

+
+
set editing-mode vi
+
-
 
set editing-mode vi
-

- -Variable names and values, where appropriate, are recognized without regard +

Variable names and values, where appropriate, are recognized without regard to case. Unrecognized variable names are ignored. -

- -Boolean variables (those that can be set to on or off) are set to on if -the value is null or empty, on (case-insensitive), or 1. Any other +

+

Boolean variables (those that can be set to on or off) are set to on if +the value is null or empty, on (case-insensitive), or 1. Any other value results in the variable being set to off. -

+

-A great deal of run-time behavior is changeable with the following +

A great deal of run-time behavior is changeable with the following variables. -

- - -

- -
bell-style -
-Controls what happens when Readline wants to ring the terminal bell. -If set to `none', Readline never rings the bell. If set to -`visible', Readline uses a visible bell if one is available. -If set to `audible' (the default), Readline attempts to ring -the terminal's bell. -

- -

bind-tty-special-chars -
-If set to `on' (the default), Readline attempts to bind the control -characters treated specially by the kernel's terminal driver to their +

+ +
+
active-region-start-color
+

A string variable that controls the text color and background when displaying +the text in the active region (see the description of +enable-active-region below). +This string must not take up any physical character positions on the display, +so it should consist only of terminal escape sequences. +It is output to the terminal before displaying the text in the active region. +This variable is reset to the default value whenever the terminal type changes. +The default value is the string that puts the terminal in standout mode, +as obtained from the terminal’s terminfo description. +A sample value might be ‘\e[01;33m’. +

+
+
active-region-end-color
+

A string variable that "undoes" the effects of active-region-start-color +and restores "normal" terminal display appearance after displaying text +in the active region. +This string must not take up any physical character positions on the display, +so it should consist only of terminal escape sequences. +It is output to the terminal after displaying the text in the active region. +This variable is reset to the default value whenever the terminal type changes. +The default value is the string that restores the terminal from standout mode, +as obtained from the terminal’s terminfo description. +A sample value might be ‘\e[0m’. +

+
+
bell-style
+

Controls what happens when Readline wants to ring the terminal bell. +If set to ‘none’, Readline never rings the bell. If set to +‘visible’, Readline uses a visible bell if one is available. +If set to ‘audible’ (the default), Readline attempts to ring +the terminal’s bell. +

+
+
bind-tty-special-chars
+

If set to ‘on’ (the default), Readline attempts to bind the control +characters treated specially by the kernel’s terminal driver to their Readline equivalents. -

- -

blink-matching-paren -
-If set to `on', Readline attempts to briefly move the cursor to an +

+
+ +

If set to ‘on’, Readline attempts to briefly move the cursor to an opening parenthesis when a closing parenthesis is inserted. The default -is `off'. -

- -

colored-completion-prefix -
-If set to `on', when listing completions, Readline displays the +is ‘off’. +

+
+
colored-completion-prefix
+

If set to ‘on’, when listing completions, Readline displays the common prefix of the set of possible completions using a different color. -The color definitions are taken from the value of the LS_COLORS +The color definitions are taken from the value of the LS_COLORS environment variable. -The default is `off'. -

- -

colored-stats -
-If set to `on', Readline displays possible completions using different +If there is a color definition in LS_COLORS for the custom suffix +‘readline-colored-completion-prefix’, Readline uses this color for +the common prefix instead of its default. +The default is ‘off’. +

+
+
colored-stats
+

If set to ‘on’, Readline displays possible completions using different colors to indicate their file type. -The color definitions are taken from the value of the LS_COLORS +The color definitions are taken from the value of the LS_COLORS environment variable. -The default is `off'. -

- -

comment-begin -
-The string to insert at the beginning of the line when the -insert-comment command is executed. The default value -is "#". -

- -

completion-display-width -
-The number of screen columns used to display possible matches +The default is ‘off’. +

+
+
comment-begin
+

The string to insert at the beginning of the line when the +insert-comment command is executed. The default value +is "#". +

+
+
completion-display-width
+

The number of screen columns used to display possible matches when performing completion. The value is ignored if it is less than 0 or greater than the terminal screen width. A value of 0 will cause matches to be displayed one per line. The default value is -1. -

- -

completion-ignore-case -
-If set to `on', Readline performs filename matching and completion +

+
+
completion-ignore-case
+

If set to ‘on’, Readline performs filename matching and completion in a case-insensitive fashion. -The default value is `off'. -

- -

completion-map-case -
-If set to `on', and completion-ignore-case is enabled, Readline -treats hyphens (`-') and underscores (`_') as equivalent when +The default value is ‘off’. +

+
+
completion-map-case
+

If set to ‘on’, and completion-ignore-case is enabled, Readline +treats hyphens (‘-’) and underscores (‘_’) as equivalent when performing case-insensitive filename matching and completion. -The default value is `off'. -

- -

completion-prefix-display-length -
-The length in characters of the common prefix of a list of possible +The default value is ‘off’. +

+
+
completion-prefix-display-length
+

The length in characters of the common prefix of a list of possible completions that is displayed without modification. When set to a value greater than zero, common prefixes longer than this value are replaced with an ellipsis when displaying possible completions. -

- -

completion-query-items -
-The number of possible completions that determines when the user is +

+
+
completion-query-items
+

The number of possible completions that determines when the user is asked whether the list of possibilities should be displayed. If the number of possible completions is greater than or equal to this value, Readline will ask whether or not the user wishes to view them; otherwise, they are simply listed. -This variable must be set to an integer value greater than or equal to 0. -A negative value means Readline should never ask. -The default limit is 100. -

- -

convert-meta -
-If set to `on', Readline will convert characters with the -eighth bit set to an ASCII key sequence by stripping the eighth -bit and prefixing an ESC character, converting them to a -meta-prefixed key sequence. The default value is `on', but -will be set to `off' if the locale is one that contains +This variable must be set to an integer value greater than or equal to zero. +A zero value means Readline should never ask; negative values are +treated as zero. +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’, but +will be set to ‘off’ if the locale is one that contains eight-bit characters. -

- -

disable-completion -
-If set to `On', Readline will inhibit word completion. +This variable is dependent on the LC_CTYPE locale category, and +may change if the locale is changed. +

+
+
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'. -

- -

echo-control-characters -
-When set to `on', on operating systems that indicate they support it, -readline echoes a character corresponding to a signal generated from the -keyboard. The default is `on'. -

- -

editing-mode -
-The editing-mode variable controls which default set of +been mapped to self-insert. The default is ‘off’. +

+
+
echo-control-characters
+

When set to ‘on’, on operating systems that indicate they support it, +Readline echoes a character corresponding to a signal generated from the +keyboard. The default is ‘on’. +

+
+
editing-mode
+

The editing-mode variable controls which default set of key bindings is used. By default, Readline starts up in Emacs editing mode, where the keystrokes are most similar to Emacs. This variable can be -set to either `emacs' or `vi'. -

- -

emacs-mode-string -
-If the show-mode-in-prompt variable is enabled, +set to either ‘emacs’ or ‘vi’. +

+
+
emacs-mode-string
+

If the show-mode-in-prompt variable is enabled, this string is displayed immediately before the last line of the primary prompt when emacs editing mode is active. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. -Use the `\1' and `\2' escapes to begin and end sequences of +Use the ‘\1’ and ‘\2’ escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. -The default is `@'. -

- -

enable-bracketed-paste -
-When set to `On', Readline will configure the terminal in a way -that will enable it to insert each paste into the editing buffer as a -single string of characters, instead of treating each character as if -it had been read from the keyboard. This can prevent pasted characters -from being interpreted as editing commands. The default is `On'. -

- -

enable-keypad -
-When set to `on', Readline will try to enable the application +The default is ‘@’. +

+
+
enable-active-region
+

The point is the current cursor position, and mark refers +to a saved cursor position (see Commands For Moving). +The text between the point and mark is referred to as the region. +When this variable is set to ‘On’, Readline allows certain commands +to designate the region as active. +When the region is active, Readline highlights the text in the region using +the value of the active-region-start-color, which defaults to the +string that enables +the terminal’s standout mode. +The active region shows the text inserted by bracketed-paste and any +matching text found by incremental and non-incremental history searches. +The default is ‘On’. +

+
+
enable-bracketed-paste
+

When set to ‘On’, Readline configures the terminal to insert each +paste into the editing buffer as a single string of characters, instead +of treating each character as if it had been read from the keyboard. +This is called putting the terminal into bracketed paste mode; +it prevents Readline from executing any editing commands bound to key +sequences appearing in the pasted text. +The default is ‘On’. +

+
+
enable-keypad
+

When set to ‘on’, Readline will try to enable the application keypad when it is called. Some systems need this to enable the -arrow keys. The default is `off'. -

- -

enable-meta-key -
When set to `on', Readline will try to enable any meta modifier +arrow keys. The default is ‘off’. +

+
+
enable-meta-key
+

When set to ‘on’, Readline will try to enable any meta modifier key the terminal claims to support when it is called. On many terminals, the meta key is used to send eight-bit characters. -The default is `on'. -

- -

expand-tilde -
-If set to `on', tilde expansion is performed when Readline -attempts word completion. The default is `off'. -

- -

history-preserve-point -
-If set to `on', the history code attempts to place the point (the +The default is ‘on’. +

+
+
expand-tilde
+

If set to ‘on’, tilde expansion is performed when Readline +attempts word completion. The default is ‘off’. +

+
+
history-preserve-point
+

If set to ‘on’, the history code attempts to place the point (the current cursor position) at the -same location on each history line retrieved with previous-history -or next-history. The default is `off'. -

- -

history-size -
-Set the maximum number of history entries saved in the history list. +same location on each history line retrieved with previous-history +or next-history. The default is ‘off’. +

+
+
history-size
+

Set the maximum number of history entries saved in the history list. If set to zero, any existing history entries are deleted and no new entries are saved. If set to a value less than zero, the number of history entries is not limited. By default, the number of history entries is not limited. -If an attempt is made to set history-size to a non-numeric value, +If an attempt is made to set history-size to a non-numeric value, the maximum number of history entries will be set to 500. -

- -

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 +

+
+
horizontal-scroll-mode
+

This variable can be set to either ‘on’ or ‘off’. Setting it +to ‘on’ means that the text of the lines being edited will scroll horizontally on a single screen line when they are longer than the width of the screen, instead of wrapping onto a new screen line. -This variable is automatically set to `on' for terminals of height 1. -By default, this variable is set to `off'. -

- -

input-meta -
- -If set to `on', Readline will enable eight-bit input (it +This variable is automatically set to ‘on’ for terminals of height 1. +By default, this variable is set to ‘off’. +

+
+
input-meta
+
+

If set to ‘on’, Readline will enable eight-bit input (it will not clear the eighth bit in the characters it reads), regardless of what the terminal claims it can support. The -default value is `off', but Readline will set it to `on' if the +default value is ‘off’, but Readline will set it to ‘on’ if the locale contains eight-bit characters. -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. -Built-in keymap names are -emacs, -emacs-standard, -emacs-meta, -emacs-ctlx, -vi, -vi-move, -vi-command, and -vi-insert. -vi is equivalent to vi-command (vi-move is also a -synonym); emacs is equivalent to emacs-standard. +The name meta-flag is a synonym for this variable. +This variable is dependent on the LC_CTYPE locale category, and +may change if the locale is changed. +

+
+
isearch-terminators
+

The string of characters that should terminate an incremental search without +subsequently executing the character as a command (see 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. +Built-in keymap names are +emacs, +emacs-standard, +emacs-meta, +emacs-ctlx, +vi, +vi-move, +vi-command, and +vi-insert. +vi is equivalent to vi-command (vi-move is also a +synonym); emacs is equivalent to emacs-standard. Applications may add additional names. -The default value is emacs. -The value of the editing-mode variable also affects the +The default value is emacs. +The value of the editing-mode variable also affects the default keymap. -

- -

keyseq-timeout -
Specifies the duration Readline will wait for a character when reading an +

+
+
keyseq-timeout
+

Specifies the duration Readline will wait for a character when reading an ambiguous key sequence (one that can form a complete key sequence using the input read so far, or can take additional input to complete a longer key sequence). If no input is received within the timeout, Readline will use the shorter but complete key sequence. Readline uses this value to determine whether or not input is -available on the current input source (rl_instream by default). +available on the current input source (rl_instream by default). The value is specified in milliseconds, so a value of 1000 means that Readline will wait one second for additional input. If this variable is set to a value less than or equal to zero, or to a non-numeric value, Readline will wait until another key is pressed to decide which key sequence to complete. -The default value is 500. -

- -

mark-directories -
If set to `on', completed directory names have a slash -appended. The default is `on'. -

- -

mark-modified-lines -
-This variable, when set to `on', causes Readline to display an -asterisk (`*') at the start of history lines which have been modified. -This variable is `off' by default. -

- -

mark-symlinked-directories -
-If set to `on', completed names which are symbolic links +The default value is 500. +

+
+
mark-directories
+

If set to ‘on’, completed directory names have a slash +appended. The default is ‘on’. +

+
+
mark-modified-lines
+

This variable, when set to ‘on’, causes Readline to display an +asterisk (‘*’) at the start of history lines which have been modified. +This variable is ‘off’ by default. +

+
+
mark-symlinked-directories
+

If set to ‘on’, completed names which are symbolic links to directories have a slash appended (subject to the value of -mark-directories). -The default is `off'. -

- -

match-hidden-files -
-This variable, when set to `on', causes Readline to match files whose -names begin with a `.' (hidden files) when performing filename +mark-directories). +The default is ‘off’. +

+
+
match-hidden-files
+

This variable, when set to ‘on’, causes Readline to match files whose +names begin with a ‘.’ (hidden files) when performing filename completion. -If set to `off', the leading `.' must be +If set to ‘off’, the leading ‘.’ must be supplied by the user in the filename to be completed. -This variable is `on' by default. -

- -

menu-complete-display-prefix -
-If set to `on', menu completion displays the common prefix of the +This variable is ‘on’ by default. +

+
+
menu-complete-display-prefix
+

If set to ‘on’, menu completion displays the common prefix of the list of possible completions (which may be empty) before cycling through -the list. The default is `off'. -

- -

output-meta -
-If set to `on', Readline will display characters with the +the list. The default is ‘off’. +

+
+
output-meta
+

If set to ‘on’, Readline will display characters with the eighth bit set directly rather than as a meta-prefixed escape sequence. -The default is `off', but Readline will set it to `on' if the +The default is ‘off’, but Readline will set it to ‘on’ if the locale contains eight-bit characters. -

- -

page-completions -
-If set to `on', Readline uses an internal more-like pager +This variable is dependent on the LC_CTYPE locale category, and +may change if the locale is changed. +

+
+
page-completions
+

If set to ‘on’, Readline uses an internal more-like pager to display a screenful of possible completions at a time. -This variable is `on' by default. -

- -

print-completions-horizontally -
If set to `on', Readline will display completions with matches +This variable is ‘on’ by default. +

+
+
print-completions-horizontally
+

If set to ‘on’, Readline will display completions with matches sorted horizontally in alphabetical order, rather than down the screen. -The default is `off'. -

- -

revert-all-at-newline -
-If set to `on', Readline will undo all changes to history lines -before returning when accept-line is executed. By default, +The default is ‘off’. +

+
+
revert-all-at-newline
+

If set to ‘on’, Readline will undo all changes to history lines +before returning when accept-line is executed. By default, history lines may be modified and retain individual undo lists across -calls to readline. The default is `off'. -

- -

show-all-if-ambiguous -
-This alters the default behavior of the completion functions. If -set to `on', +calls to readline(). The default is ‘off’. +

+
+
show-all-if-ambiguous
+

This alters the default behavior of the completion functions. If +set to ‘on’, words which have more than one possible completion cause the matches to be listed immediately instead of ringing the bell. -The default value is `off'. -

- -

show-all-if-unmodified -
-This alters the default behavior of the completion functions in -a fashion similar to show-all-if-ambiguous. -If set to `on', +The default value is ‘off’. +

+
+
show-all-if-unmodified
+

This alters the default behavior of the completion functions in +a fashion similar to show-all-if-ambiguous. +If set to ‘on’, words which have more than one possible completion without any -possible partial completion (the possible completions don't share +possible partial completion (the possible completions don’t share a common prefix) cause the matches to be listed immediately instead of ringing the bell. -The default value is `off'. -

- -

show-mode-in-prompt -
-If set to `on', add a string to the beginning of the prompt +The default value is ‘off’. +

+
+
show-mode-in-prompt
+

If set to ‘on’, add a string to the beginning of the prompt indicating the editing mode: emacs, vi command, or vi insertion. -The mode strings are user-settable (e.g., emacs-mode-string). -The default value is `off'. -

- -

skip-completed-text -
-If set to `on', this alters the default completion behavior when -inserting a single match into the line. It's only active when -performing completion in the middle of a word. If enabled, readline +The mode strings are user-settable (e.g., emacs-mode-string). +The default value is ‘off’. +

+
+
skip-completed-text
+

If set to ‘on’, this alters the default completion behavior when +inserting a single match into the line. It’s only active when +performing completion in the middle of a word. If enabled, Readline does not insert characters from the completion that match characters after point in the word being completed, so portions of the word following the cursor are not duplicated. For instance, if this is enabled, attempting completion when the cursor -is after the `e' in `Makefile' will result in `Makefile' -rather than `Makefilefile', assuming there is a single possible +is after the ‘e’ in ‘Makefile’ will result in ‘Makefile’ +rather than ‘Makefilefile’, assuming there is a single possible completion. -The default value is `off'. -

- -

vi-cmd-mode-string -
-If the show-mode-in-prompt variable is enabled, +The default value is ‘off’. +

+
+
vi-cmd-mode-string
+

If the show-mode-in-prompt variable is enabled, this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in command mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. -Use the `\1' and `\2' escapes to begin and end sequences of +Use the ‘\1’ and ‘\2’ escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. -The default is `(cmd)'. -

- -

vi-ins-mode-string -
-If the show-mode-in-prompt variable is enabled, +The default is ‘(cmd)’. +

+
+
vi-ins-mode-string
+

If the show-mode-in-prompt variable is enabled, this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in insertion mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. -Use the `\1' and `\2' escapes to begin and end sequences of +Use the ‘\1’ and ‘\2’ escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. -The default is `(ins)'. -

- -

visible-stats -
-If set to `on', a character denoting a file's type +The default is ‘(ins)’. +

+
+
visible-stats
+

If set to ‘on’, a character denoting a file’s type is appended to the filename when listing possible -completions. The default is `off'. -

- -

-

- -

Key Bindings -
The syntax for controlling key bindings in the init file is +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 +

+

Once you know the name of the command, simply place on a line in the init file the name of the key you wish to bind the command to, a colon, and then the name of the command. -There can be no space between the key name and the colon -- that will be +There can be no space between the key name and the colon – that will be interpreted as part of the key name. The name of the key can be expressed in different ways, depending on what you find most comfortable. -

- -In addition to command names, readline allows keys to be bound -to a string that is inserted when the key is pressed (a macro). -

- -

-
keyname: function-name or macro -
keyname is the name of a key spelled out in English. For example: -
 
Control-u: universal-argument
+

+

In addition to command names, Readline allows keys to be bound +to a string that is inserted when the key is pressed (a macro). +

+ +
+
keynamefunction-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"
-

+Control-o: "> output" +

-In the example above, C-u is bound to the function -universal-argument, -M-DEL is bound to the function backward-kill-word, and -C-o is bound to run the macro +

In the example above, C-u is bound to the function +universal-argument, +M-DEL is bound to the function backward-kill-word, and +C-o is bound to run the macro expressed on the right hand side (that is, to insert the text -`> output' into the line). -

- -A number of symbolic character names are recognized while +‘> output’ into the line). +

+

A number of symbolic character names are recognized while processing this key binding syntax: -DEL, -ESC, -ESCAPE, -LFD, -NEWLINE, -RET, -RETURN, -RUBOUT, -SPACE, -SPC, +DEL, +ESC, +ESCAPE, +LFD, +NEWLINE, +RET, +RETURN, +RUBOUT, +SPACE, +SPC, and -TAB. -

- -

"keyseq": function-name or macro -
keyseq differs from keyname above in that strings +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 +the key sequence in double quotes. Some GNU Emacs style key escapes can be used, as in the following example, but the special character names are not recognized. -

- -
 
"\C-u": universal-argument
-"\C-x\C-r": re-read-init-file
-"\e[11~": "Function Key 1"
-

- -In the above example, C-u is again bound to the function -universal-argument (just as it was in the first example), -`C-x C-r' is bound to the function re-read-init-file, -and `ESC [ 1 1 ~' is bound to insert -the text `Function Key 1'. -

- - -

- -The following GNU Emacs style escape sequences are available when +

+
+
"\C-u": universal-argument
+"\C-x\C-r": re-read-init-file
+"\e[11~": "Function Key 1"
+
+ +

In the above example, C-u is again bound to the function +universal-argument (just as it was in the first example), +‘C-x C-r’ is bound to the function re-read-init-file, +and ‘ESC [ 1 1 ~’ is bound to insert +the text ‘Function Key 1’. +

+
+ + +

The following GNU Emacs style escape sequences are available when specifying key sequences: -

- -

-
\C- -
control prefix -
\M- -
meta prefix -
\e -
an escape character -
\\ -
backslash -
\" -
", a double quotation mark -
\' -
', a single quote or apostrophe -
-

- -In addition to the GNU Emacs style escape sequences, a second +

+
+
\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 +

+
+
\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 +

+
\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 +

When entering the text of a macro, single or double quotes must be used to indicate a macro definition. Unquoted text is assumed to be a function name. In the macro body, the backslash escapes described above are expanded. Backslash will quote any other character in the macro text, -including `"' and `''. -For example, the following binding will make `C-x \' -insert a single `\' into the line: -
 
"\C-x\\": "\\"
-

- - -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.3.2 Conditional Init Constructs

- -

- -Readline implements a facility similar in spirit to the conditional +including ‘"’ and ‘'’. +For example, the following binding will make ‘C-x \’ +insert a single ‘\’ into the line: +

+
"\C-x\\": "\\"
+
+ + + + +
+
+
+ +

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 +

+
+
$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, after any comparison operator, extends to the end of the line; unless otherwise noted, 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. +

+
+
mode
+

The mode= form of the $if directive is used to test +whether Readline is in emacs or vi mode. This may be used in conjunction -with the `set keymap' command, for instance, to set bindings in -the emacs-standard and emacs-ctlx keymaps only if -Readline is starting out in emacs mode. -

- -

term -
The term= form may be used to include terminal-specific +with the ‘set keymap’ command, for instance, to set bindings in +the emacs-standard and emacs-ctlx keymaps only if +Readline is starting out in emacs mode. +

+
+
term
+

The term= form may be used to include terminal-specific key bindings, perhaps to bind the key sequences output by the -terminal's function keys. The word on the right side of the -`=' is tested against both the full name of the terminal and -the portion of the terminal name before the first `-'. This -allows sun to match both sun and sun-cmd, +terminal’s function keys. The word on the right side of the +‘=’ is tested against both the full name of the terminal and +the portion of the terminal name before the first ‘-’. This +allows sun to match both sun and sun-cmd, for instance. -

- -

version -
The version test may be used to perform comparisons against +

+
+
version
+

The version test may be used to perform comparisons against specific Readline versions. -The version expands to the current Readline version. +The version expands to the current Readline version. The set of comparison operators includes -`=' (and `=='), `!=', `<=', `>=', `<', -and `>'. +‘=’ (and ‘==’), ‘!=’, ‘<=’, ‘>=’, ‘<’, +and ‘>’. The version number supplied on the right side of the operator consists of a major version number, an optional decimal point, and an optional -minor version (e.g., `7.1'). If the minor version is omitted, it -is assumed to be `0'. -The operator may be separated from the string version and +minor version (e.g., ‘7.1’). If the minor version is omitted, it +is assumed to be ‘0’. +The operator may be separated from the string version and from the version number argument by whitespace. The following example sets a variable if the Readline version being used is 7.0 or newer: -
 
$if version >= 7.0
+

+
$if version >= 7.0
 set show-mode-in-prompt on
 $endif
-

+

-
application -
The application construct is used to include +
+
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 +library sets the application name, and you can test for a particular value. This could be used to bind key sequences to functions useful for a specific program. For instance, the following command adds a key sequence that quotes the current or previous word in Bash: -
 
$if Bash
+

+
$if Bash
 # Quote the current or previous word
-"\C-xq": "\eb\"\ef\""
+"\C-xq": "\eb\"\ef\""
 $endif
-

+

-
variable -
The variable construct provides simple equality tests for Readline +
+
variable
+

The variable construct provides simple equality tests for Readline variables and values. -The permitted comparison operators are `=', `==', and `!='. +The permitted comparison operators are ‘=’, ‘==’, and ‘!=’. The variable name must be separated from the comparison operator by whitespace; the operator may be separated from the value on the right hand side by whitespace. Both string and boolean variables may be tested. Boolean variables must be -tested against the values on and off. -The following example is equivalent to the mode=emacs test described +tested against the values on and off. +The following example is equivalent to the mode=emacs test described above: -
 
$if editing-mode == emacs
+

+
$if editing-mode == emacs
 set show-mode-in-prompt on
 $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 +
+ + + + +
$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 +

+
+
$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
-
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.3.3 Sample Init File

- -

- -Here is an example of an inputrc file. This illustrates key +For example, the following directive reads from /etc/inputrc: +

+
$include /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
+

+
+
# This file controls the behaviour of line input editing for
 # programs that use the GNU Readline library.  Existing
 # programs include FTP, Bash, and GDB.
 #
@@ -1291,31 +1290,31 @@ Meta-Control-h:	backward-kill-word	Text after the function name is ignored
 #
 # Arrow keys in keypad mode
 #
-#"\M-OD":        backward-char
-#"\M-OC":        forward-char
-#"\M-OA":        previous-history
-#"\M-OB":        next-history
+#"\M-OD":        backward-char
+#"\M-OC":        forward-char
+#"\M-OA":        previous-history
+#"\M-OB":        next-history
 #
 # Arrow keys in ANSI mode
 #
-"\M-[D":        backward-char
-"\M-[C":        forward-char
-"\M-[A":        previous-history
-"\M-[B":        next-history
+"\M-[D":        backward-char
+"\M-[C":        forward-char
+"\M-[A":        previous-history
+"\M-[B":        next-history
 #
 # Arrow keys in 8 bit keypad mode
 #
-#"\M-\C-OD":       backward-char
-#"\M-\C-OC":       forward-char
-#"\M-\C-OA":       previous-history
-#"\M-\C-OB":       next-history
+#"\M-\C-OD":       backward-char
+#"\M-\C-OC":       forward-char
+#"\M-\C-OA":       previous-history
+#"\M-\C-OB":       next-history
 #
 # Arrow keys in 8 bit ANSI mode
 #
-#"\M-\C-[D":       backward-char
-#"\M-\C-[C":       forward-char
-#"\M-\C-[A":       previous-history
-#"\M-\C-[B":       next-history
+#"\M-\C-[D":       backward-char
+#"\M-\C-[C":       forward-char
+#"\M-\C-[A":       previous-history
+#"\M-\C-[B":       next-history
 
 C-q: quoted-insert
 
@@ -1327,20 +1326,20 @@ TAB: complete
 # Macros that are convenient for shell interaction
 $if Bash
 # edit the path
-"\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
+"\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
 # prepare to type a quoted word --
 # insert open and close double quotes
 # and move to just after the open quote
-"\C-x\"": "\"\"\C-b"
+"\C-x\"": "\"\"\C-b"
 # insert a backslash (testing backslash escapes
 # in sequences and macros)
-"\C-x\\": "\\"
+"\C-x\\": "\\"
 # Quote the current or previous word
-"\C-xq": "\eb\"\ef\""
+"\C-xq": "\eb\"\ef\""
 # Add a binding to refresh the line, which is unbound
-"\C-xr": redraw-current-line
+"\C-xr": redraw-current-line
 # Edit variable on current line.
-"\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
+"\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
 $endif
 
 # use a visible bell if one is available
@@ -1363,647 +1362,473 @@ set completion-query-items 150
 
 # For FTP
 $if Ftp
-"\C-xg": "get \M-?"
-"\C-xt": "put \M-?"
-"\M-.": yank-last-arg
+"\C-xg": "get \M-?"
+"\C-xt": "put \M-?"
+"\M-.": yank-last-arg
 $endif
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.4 Bindable Readline Commands

- -

- -

- - - - - - - - -
1.4.1 Commands For Moving  Moving about the line.
1.4.2 Commands For Manipulating The History  Getting at previous lines.
1.4.3 Commands For Changing Text  Commands for changing text.
1.4.4 Killing And Yanking  Commands for killing and yanking.
1.4.5 Specifying Numeric Arguments  Specifying numeric arguments, repeat counts.
1.4.6 Letting Readline Type For You  Getting Readline to do the typing for you.
1.4.7 Keyboard Macros  Saving and re-executing typed characters
1.4.8 Some Miscellaneous Commands  Other miscellaneous commands.
-

- -This section describes Readline commands that may be bound to key +

+ +
+ + +
+ +

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. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

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. +

+

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. +

+
+
backward-word (M-b)
+

Move back to the start of the current or previous word. Words are composed of letters and digits. -

+

- -
previous-screen-line () -
-Attempt to move point to the same physical screen column on the previous +
+
previous-screen-line ()
+

Attempt to move point to the same physical screen column on the previous physical screen line. This will not have the desired effect if the current Readline line does not take up more than one physical line or if point is not greater than the length of the prompt plus the screen width. -

- - -

next-screen-line () -
-Attempt to move point to the same physical screen column on the next +

+
+
next-screen-line ()
+

Attempt to move point to the same physical screen column on the next physical screen line. This will not have the desired effect if the current Readline line does not take up more than one physical line or if the length of the current Readline line is not greater than the length of the prompt plus the screen width. -

- - -

clear-display (M-C-l) -
-Clear the screen and, if possible, the terminal's scrollback buffer, +

+
+
clear-display (M-C-l)
+

Clear the screen and, if possible, the terminal’s scrollback buffer, then redraw the current line, leaving the current line at the top of the screen. -

- - -

clear-screen (C-l) -
-Clear the screen, +

+
+
clear-screen (C-l)
+

Clear the screen, then 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. -

- -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.4.2 Commands For Manipulating The History

- -

- -

- -
accept-line (Newline or Return) -
-Accept the line regardless of where the cursor is. +

+
+
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 non-empty, it may be added to the history list for future recall with -add_history(). +add_history(). If this line is a modified history line, the history line is restored to its original state. -

- - -

previous-history (C-p) -
-Move `back' through the history list, fetching the previous command. -

- - -

next-history (C-n) -
-Move `forward' through the history list, fetching the next command. -

- - -

beginning-of-history (M-<) -
-Move to the first line in the history. -

- - -

end-of-history (M->) -
-Move to the end of the input history, i.e., the line currently +

+
+
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 +

+
+
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. This command sets the region to the matched text and activates the mark. -

- - -

forward-search-history (C-s) -
-Search forward starting at the current line and moving `down' through +

+
+
forward-search-history (C-s)
+

Search forward starting at the current line and moving ‘down’ through the history as necessary. This is an incremental search. This command sets the region to the matched text and activates the mark. -

- - -

non-incremental-reverse-search-history (M-p) -
-Search backward starting at the current line and moving `up' +

+
+
non-incremental-reverse-search-history (M-p)
+

Search backward starting at the current line and moving ‘up’ through the history as necessary using a non-incremental search for a string supplied by the user. The search string may match anywhere in a history line. -

- - -

non-incremental-forward-search-history (M-n) -
-Search forward starting at the current line and moving `down' +

+
+
non-incremental-forward-search-history (M-n)
+

Search forward starting at the current line and moving ‘down’ through the history as necessary using a non-incremental search for a string supplied by the user. The search string may match anywhere in a history line. -

- - -

history-search-forward () -
-Search forward through the history for the string of characters +

+
+
history-search-forward ()
+

Search forward through the history for the string of characters between the start of the current line and the point. The search string must match at the beginning of a history line. This is a non-incremental search. By default, this command is unbound. -

- - -

history-search-backward () -
-Search backward through the history for the string of characters +

+
+
history-search-backward ()
+

Search backward through the history for the string of characters between the start of the current line and the point. The search string must match at the beginning of a history line. This is a non-incremental search. By default, this command is unbound. -

- - -

history-substring-search-forward () -
-Search forward through the history for the string of characters +

+
+
history-substring-search-forward ()
+

Search forward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. This is a non-incremental search. By default, this command is unbound. -

- - -

history-substring-search-backward () -
-Search backward through the history for the string of characters +

+
+
history-substring-search-backward ()
+

Search backward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. This is a non-incremental search. By default, this command is unbound. -

- - -

yank-nth-arg (M-C-y) -
-Insert the first argument to the previous command (usually +

+
+
yank-nth-arg (M-C-y)
+

Insert the first argument to the previous command (usually the second word on the previous line) at point. -With an argument n, -insert the nth word from the previous command (the words +With an argument n, +insert the nth word from the previous command (the words in the previous command begin with word 0). A negative argument -inserts the nth word from the end of the previous command. -Once the argument n is computed, the argument is extracted -as if the `!n' history expansion had been specified. -

- - -

yank-last-arg (M-. or M-_) -
-Insert last argument to the previous command (the last word of the +inserts the nth word from the end of the previous command. +Once the argument n is computed, the argument is extracted +as if the ‘!n’ history expansion had been specified. +

+
+
yank-last-arg (M-. or M-_)
+

Insert last argument to the previous command (the last word of the previous history entry). -With a numeric argument, behave exactly like yank-nth-arg. -Successive calls to yank-last-arg move back through the history +With a numeric argument, behave exactly like yank-nth-arg. +Successive calls to yank-last-arg move back through the history list, inserting the last word (or the word specified by the argument to the first call) of each line in turn. Any numeric argument supplied to these successive calls determines the direction to move through the history. A negative argument switches the direction through the history (back or forward). The history expansion facilities are used to extract the last argument, -as if the `!$' history expansion had been specified. -

- - -

operate-and-get-next (C-o) -
-Accept the current line for return to the calling application as if a +as if the ‘!$’ history expansion had been specified. +

+
+
operate-and-get-next (C-o)
+

Accept the current line for return to the calling application as if a newline had been entered, and fetch the next line relative to the current line from the history for editing. A numeric argument, if supplied, specifies the history entry to use instead of the current line. -

- -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.4.3 Commands For Changing Text

- -

- -

- - -
end-of-file (usually C-d) -
-The character indicating end-of-file as set, for example, by -stty. If this character is read when there are no characters +

+
+
fetch-history ()
+

With a numeric argument, fetch that entry from the history list +and make it the current line. +Without an argument, move back to the first entry in the history list. +

+
+
+ +
+
+
+ +

1.4.3 Commands For Changing Text

+ +
+
end-of-file (usually C-d)
+

The character indicating end-of-file as set, for example, by +stty. If this character is read when there are no characters on the line, and point is at the beginning of the line, Readline -interprets it as the end of input and returns EOF. -

- - -

delete-char (C-d) -
-Delete the character at point. If this function is bound to the -same character as the tty EOF character, as C-d +interprets it as the end of input and returns EOF. +

+
+
delete-char (C-d)
+

Delete the character at point. If this function is bound to the +same character as the tty EOF character, as C-d commonly is, see above for the effects. -

- - -

backward-delete-char (Rubout) -
-Delete the character behind the cursor. A numeric argument means +

+
+
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 +

+
+
forward-backward-delete-char ()
+

Delete the character under the cursor, unless the cursor is at the end of the line, in which case the character behind the cursor is deleted. By default, this is not bound to a key. -

- - -

quoted-insert (C-q or C-v) -
-Add the next character typed to the line verbatim. This is -how to insert key sequences like C-q, for example. -

- - -

tab-insert (M-TAB) -
-Insert a tab character. -

- - -

self-insert (a, b, A, 1, !, ...) -
-Insert yourself. -

- - -

bracketed-paste-begin () -
-This function is intended to be bound to the "bracketed paste" escape +

+
+
quoted-insert (C-q or C-v)
+

Add the next character typed to the line verbatim. This is +how to insert key sequences like C-q, for example. +

+
+
tab-insert (M-TAB)
+

Insert a tab character. +

+
+
self-insert (a, b, A, 1, !, …)
+

Insert yourself. +

+
+
bracketed-paste-begin ()
+

This function is intended to be bound to the "bracketed paste" escape sequence sent by some terminals, and such a binding is assigned by default. It allows Readline to insert the pasted text as a single unit without treating each character as if it had been read from the keyboard. The characters -are inserted as if each one was bound to self-insert instead of +are inserted as if each one was bound to self-insert instead of executing any editing commands. -

- -Bracketed paste sets the region (the characters between point and the mark) -to the inserted text. It uses the concept of an active mark: when the -mark is active, Readline redisplay uses the terminal's standout mode to +

+

Bracketed paste sets the region (the characters between point and the mark) +to the inserted text. It uses the concept of an active mark: when the +mark is active, Readline redisplay uses the terminal’s standout mode to denote the region. -

- - -

transpose-chars (C-t) -
-Drag the character before the cursor forward over +

+
+
transpose-chars (C-t)
+

Drag the character before the cursor forward over the character at the cursor, moving the cursor forward as well. If the insertion point is at the end of the line, then this transposes the last two characters of the line. Negative arguments have no effect. -

- - -

transpose-words (M-t) -
-Drag the word before point past the word after point, +

+
+
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, +

+
+
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, +

+
+
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-word (M-c)
+

Capitalize the current (or following) word. With a negative argument, capitalize the previous word, but do not move the cursor. -

- - -

overwrite-mode () -
-Toggle overwrite mode. With an explicit positive numeric argument, +

+
+
overwrite-mode ()
+

Toggle overwrite mode. With an explicit positive numeric argument, switches to overwrite mode. With an explicit non-positive numeric argument, switches to insert mode. This command affects only -emacs mode; vi mode does overwrite differently. -Each call to readline() starts in insert mode. -

- -In overwrite mode, characters bound to self-insert replace +emacs mode; vi mode does overwrite differently. +Each call to readline() starts in insert mode. +

+

In overwrite mode, characters bound to self-insert replace the text at point rather than pushing the text to the right. -Characters bound to backward-delete-char replace the character +Characters bound to backward-delete-char replace the character before point with a space. -

- -By default, this command is unbound. -

- -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.4.4 Killing And Yanking

- -

- -

- - -
kill-line (C-k) -
-Kill the text from point to the end of the line. +

+

By default, this command is unbound. +

+
+
+ +
+
+
+ +

1.4.4 Killing And Yanking

+ +
+
kill-line (C-k)
+

Kill the text from point to the end of the line. With a negative numeric argument, kill backward from the cursor to the beginning of the current line. -

- - -

backward-kill-line (C-x Rubout) -
-Kill backward from the cursor to the beginning of the current line. +

+
+
backward-kill-line (C-x Rubout)
+

Kill backward from the cursor to the beginning of the current line. With a negative numeric argument, kill forward from the cursor to the end of the current line. -

- - -

unix-line-discard (C-u) -
-Kill backward from the cursor to the beginning of the current line. -

- - -

kill-whole-line () -
-Kill all characters on the current line, no matter where point is. +

+
+
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 +

+
+
kill-word (M-d)
+

Kill from point to the end of the current word, or if between words, to the end of the next word. -Word boundaries are the same as forward-word. -

- - -

backward-kill-word (M-DEL) -
-Kill the word behind point. -Word boundaries are the same as backward-word. -

- - -

shell-transpose-words (M-C-t) -
-Drag the word before point past the word after point, +Word boundaries are the same as forward-word. +

+
+
backward-kill-word (M-DEL)
+

Kill the word behind point. +Word boundaries are the same as backward-word. +

+ +
+
shell-transpose-words (M-C-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. -Word boundaries are the same as shell-forward-word and -shell-backward-word. -

- - -

unix-word-rubout (C-w) -
-Kill the word behind point, using white space as a word boundary. +Word boundaries are the same as shell-forward-word and +shell-backward-word. +

+
+
unix-word-rubout (C-w)
+

Kill the word behind point, using white space as a word boundary. The killed text is saved on the kill-ring. -

- - -

unix-filename-rubout () -
-Kill the word behind point, using white space and the slash character +

+
+
unix-filename-rubout ()
+

Kill the word behind point, using white space and the slash character as the word boundaries. The killed text is saved on the kill-ring. -

- - -

delete-horizontal-space () -
-Delete all spaces and tabs around point. By default, this is unbound. -

- - -

kill-region () -
-Kill the text in the current region. +

+
+
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 +

+
+
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. +

+
+
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. +

+
+
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. -
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

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. +

+
+
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 leading minus sign, those digits define the argument. -If the command is followed by digits, executing universal-argument +If the command is followed by digits, executing universal-argument again ends the numeric argument, but is otherwise ignored. As a special case, if this command is immediately followed by a character that is neither a digit nor minus sign, the argument count @@ -2012,483 +1837,337 @@ The argument count is initially one, so executing this function the first time makes the argument count four, a second time makes the argument count sixteen, and so on. By default, this is not bound to a key. -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.4.6 Letting Readline Type For You

- -

- -

- -
complete (TAB) -
-Attempt to perform completion on the text before point. +

+
+ +
+
+
+ +

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. +

+
+
possible-completions (M-?)
+

List the possible completions of the text before point. When displaying completions, Readline sets the number of columns used -for display to the value of completion-display-width, the value of -the environment variable COLUMNS, or the screen width, in that order. -

- - -

insert-completions (M-*) -
-Insert all completions of the text before point that would have -been generated by possible-completions. -

- - -

menu-complete () -
-Similar to complete, but replaces the word to be completed +for display to the value of completion-display-width, the value of +the environment variable COLUMNS, or the screen width, in that order. +

+
+
insert-completions (M-*)
+

Insert all completions of the text before point that would have +been generated by possible-completions. +

+
+
menu-complete ()
+

Similar to complete, but replaces the word to be completed with a single match from the list of possible completions. -Repeated execution of menu-complete steps through the list +Repeated execution of menu-complete steps through the list of possible completions, inserting each match in turn. At the end of the list of completions, the bell is rung -(subject to the setting of bell-style) +(subject to the setting of bell-style) and the original text is restored. -An argument of n moves n positions forward in the list +An argument of n moves n positions forward in the list of matches; a negative argument may be used to move backward through the list. -This command is intended to be bound to TAB, but is unbound +This command is intended to be bound to TAB, but is unbound by default. -

- - -

menu-complete-backward () -
-Identical to menu-complete, but moves backward through the list -of possible completions, as if menu-complete had been given a +

+
+
menu-complete-backward ()
+

Identical to menu-complete, but moves backward through the list +of possible completions, as if menu-complete had been given a negative argument. -

- - -

delete-char-or-list () -
-Deletes the character under the cursor if not at the beginning or -end of the line (like delete-char). +

+
+
delete-char-or-list ()
+

Deletes the character under the cursor if not at the beginning or +end of the line (like delete-char). If at the end of the line, behaves identically to -possible-completions. +possible-completions. This command is unbound by default. -

- -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

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 +

+
+
+ +
+
+
+ +

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 +

+
+
call-last-kbd-macro (C-x e)
+

Re-execute the last keyboard macro defined, by making the characters in the macro appear as if typed at the keyboard. -

- - -

print-last-kbd-macro () -
-Print the last keboard macro defined in a format suitable for the -inputrc file. -

- -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.4.8 Some Miscellaneous Commands

- -
- - -
re-read-init-file (C-x C-r) -
-Read in the contents of the inputrc file, and incorporate +

+
+
print-last-kbd-macro ()
+

Print the last keyboard macro defined in a format suitable for the +inputrc file. +

+
+
+ +
+
+
+ +

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-lowercase-version (M-A, M-B, M-x, ...) -
-If the metafied character x is upper case, run the command +

+
+
abort (C-g)
+

Abort the current editing command and +ring the terminal’s bell (subject to the setting of +bell-style). +

+
+
do-lowercase-version (M-A, M-B, M-x, …)
+

If the metafied character x is upper case, run the command that is bound to the corresponding metafied lower case character. -The behavior is undefined if x is already lower case. -

- - -

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 +The behavior is undefined if x is already lower case. +

+
+
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 +

+
+
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 +

+
+
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 +

+
+
character-search (C-])
+

A character is read and point is moved to the next occurrence of that +character. A negative argument 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 argument searches for subsequent occurrences. -

- - -

skip-csi-sequence () -
-Read enough characters to consume a multi-key sequence such as those +

+
+
skip-csi-sequence ()
+

Read enough characters to consume a multi-key sequence such as those defined for keys like Home and End. Such sequences begin with a Control Sequence Indicator (CSI), usually ESC-[. If this sequence is -bound to "\e[", keys producing such sequences will have no effect -unless explicitly bound to a readline command, instead of inserting +bound to "\e[", keys producing such sequences will have no effect +unless explicitly bound to a Readline command, instead of inserting stray characters into the editing buffer. This is unbound by default, but usually bound to ESC-[. -

- - -

insert-comment (M-#) -
-Without a numeric argument, the value of the comment-begin +

+
+
insert-comment (M-#)
+

Without a numeric argument, the value of the comment-begin variable is inserted at the beginning of the current line. If a numeric argument is supplied, this command acts as a toggle: if the characters at the beginning of the line do not match the value -of comment-begin, the value is inserted, otherwise -the characters in comment-begin are deleted from the beginning of +of comment-begin, the value is inserted, otherwise +the characters in comment-begin are deleted from the beginning of the line. In either case, the line is accepted as if a newline had been typed. -

- - -

dump-functions () -
-Print all of the functions and their key bindings to the +

+
+
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 +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 +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. -

+of an inputrc file. This command is unbound by default. +

- -
emacs-editing-mode (C-e) -
-When in vi command mode, this causes a switch to emacs +
+
emacs-editing-mode (C-e)
+

When in vi command mode, this causes a switch to emacs editing mode. -

- - -

vi-editing-mode (M-C-j) -
-When in emacs editing mode, this causes a switch to vi +

+
+
vi-editing-mode (M-C-j)
+

When in emacs editing mode, this causes a switch to vi editing mode. -

- -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.5 Readline vi Mode

- -

- -While the Readline library does not have a full set of vi +

+ +
+
+ +
+
+ +
+ +

1.5 Readline vi Mode

+ +

While the Readline library does not have a full set of vi editing functions, it does contain enough to allow simple editing -of the line. The Readline vi mode behaves as specified in -the POSIX standard. -

- -In order to switch interactively between emacs and vi -editing modes, use the command M-C-j (bound to emacs-editing-mode -when in vi mode and to vi-editing-mode in emacs mode). -The Readline default is emacs mode. -

- -When you enter a line in vi mode, you are already placed in -`insertion' mode, as if you had typed an `i'. Pressing ESC -switches you into `command' mode, where you can edit the text of the -line with the standard vi movement keys, move to previous -history lines with `k' and subsequent lines with `j', and +of the line. The Readline vi mode behaves as specified in +the POSIX standard. +

+

In order to switch interactively between emacs and vi +editing modes, use the command M-C-j (bound to emacs-editing-mode +when in vi mode and to vi-editing-mode in emacs mode). +The Readline default is emacs mode. +

+

When you enter a line in vi mode, you are already placed in +‘insertion’ mode, as if you had typed an ‘i’. Pressing ESC +switches you into ‘command’ mode, where you can edit the text of the +line with the standard vi movement keys, move to previous +history lines with ‘k’ and subsequent lines with ‘j’, and so forth. -

- -This document describes the GNU Readline Library, a utility for aiding -in the consistency of user interface across discrete programs that need -to provide a command line interface. -

- -Copyright (C) 1988--2020 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. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2. Programming with GNU Readline

- -

- -This chapter describes the interface between the GNU Readline Library and +

+ + +
+
+ +
+ +

2 Programming with GNU Readline

+ +

This chapter describes the interface between the GNU Readline Library and other programs. If you are a programmer, and you wish to include the -features found in GNU Readline +features found in GNU Readline such as completion, line editing, and interactive history manipulation in your own programs, this section is for you. -

- -

- - - - - - -
2.1 Basic Behavior  Using the default behavior of Readline.
2.2 Custom Functions  Adding your own functions to Readline.
2.3 Readline Variables  Variables accessible to custom - functions.
2.4 Readline Convenience Functions  Functions which Readline supplies to - aid in writing your own custom - functions.
2.5 Readline Signal Handling  How Readline behaves when it receives signals.
2.6 Custom Completers  Supplanting or supplementing Readline's - completion functions.
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.1 Basic Behavior

- -

- -Many programs provide a command line interface, such as mail, -ftp, and sh. For such programs, the default behaviour of +

+ + +
+
+ +

2.1 Basic Behavior

+ +

Many programs provide a command line interface, such as mail, +ftp, and sh. For such programs, the default behaviour of Readline is sufficient. This section describes how to use Readline in the simplest way possible, perhaps to replace calls in your code to -gets() or fgets(). -

+gets() or fgets(). +

+ + - - -

- -The function readline() prints a prompt prompt +

The function readline() prints a prompt prompt and then reads and returns a single line of text from the user. -If prompt is NULL or the empty string, no prompt is displayed. -The line readline returns is allocated with malloc(); -the caller should free() the line when it has finished with it. -The declaration for readline in ANSI C is -

- -
 
char *readline (const char *prompt);
-

- -So, one might say -
 
char *line = readline ("Enter a line: ");
-
in order to read a line of text from the user. +If prompt is NULL or the empty string, no prompt is displayed. +The line readline returns is allocated with malloc(); +the caller should free() the line when it has finished with it. +The declaration for readline in ANSI C is +

+
+
char *readline (const char *prompt);
+
+ +

So, one might say +

+
char *line = readline ("Enter a line: ");
+
+

in order to read a line of text from the user. The line returned has the final newline removed, so only the text remains. -

- -If readline encounters an EOF while reading the line, and the -line is empty at that point, then (char *)NULL is returned. +

+

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. -

- -Readline performs some expansion on the prompt before it is -displayed on the screen. See the description of rl_expand_prompt -(see section 2.4.6 Redisplay) for additional details, especially if prompt +

+

Readline performs some expansion on the prompt before it is +displayed on the screen. See the description of rl_expand_prompt +(see Redisplay) for additional details, especially if prompt will contain characters that do not consume physical screen space when displayed. -

- -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 +

+

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 +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. */
+

+
+
/* A static variable for holding the line. */
 static char *line_read = (char *)NULL;
 
 /* Read a string, and return a pointer to it.
@@ -2505,225 +2184,156 @@ rl_gets ()
     }
 
   /* Get a line from the user. */
-  line_read = readline ("");
+  line_read = readline ("");
 
   /* If the line has any text in it,
      save it on the history. */
-  if (line_read && *line_read)
+  if (line_read && *line_read)
     add_history (line_read);
 
   return (line_read);
 }
-

+

-This function gives the user the default behaviour of TAB +

This function gives the user the default behaviour of TAB completion: completion on file names. If you do not want Readline to -complete on filenames, you can change the binding of the TAB key -with rl_bind_key(). -

- -
 
int rl_bind_key (int key, rl_command_func_t *function);
-

- -rl_bind_key() takes two arguments: key is the character that -you want to bind, and function is the address of the function to -call when key is pressed. Binding TAB to rl_insert() -makes TAB insert itself. -rl_bind_key() returns non-zero if key is not a valid +complete on filenames, you can change the binding of the TAB key +with rl_bind_key(). +

+
+
int rl_bind_key (int key, rl_command_func_t *function);
+
+ +

rl_bind_key() takes two arguments: key is the character that +you want to bind, and function is the address of the function to +call when key is pressed. Binding TAB to rl_insert() +makes TAB insert itself. +rl_bind_key() returns non-zero if key is not a valid ASCII character code (between 0 and 255). -

- -Thus, to disable the default TAB behavior, the following suffices: -
 
rl_bind_key ('\t', rl_insert);
-

- -This code should be executed once at the start of your program; you -might write a function called initialize_readline() which +

+

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). -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

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 +custom completers (see 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 programs. This section describes the various functions and variables defined within the Readline library which allow a user program to add customized functionality to Readline. -

- -Before declaring any functions that customize Readline's behavior, or +

+

Before declaring any functions that customize Readline’s behavior, or using any functionality Readline provides in other code, an -application writer should include the file <readline/readline.h> -in any file that uses Readline's features. Since some of the definitions -in readline.h use the stdio library, the file -<stdio.h> should be included before readline.h. -

- -readline.h defines a C preprocessor variable that should -be treated as an integer, RL_READLINE_VERSION, which may +application writer should include the file <readline/readline.h> +in any file that uses Readline’s features. Since some of the definitions +in readline.h use the stdio library, the file +<stdio.h> should be included before readline.h. +

+

readline.h defines a C preprocessor variable that should +be treated as an integer, RL_READLINE_VERSION, which may be used to conditionally compile application code depending on the installed Readline version. The value is a hexadecimal encoding of the major and minor version numbers of the library, -of the form 0xMMmm. MM is the two-digit major -version number; mm is the two-digit minor version number. +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  C declarations to make code readable.
2.2.2 Writing a New Function  Variables and calling conventions.
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.2.1 Readline Typedefs

- -

- -For readability, we declare a number of new object types, all pointers +RL_READLINE_VERSION would be 0x0402. +

+ + +
+
+ +

2.2.1 Readline Typedefs

+ +

For readability, we declare a number of new object types, all pointers to functions. -

- -The reason for declaring these new types is to make it easier to write +

+

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). +

+

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 **); -

- -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.2.2 Writing a New Function

- -

- -In order to write new functions for Readline, you need to know the +

+

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 -

- -
 
int foo (int count, int key)
-

- -where count is the numeric argument (or 1 if defaulted) and -key is the key that invoked this function. -

- -It is completely up to the function as to what should be done with the +

+

The calling sequence for a command foo looks like +

+
+
int foo (int count, int key)
+
+ +

where count is the numeric argument (or 1 if defaulted) and +key is the key that invoked this function. +

+

It is completely up to the function as to what should be done with the numeric argument. Some functions use it as a repeat count, some as a flag, and others to choose alternate behavior (refreshing the current line as opposed to refreshing the screen, for example). Some choose to @@ -2732,1831 +2342,1471 @@ function uses the numeric argument as a repeat count, it should be able to do something useful with both negative and positive arguments. At the very least, it should be aware that it can be passed a negative argument. -

- -A command function should return 0 if its action completes successfully, +

+

A command function should return 0 if its action completes successfully, and a value greater than zero if some error occurs. This is the convention obeyed by all of the builtin Readline bindable command functions. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

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 +

+
+
+
+
+ +

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 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 will set this variable when it has read a key sequence bound +to accept-line and is about to return the line to the caller. +

+ +
+
Variable: int rl_eof_found
+

Readline will set this variable when it has read an EOF character (e.g., the +stty ‘EOF’ character) on an empty line or encountered a read error and +is about to return a NULL line to the caller. +

+ +
+
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 +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; +
+
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 +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: char * rl_display_prompt -
The string displayed as the prompt. This is usually identical to -rl_prompt, but may be changed temporarily by functions that +

+ +
+
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 Redisplay) may +be used to modify the prompt string after calling readline(). +

+ +
+
Variable: char * rl_display_prompt
+

The string displayed as the prompt. This is usually identical to +rl_prompt, but may be changed temporarily by functions that use the prompt string as a message area, such as incremental search. -

-

- - -

-
Variable: int rl_already_prompted -
If an application wishes to display the prompt itself, rather than have -Readline do it the first time readline() is called, it should set +

+ +
+
Variable: int rl_already_prompted
+

If an application wishes to display the prompt itself, rather than have +Readline do it the first time readline() is called, it should set this variable to a non-zero value after displaying the prompt. -The prompt must also be passed as the argument to readline() so +The prompt must also be passed as the argument to readline() so the redisplay functions can update the display properly. The calling application is responsible for managing the value; Readline never sets it. -

-

- - -

-
Variable: const char * rl_library_version -
The version number of this revision of the library. -
-

- - -

-
Variable: int rl_readline_version -
An integer encoding the current version of the library. The encoding is -of the form 0xMMmm, where MM is the two-digit major version -number, and mm is the two-digit minor version number. -For example, for Readline-4.2, rl_readline_version would have the +

+ +
+
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 +
+
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 +

+ +
+
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. +
+
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. -If NULL, Readline defaults to stdin. -
-

- - -

-
Variable: FILE * rl_outstream -
The stdio stream to which Readline performs output. -If NULL, Readline defaults to stdout. -
-

- - -

-
Variable: int rl_prefer_env_winsize -
If non-zero, Readline gives values found in the LINES and -COLUMNS environment variables greater precedence than values fetched +(see Conditional Init Constructs). +

+ +
+
Variable: FILE * rl_instream
+

The stdio stream from which Readline reads input. +If NULL, Readline defaults to stdin. +

+ +
+
Variable: FILE * rl_outstream
+

The stdio stream to which Readline performs output. +If NULL, Readline defaults to stdout. +

+ +
+
Variable: int rl_prefer_env_winsize
+

If non-zero, Readline gives values found in the LINES and +COLUMNS environment variables greater precedence than values fetched from the kernel when computing the screen dimensions. -

-

+

- -
-
Variable: rl_command_func_t * rl_last_func -
The address of the last command function Readline executed. May be used to +
+
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 +

+ +
+
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 +
+
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 +
+
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). -In general, an application that sets rl_getc_function should consider -setting rl_input_available_hook as well. -

-

- - -

-
Variable: rl_hook_func_t * rl_signal_event_hook -
If non-zero, this is the address of a function to call if a read system +rl_getc, the default Readline character input function +(see Character Input). +In general, an application that sets rl_getc_function should consider +setting rl_input_available_hook as well. +

+ +
+
Variable: rl_hook_func_t * rl_signal_event_hook
+

If non-zero, this is the address of a function to call if a read system call is interrupted when Readline is reading terminal input. -

-

+

+ +
+
Variable: rl_hook_func_t * rl_timeout_event_hook
+

If non-zero, this is the address of a function to call if Readline times +out while reading input. +

- -
-
Variable: rl_hook_func_t * rl_input_available_hook -
If non-zero, Readline will use this function's return value when it needs +
+
Variable: rl_hook_func_t * rl_input_available_hook
+

If non-zero, Readline will use this function’s return value when it needs to determine whether or not there is available input on the current input source. -The default hook checks rl_instream; if an application is using a +The default hook checks rl_instream; if an application is using a different input source, it should set the hook appropriately. Readline queries for available input when implementing intra-key-sequence timeouts during input and incremental searches. This may use an application-specific timeout before returning a value; -Readline uses the value passed to rl_set_keyboard_input_timeout() -or the value of the user-settable keyseq-timeout variable. -This is designed for use by applications using Readline's callback interface -(see section 2.4.12 Alternate Interface), which may not use the traditional -read(2) and file descriptor interface, or other applications using +Readline uses the value passed to rl_set_keyboard_input_timeout() +or the value of the user-settable keyseq-timeout variable. +This is designed for use by applications using Readline’s callback interface +(see Alternate Interface), which may not use the traditional +read(2) and file descriptor interface, or other applications using a different input mechanism. If an application uses an input mechanism or hook that can potentially exceed -the value of keyseq-timeout, it should increase the timeout or set +the value of keyseq-timeout, it should increase the timeout or set this hook appropriately even when not using the callback interface. -In general, an application that sets rl_getc_function should consider -setting rl_input_available_hook as well. -

-

- - -

-
Variable: rl_voidfunc_t * rl_redisplay_function -
If non-zero, Readline will call indirectly through this pointer +In general, an application that sets rl_getc_function should consider +setting rl_input_available_hook as well. +

+ +
+
Variable: rl_voidfunc_t * rl_redisplay_function
+

If non-zero, Readline will call indirectly through this pointer to update the display with the current contents of the editing buffer. -By default, it is set to rl_redisplay, the default Readline -redisplay function (see section 2.4.6 Redisplay). -

-

- - -

-
Variable: rl_vintfunc_t * rl_prep_term_function -
If non-zero, Readline will call indirectly through this pointer +By default, it is set to rl_redisplay, the default Readline +redisplay function (see 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 +int flag that says whether or not to use eight-bit characters. +By default, this is set to rl_prep_terminal +(see 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 +rl_prep_term_function. +By default, this is set to rl_deprep_terminal +(see Terminal Management). +

+ +
+
Variable: Keymap rl_executing_keymap
+

This variable is set to the keymap (see 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 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_executing_key -
The key that caused the dispatch to the currently-executing Readline function. -
-

- - -

-
Variable: char * rl_executing_keyseq -
The full key sequence that caused the dispatch to the currently-executing +

+ +
+
Variable: char * rl_executing_macro
+

This variable is set to the text of any currently-executing macro. +

+ +
+
Variable: int rl_executing_key
+

The key that caused the dispatch to the currently-executing Readline function. +

+ +
+
Variable: char * rl_executing_keyseq
+

The full key sequence that caused the dispatch to the currently-executing Readline function. -

-

- - -

-
Variable: int rl_key_sequence_length -
The number of characters in rl_executing_keyseq. -
-

- - -

-
Variable: int rl_readline_state -
A variable with bit values that encapsulate the current Readline state. -A bit is set with the RL_SETSTATE macro, and unset with the -RL_UNSETSTATE macro. Use the RL_ISSTATE macro to test +

+ +
+
Variable: int rl_key_sequence_length
+

The number of characters in rl_executing_keyseq. +

+ +
+
Variable: int rl_readline_state
+

A variable with bit values that encapsulate the current Readline state. +A bit is set with the RL_SETSTATE macro, and unset with the +RL_UNSETSTATE macro. Use the RL_ISSTATE macro to test whether a particular state bit is set. Current state bits include: -

- -

-
RL_STATE_NONE -
Readline has not yet been called, nor has it begun to initialize. -
RL_STATE_INITIALIZING -
Readline is initializing its internal data structures. -
RL_STATE_INITIALIZED -
Readline has completed its initialization. -
RL_STATE_TERMPREPPED -
Readline has modified the terminal modes to do its own input and redisplay. -
RL_STATE_READCMD -
Readline is reading a command from the keyboard. -
RL_STATE_METANEXT -
Readline is reading more input after reading the meta-prefix character. -
RL_STATE_DISPATCHING -
Readline is dispatching to a command. -
RL_STATE_MOREINPUT -
Readline is reading more input while executing an editing command. -
RL_STATE_ISEARCH -
Readline is performing an incremental history search. -
RL_STATE_NSEARCH -
Readline is performing a non-incremental history search. -
RL_STATE_SEARCH -
Readline is searching backward or forward through the history for a string. -
RL_STATE_NUMERICARG -
Readline is reading a numeric argument. -
RL_STATE_MACROINPUT -
Readline is currently getting its input from a previously-defined keyboard +

+
+
RL_STATE_NONE
+

Readline has not yet been called, nor has it begun to initialize. +

+
RL_STATE_INITIALIZING
+

Readline is initializing its internal data structures. +

+
RL_STATE_INITIALIZED
+

Readline has completed its initialization. +

+
RL_STATE_TERMPREPPED
+

Readline has modified the terminal modes to do its own input and redisplay. +

+
RL_STATE_READCMD
+

Readline is reading a command from the keyboard. +

+
RL_STATE_METANEXT
+

Readline is reading more input after reading the meta-prefix character. +

+
RL_STATE_DISPATCHING
+

Readline is dispatching to a command. +

+
RL_STATE_MOREINPUT
+

Readline is reading more input while executing an editing command. +

+
RL_STATE_ISEARCH
+

Readline is performing an incremental history search. +

+
RL_STATE_NSEARCH
+

Readline is performing a non-incremental history search. +

+
RL_STATE_SEARCH
+

Readline is searching backward or forward through the history for a string. +

+
RL_STATE_NUMERICARG
+

Readline is reading a numeric argument. +

+
RL_STATE_MACROINPUT
+

Readline is currently getting its input from a previously-defined keyboard macro. -

RL_STATE_MACRODEF -
Readline is currently reading characters defining a keyboard macro. -
RL_STATE_OVERWRITE -
Readline is in overwrite mode. -
RL_STATE_COMPLETING -
Readline is performing word completion. -
RL_STATE_SIGHANDLER -
Readline is currently executing the readline signal handler. -
RL_STATE_UNDOING -
Readline is performing an undo. -
RL_STATE_INPUTPENDING -
Readline has input pending due to a call to rl_execute_next(). -
RL_STATE_TTYCSAVED -
Readline has saved the values of the terminal's special characters. -
RL_STATE_CALLBACK -
Readline is currently using the alternate (callback) interface -(see section 2.4.12 Alternate Interface). -
RL_STATE_VIMOTION -
Readline is reading the argument to a vi-mode "motion" command. -
RL_STATE_MULTIKEY -
Readline is reading a multiple-keystroke command. -
RL_STATE_VICMDONCE -
Readline has entered vi command (movement) mode at least one time during -the current call to readline(). -
RL_STATE_DONE -
Readline has read a key sequence bound to accept-line +

+
RL_STATE_MACRODEF
+

Readline is currently reading characters defining a keyboard macro. +

+
RL_STATE_OVERWRITE
+

Readline is in overwrite mode. +

+
RL_STATE_COMPLETING
+

Readline is performing word completion. +

+
RL_STATE_SIGHANDLER
+

Readline is currently executing the readline signal handler. +

+
RL_STATE_UNDOING
+

Readline is performing an undo. +

+
RL_STATE_INPUTPENDING
+

Readline has input pending due to a call to rl_execute_next(). +

+
RL_STATE_TTYCSAVED
+

Readline has saved the values of the terminal’s special characters. +

+
RL_STATE_CALLBACK
+

Readline is currently using the alternate (callback) interface +(see Alternate Interface). +

+
RL_STATE_VIMOTION
+

Readline is reading the argument to a vi-mode "motion" command. +

+
RL_STATE_MULTIKEY
+

Readline is reading a multiple-keystroke command. +

+
RL_STATE_VICMDONCE
+

Readline has entered vi command (movement) mode at least one time during +the current call to readline(). +

+
RL_STATE_DONE
+

Readline has read a key sequence bound to accept-line and is about to return the line to the caller. -

-

- -

-

- - -

-
Variable: int rl_explicit_arg -
Set to a non-zero value if an explicit numeric argument was specified by +

+
RL_STATE_TIMEOUT
+

Readline has timed out (it did not receive a line or specified number of +characters before the timeout duration specified by rl_set_timeout +elapsed) and is returning that status to the caller. +

+
RL_STATE_EOF
+

Readline has read an EOF character (e.g., the stty ‘EOF’ character) +or encountered a read error and is about to return a NULL 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 +
+
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 +

+ +
+
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. -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.4 Readline Convenience Functions

- -

- -

- - - - - - - - - - - - - - -
2.4.1 Naming a Function  How to give a function you write a name.
2.4.2 Selecting a Keymap  Making keymaps.
2.4.3 Binding Keys  Changing Keymaps.
2.4.4 Associating Function Names and Bindings  Translate function names to - key sequences.
2.4.5 Allowing Undoing  How to make your functions undoable.
2.4.6 Redisplay  Functions to control line display.
2.4.7 Modifying Text  Functions to modify rl_line_buffer.
2.4.8 Character Input  Functions to read keyboard input.
2.4.9 Terminal Management  Functions to manage terminal settings.
2.4.10 Utility Functions  Generally useful functions and hooks.
2.4.11 Miscellaneous Functions  Functions that don't fall into any category.
2.4.12 Alternate Interface  Using Readline in a `callback' fashion.
2.4.13 A Readline Example  An example Readline function.
2.4.14 Alternate Interface Example  An example program using the alternate interface.
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.4.1 Naming a Function

- -

- -The user can dynamically change the bindings of keys while using +

+ + +
+
+
+ +

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
-

+

+
+
Meta-Rubout:	backward-kill-word
+
-This binds the keystroke Meta-Rubout to the function -descriptively named backward-kill-word. You, as the +

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. +

+
+
Function: int rl_add_defun (const char *name, rl_command_func_t *function, int key)
+

Add name to the list of named functions. Make function be +the function that gets called. If key is not -1, then bind it to +function using rl_bind_key(). +

+ +

Using this function alone is sufficient for most applications. It is the recommended way to add a few functions to the default functions that Readline has built in. If you need to do something other than adding a function to Readline, you may need to use the underlying functions described below. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.4.2 Selecting a Keymap

- -

- -Key bindings take place on a keymap. The keymap is the +

+
+
+
+ +

2.4.2 Selecting a Keymap

+ +

Key bindings take place on a keymap. The keymap is the association between the keys that the user types and the functions that get run. You can make your own keymaps, copy existing keymaps, and tell Readline which keymap to use. -

- - -

-
Function: Keymap rl_make_bare_keymap (void) -
Returns a new, empty keymap. The space for the keymap is allocated with -malloc(); the caller should free it by calling -rl_free_keymap() when done. -
-

- - -

-
Function: Keymap rl_copy_keymap (Keymap map) -
Return a new keymap which is a copy of map. -
-

- - -

-
Function: Keymap rl_make_keymap (void) -
Return a new keymap with the printing characters bound to rl_insert, +

+
+
Function: Keymap rl_make_bare_keymap (void)
+

Returns a new, empty keymap. The space for the keymap is allocated with +malloc(); the caller should free it by calling +rl_free_keymap() when done. +

+ +
+
Function: Keymap rl_copy_keymap (Keymap map)
+

Return a new keymap which is a copy of map. +

+ +
+
Function: Keymap rl_make_keymap (void)
+

Return a new keymap with the printing characters bound to rl_insert, the lowercase Meta characters bound to run their equivalents, and the Meta digits bound to produce numeric arguments. -

-

- - -

-
Function: void rl_discard_keymap (Keymap keymap) -
Free the storage associated with the data in keymap. -The caller should free keymap. -
-

- - -

-
Function: void rl_free_keymap (Keymap keymap) -
Free all storage associated with keymap. This calls -rl_discard_keymap to free subordindate keymaps and macros. -
-

- - -

-
Function: int rl_empty_keymap (Keymap keymap) -
Return non-zero if there are no keys bound to functions in keymap; +

+ +
+
Function: void rl_discard_keymap (Keymap keymap)
+

Free the storage associated with the data in keymap. +The caller should free keymap. +

+ +
+
Function: void rl_free_keymap (Keymap keymap)
+

Free all storage associated with keymap. This calls +rl_discard_keymap to free subordindate keymaps and macros. +

+ +
+
Function: int rl_empty_keymap (Keymap keymap)
+

Return non-zero if there are no keys bound to functions in keymap; zero if there are any keys bound. -

-

+

-Readline has several internal keymaps. These functions allow you to +

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). -
-

- - -

-
Function: int rl_set_keymap_name (const char *name, Keymap keymap) -
Set the name of keymap. This name will then be "registered" and -available for use in a set keymap inputrc directive -see section 1.3 Readline Init File). -The name may not be one of Readline's builtin keymap names; -you may not add a different name for one of Readline's builtin keymaps. +

+
+
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 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 Readline Init File). +

+ +
+
Function: int rl_set_keymap_name (const char *name, Keymap keymap)
+

Set the name of keymap. This name will then be "registered" and +available for use in a set keymap inputrc directive +see Readline Init File). +The name may not be one of Readline’s builtin keymap names; +you may not add a different name for one of Readline’s builtin keymaps. You may replace the name associated with a given keymap by calling this -function more than once with the same keymap argument. -You may associate a registered name with a new keymap by calling this -function more than once with the same name argument. +function more than once with the same keymap argument. +You may associate a registered name with a new keymap by calling this +function more than once with the same name argument. There is no way to remove a named keymap once the name has been registered. -Readline will make a copy of name. -The return value is greater than zero unless name is one of -Readline's builtin keymap names or keymap is one of Readline's +Readline will make a copy of name. +The return value is greater than zero unless name is one of +Readline’s builtin keymap names or keymap is one of Readline’s builtin keymaps. -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.4.3 Binding Keys

- -

- -Key sequences are associate with functions through the keymap. -Readline has several internal keymaps: emacs_standard_keymap, -emacs_meta_keymap, emacs_ctlx_keymap, -vi_movement_keymap, and vi_insertion_keymap. -emacs_standard_keymap is the default, and the examples in +

+ +
+
+
+ +

2.4.3 Binding Keys

+ +

Key sequences are associate with functions through the keymap. +Readline has several internal keymaps: emacs_standard_keymap, +emacs_meta_keymap, emacs_ctlx_keymap, +vi_movement_keymap, and vi_insertion_keymap. +emacs_standard_keymap is the default, and the examples in this manual assume that. -

- -Since readline() installs a set of default key bindings the first +

+

Since readline() installs a set of default key bindings the first time it is called, there is always the danger that a custom binding -installed before the first call to readline() will be overridden. +installed before the first call to readline() will be overridden. An alternate mechanism is to install custom key bindings in an -initialization function assigned to the rl_startup_hook variable -(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_bind_key_if_unbound (int key, rl_command_func_t *function) -
Binds key to function if it is not already bound in the +initialization function assigned to the rl_startup_hook variable +(see Readline Variables). +

+

These functions manage key bindings. +

+
+
Function: int rl_bind_key (int key, rl_command_func_t *function)
+

Binds key to function in the currently active keymap. +Returns non-zero in the case of an invalid key. +

+ +
+
Function: int rl_bind_key_in_map (int key, rl_command_func_t *function, Keymap map)
+

Bind key to function in map. +Returns non-zero in the case of an invalid key. +

+ +
+
Function: int rl_bind_key_if_unbound (int key, rl_command_func_t *function)
+

Binds key to function if it is not already bound in the currently active keymap. -Returns non-zero in the case of an invalid key or if key is +Returns non-zero in the case of an invalid key or if key is already bound. -

-

- - -

-
Function: int rl_bind_key_if_unbound_in_map (int key, rl_command_func_t *function, Keymap map) -
Binds key to function if it is not already bound in map. -Returns non-zero in the case of an invalid key or if key is +

+ +
+
Function: int rl_bind_key_if_unbound_in_map (int key, rl_command_func_t *function, Keymap map)
+

Binds key to function if it is not already bound in map. +Returns non-zero in the case of an invalid key or if key is already bound. -

-

+

- -
-
Function: int rl_unbind_key (int key) -
Bind key to the null function in the currently active keymap. +
+
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. +
+
Function: int rl_unbind_key_in_map (int key, Keymap map)
+

Bind key to the null function in map. Returns non-zero in case of error. -

-

- - -

-
Function: int rl_unbind_function_in_map (rl_command_func_t *function, Keymap map) -
Unbind all keys that execute function in map. -
-

- - -

-
Function: int rl_unbind_command_in_map (const char *command, Keymap map) -
Unbind all keys that are bound to command in map. -
-

- - -

-
Function: int rl_bind_keyseq (const char *keyseq, rl_command_func_t *function) -
Bind the key sequence represented by the string keyseq to the function -function, beginning in the current keymap. +

+ +
+
Function: int rl_unbind_function_in_map (rl_command_func_t *function, Keymap map)
+

Unbind all keys that execute function in map. +

+ +
+
Function: int rl_unbind_command_in_map (const char *command, Keymap map)
+

Unbind all keys that are bound to command in map. +

+ +
+
Function: int rl_bind_keyseq (const char *keyseq, rl_command_func_t *function)
+

Bind the key sequence represented by the string keyseq to the function +function, beginning in the current keymap. This makes new keymaps as necessary. -The return value is non-zero if keyseq is invalid. -

-

- - -

-
Function: int rl_bind_keyseq_in_map (const char *keyseq, rl_command_func_t *function, Keymap map) -
Bind the key sequence represented by the string keyseq to the function -function. This makes new keymaps as necessary. -Initial bindings are performed in map. -The return value is non-zero if keyseq is invalid. -
-

- - -

-
Function: int rl_set_key (const char *keyseq, rl_command_func_t *function, Keymap map) -
Equivalent to rl_bind_keyseq_in_map. -
-

- - -

-
Function: int rl_bind_keyseq_if_unbound (const char *keyseq, rl_command_func_t *function) -
Binds keyseq to function if it is not already bound in the +The return value is non-zero if keyseq is invalid. +

+ +
+
Function: int rl_bind_keyseq_in_map (const char *keyseq, rl_command_func_t *function, Keymap map)
+

Bind the key sequence represented by the string keyseq to the function +function. This makes new keymaps as necessary. +Initial bindings are performed in map. +The return value is non-zero if keyseq is invalid. +

+ +
+
Function: int rl_set_key (const char *keyseq, rl_command_func_t *function, Keymap map)
+

Equivalent to rl_bind_keyseq_in_map. +

+ +
+
Function: int rl_bind_keyseq_if_unbound (const char *keyseq, rl_command_func_t *function)
+

Binds keyseq to function if it is not already bound in the currently active keymap. -Returns non-zero in the case of an invalid keyseq or if keyseq is +Returns non-zero in the case of an invalid keyseq or if keyseq is already bound. -

-

- - -

-
Function: int rl_bind_keyseq_if_unbound_in_map (const char *keyseq, rl_command_func_t *function, Keymap map) -
Binds keyseq to function if it is not already bound in map. -Returns non-zero in the case of an invalid keyseq or if keyseq is +

+ +
+
Function: int rl_bind_keyseq_if_unbound_in_map (const char *keyseq, rl_command_func_t *function, Keymap map)
+

Binds keyseq to function if it is not already bound in map. +Returns non-zero in the case of an invalid keyseq or if keyseq is already bound. -

-

- - -

-
Function: int rl_generic_bind (int type, const char *keyseq, char *data, Keymap map) -
Bind the key sequence represented by the string keyseq to the arbitrary -pointer data. type says what kind of data is pointed to by -data; this can be a function (ISFUNC), a macro -(ISMACR), or a keymap (ISKMAP). This makes new keymaps as -necessary. The initial keymap in which to do bindings is map. -
-

- - -

-
Function: int rl_parse_and_bind (char *line) -
Parse line as if it had been read from the inputrc file and +

+ +
+
Function: int rl_generic_bind (int type, const char *keyseq, char *data, Keymap map)
+

Bind the key sequence represented by the string keyseq to the arbitrary +pointer data. type says what kind of data is pointed to by +data; this can be a function (ISFUNC), a macro +(ISMACR), or a keymap (ISKMAP). This makes new keymaps as +necessary. The initial keymap in which to do bindings is map. +

+ +
+
Function: int rl_parse_and_bind (char *line)
+

Parse line as if it had been read from the inputrc file and perform any key bindings and variable assignments found -(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). -
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.4.4 Associating Function Names and Bindings

- -

- -These functions allow you to find out what keys invoke named functions +(see Readline Init File). +

+ +
+
Function: int rl_read_init_file (const char *filename)
+

Read keybindings and variable assignments from filename +(see 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). -It takes a "translated" key sequence and should not be used if the key sequence +

+
+
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). +It takes a "translated" key sequence and should not be used if the key sequence can include NUL. -

-

- - -

-
Function: rl_command_func_t * rl_function_of_keyseq_len (const char *keyseq, size_t len, Keymap map, int *type) -
Return the function invoked by keyseq of length len -in keymap map. Equivalent to rl_function_of_keyseq with the -addition of the len parameter. -It takes a "translated" key sequence and should be used if the key sequence +

+ +
+
Function: rl_command_func_t * rl_function_of_keyseq_len (const char *keyseq, size_t len, Keymap map, int *type)
+

Return the function invoked by keyseq of length len +in keymap map. Equivalent to rl_function_of_keyseq with the +addition of the len parameter. +It takes a "translated" key sequence and should be used if the key sequence can include NUL. -

-

- - -

-
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, +

+ +
+
Function: int rl_trim_arg_from_keyseq (const char *keyseq, size_t len, Keymap map)
+

If there is a numeric argument at the beginning of keyseq, possibly +including digits, return the index of the first character in keyseq +following the numeric argument. +This can be used to skip over the numeric argument (which is available as +rl_numeric_arg while traversing the key sequence that invoked the +current command. +

+ +
+
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 +inputrc file and re-read. +

+ +
+
Function: void rl_list_funmap_names (void)
+

Print the names of all bindable Readline functions to rl_outstream. +

+ +
+
Function: const char ** rl_funmap_names (void)
+

Return a NULL terminated array of known function names. The array is sorted. The array itself is allocated, but not the strings inside. You -should free the array, but not the pointers, using free or -rl_free when you are done. -

-

- - -

-
Function: int rl_add_funmap_entry (const char *name, rl_command_func_t *function) -
Add name to the list of bindable Readline command names, and make -function the function to be called when name is invoked. -
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.4.5 Allowing Undoing

- -

- -Supporting the undo command is a painless thing, and makes your +should free the array, but not the pointers, using free or +rl_free when you are done. +

+ +
+
Function: int rl_add_funmap_entry (const char *name, rl_command_func_t *function)
+

Add name to the list of bindable Readline command names, and make +function the function to be called when name is invoked. +

+ +
+
+
+ +

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 +

+

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 +

+

If you do multiple insertions or multiple deletions, or any combination of these operations, you should group them together into one operation. -This is done with rl_begin_undo_group() and -rl_end_undo_group(). -

- -The types of events that can be undone are: -

- -
 
enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END }; 
-

- -Notice that UNDO_DELETE means to insert some text, and -UNDO_INSERT means to delete some text. That is, the undo code -tells what to undo, not how to undo it. UNDO_BEGIN and -UNDO_END are tags added by rl_begin_undo_group() and -rl_end_undo_group(). -

- - -

-
Function: int rl_begin_undo_group (void) -
Begins saving undo information in a group construct. The undo -information usually comes from calls to rl_insert_text() and -rl_delete_text(), but could be the result of calls to -rl_add_undo(). -
-

- - -

-
Function: int rl_end_undo_group (void) -
Closes the current undo group started with rl_begin_undo_group -(). There should be one call to rl_end_undo_group() -for each call to rl_begin_undo_group(). -
-

- - -

-
Function: void rl_add_undo (enum undo_code what, int start, int end, char *text) -
Remember how to undo an event (according to what). The affected -text runs from start to end, and encompasses text. -
-

- - -

-
Function: void rl_free_undo_list (void) -
Free the existing undo list. -
-

- - -

-
Function: int rl_do_undo (void) -
Undo the first thing on the undo list. Returns 0 if there was +This is done with rl_begin_undo_group() and +rl_end_undo_group(). +

+

The types of events that can be undone are: +

+
+
enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END }; 
+
+ +

Notice that UNDO_DELETE means to insert some text, and +UNDO_INSERT means to delete some text. That is, the undo code +tells what to undo, not how to undo it. UNDO_BEGIN and +UNDO_END are tags added by rl_begin_undo_group() and +rl_end_undo_group(). +

+
+
Function: int rl_begin_undo_group (void)
+

Begins saving undo information in a group construct. The undo +information usually comes from calls to rl_insert_text() and +rl_delete_text(), but could be the result of calls to +rl_add_undo(). +

+ +
+
Function: int rl_end_undo_group (void)
+

Closes the current undo group started with rl_begin_undo_group +(). There should be one call to rl_end_undo_group() +for each call to rl_begin_undo_group(). +

+ +
+
Function: void rl_add_undo (enum undo_code what, int start, int end, char *text)
+

Remember how to undo an event (according to what). The affected +text runs from start to end, and encompasses text. +

+ +
+
Function: void rl_free_undo_list (void)
+

Free the existing undo list. +

+ +
+
Function: int rl_do_undo (void)
+

Undo the first thing on the undo list. Returns 0 if there was nothing to undo, non-zero if something was undone. -

-

+

-Finally, if you neither insert nor delete text, but directly modify the -existing text (e.g., change its case), call rl_modifying() +

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 +

+
+
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. -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

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 +

+ +
+
+
+ +

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, +
+
Function: int rl_on_new_line (void)
+

Tell the update functions that we have moved onto a new (empty) line, usually after outputting a newline. -

-

- - -

-
Function: int rl_on_new_line_with_prompt (void) -
Tell the update functions that we have moved onto a new line, with -rl_prompt already displayed. +

+ +
+
Function: int rl_on_new_line_with_prompt (void)
+

Tell the update functions that we have moved onto a new line, with +rl_prompt already displayed. This could be used by applications that want to output the prompt string themselves, but still need Readline to know the prompt string length for redisplay. -It should be used after setting rl_already_prompted. -

-

- - -

-
Function: int rl_clear_visible_line (void) -
Clear the screen lines corresponding to the current line's contents. -
-

- - -

-
Function: int rl_reset_line_state (void) -
Reset the display state to a clean state and redisplay the current line +It should be used after setting rl_already_prompted. +

+ +
+
Function: int rl_clear_visible_line (void)
+

Clear the screen lines corresponding to the current line’s contents. +

+ +
+
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. +

+ +
+
Function: int rl_crlf (void)
+

Move the cursor to the start of the next screen line. +

+ +
+
Function: int rl_show_char (int c)
+

Display character c on rl_outstream. If Readline has not been set to display meta characters directly, this will convert meta characters to a meta-prefixed key sequence. This is intended for use by applications which wish to do their own redisplay. -

-

- - -

-
Function: int rl_message (const char *, ...) -
The arguments are a format string as would be supplied to printf, -possibly containing conversion specifications such as `%d', and +

+ +
+
Function: int rl_message (const char *, …)
+

The arguments are a format string as would be supplied to printf, +possibly containing conversion specifications such as ‘%d’, and any additional arguments necessary to satisfy the conversion specifications. -The resulting string is displayed in the echo area. The echo area +The resulting string is displayed in the echo area. The echo area is also used to display numeric arguments and search strings. -You should call rl_save_prompt to save the prompt information +You should call rl_save_prompt to save the prompt information before calling this function. -

-

- - -

-
Function: int rl_clear_message (void) -
Clear the message in the echo area. If the prompt was saved with a call to -rl_save_prompt before the last call to rl_message, -call rl_restore_prompt before calling this function. -
-

- - -

-
Function: void rl_save_prompt (void) -
Save the local Readline prompt display state in preparation for -displaying a new message in the message area with rl_message(). -
-

- - -

-
Function: void rl_restore_prompt (void) -
Restore the local Readline prompt display state saved by the most -recent call to rl_save_prompt. -if rl_save_prompt was called to save the prompt before a call -to rl_message, this function should be called before the -corresponding call to rl_clear_message. -
-

- - -

-
Function: int rl_expand_prompt (char *prompt) -
Expand any special character sequences in prompt and set up the +

+ +
+
Function: int rl_clear_message (void)
+

Clear the message in the echo area. If the prompt was saved with a call to +rl_save_prompt before the last call to rl_message, +call rl_restore_prompt before calling this function. +

+ +
+
Function: void rl_save_prompt (void)
+

Save the local Readline prompt display state in preparation for +displaying a new message in the message area with rl_message(). +

+ +
+
Function: void rl_restore_prompt (void)
+

Restore the local Readline prompt display state saved by the most +recent call to rl_save_prompt. +if rl_save_prompt was called to save the prompt before a call +to rl_message, this function should be called before the +corresponding call to rl_clear_message. +

+ +
+
Function: int rl_expand_prompt (char *prompt)
+

Expand any special character sequences in prompt and set up the local Readline prompt redisplay variables. -This function is called by readline(). It may also be called to -expand the primary prompt if the rl_on_new_line_with_prompt() -function or rl_already_prompted variable is used. +This function is called by readline(). It may also be called to +expand the primary prompt if the rl_on_new_line_with_prompt() +function or rl_already_prompted variable is used. It returns the number of visible characters on the last line of the (possibly multi-line) prompt. Applications may indicate that the prompt contains characters that take up no physical screen space when displayed by bracketing a sequence of -such characters with the special markers RL_PROMPT_START_IGNORE -and RL_PROMPT_END_IGNORE (declared in `readline.h'). This may -be used to embed terminal-specific escape sequences in prompts. -

-

- - -

-
Function: int rl_set_prompt (const char *prompt) -
Make Readline use prompt for subsequent redisplay. This calls -rl_expand_prompt() to expand the prompt and sets rl_prompt +such characters with the special markers RL_PROMPT_START_IGNORE +and RL_PROMPT_END_IGNORE (declared in readline.h as +‘\001’ and ‘\002’, respectively). +This may be used to embed terminal-specific escape sequences in prompts. +

+ +
+
Function: int rl_set_prompt (const char *prompt)
+

Make Readline use prompt for subsequent redisplay. This calls +rl_expand_prompt() to expand the prompt and sets rl_prompt to the result. -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.4.7 Modifying Text

- -

- - -

-
Function: int rl_insert_text (const char *text) -
Insert text into the line at the current cursor position. +

+ +
+
+
+ +

2.4.7 Modifying Text

+ +
+
Function: int rl_insert_text (const char *text)
+

Insert text into the line at the current cursor position. Returns the number of characters inserted. -

-

+

- -
-
Function: int rl_delete_text (int start, int end) -
Delete the text between start and end in the current line. +
+
Function: int rl_delete_text (int start, int end)
+

Delete the text between start and end in the current line. Returns the number of characters deleted. -

-

+

- -
-
Function: char * rl_copy_text (int start, int end) -
Return a copy of the text between start and end in +
+
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 +
+
Function: int rl_kill_text (int start, int end)
+

Copy the text between start and end in the current line to the kill ring, appending or prepending to the last kill if the last command was a kill command. The text is deleted. -If start is less than end, +If start is less than end, the text is appended, otherwise prepended. If the last command was not a kill, a new kill ring slot is used. -

-

+

- -
-
Function: int rl_push_macro_input (char *macro) -
Cause macro to be inserted into the line, as if it had been invoked +
+
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. -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.4.8 Character Input

- -

- - -

-
Function: int rl_read_key (void) -
Return the next character available from Readline's current input stream. +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. +the input stream via rl_pending_input (see 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 +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" +
+
Function: int rl_stuff_char (int c)
+

Insert c into the Readline input stream. It will be "read" before Readline attempts to read characters from the terminal with -rl_read_key(). Up to 512 characters may be pushed back. -rl_stuff_char returns 1 if the character was successfully inserted; +rl_read_key(). Up to 512 characters may be pushed back. +rl_stuff_char returns 1 if the character was successfully inserted; 0 otherwise. -

-

- - -

-
Function: int rl_execute_next (int c) -
Make c be the next command to be executed when rl_read_key() -is called. This sets rl_pending_input. -
-

- - -

-
Function: int rl_clear_pending_input (void) -
Unset rl_pending_input, effectively negating the effect of any -previous call to rl_execute_next(). This works only if the -pending input has not already been read with rl_read_key(). -
-

- - -

-
Function: int rl_set_keyboard_input_timeout (int u) -
While waiting for keyboard input in rl_read_key(), Readline will -wait for u microseconds for input before calling any function -assigned to rl_event_hook. u must be greater than or equal +

+ +
+
Function: int rl_execute_next (int c)
+

Make c be the next command to be executed when rl_read_key() +is called. This sets rl_pending_input. +

+ +
+
Function: int rl_clear_pending_input (void)
+

Unset rl_pending_input, effectively negating the effect of any +previous call to rl_execute_next(). This works only if the +pending input has not already been read with rl_read_key(). +

+ +
+
Function: int rl_set_keyboard_input_timeout (int u)
+

While waiting for keyboard input in rl_read_key(), Readline will +wait for u microseconds for input before calling any function +assigned to rl_event_hook. u must be greater than or equal to zero (a zero-length timeout is equivalent to a poll). The default waiting period is one-tenth of a second. Returns the old timeout value. -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.4.9 Terminal Management

- -

- - -

-
Function: void rl_prep_terminal (int meta_flag) -
Modify the terminal settings for Readline's use, so readline() +

+ +
+
Function: int rl_set_timeout (unsigned int secs, unsigned int usecs)
+

Set a timeout for subsequent calls to readline(). If Readline does +not read a complete line, or the number of characters specified by +rl_num_chars_to_read, before the duration specified by secs +(in seconds) and usecs (microseconds), it returns and sets +RL_STATE_TIMEOUT in rl_readline_state. +Passing 0 for secs and usecs cancels any previously set +timeout; the convenience macro rl_clear_timeout() is shorthand +for this. +Returns 0 if the timeout is set successfully. +

+ +
+
Function: int rl_timeout_remaining (unsigned int *secs, unsigned int *usecs)
+

Return the number of seconds and microseconds remaining in the current +timeout duration in *secs and *usecs, respectively. +Both *secs and *usecs must be non-NULL to return any values. +The return value is -1 on error or when there is no timeout set, +0 when the timeout has expired (leaving *secs and *usecs +unchanged), +and 1 if the timeout has not expired. +If either of secs and usecs is NULL, +the return value indicates whether the timeout has expired. +

+ +
+
+
+ +

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 +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 +
+
Function: void rl_deprep_terminal (void)
+

Undo the effects of rl_prep_terminal(), leaving the terminal in the state in which it was before the most recent call to -rl_prep_terminal(). -

-

- - -

-
Function: void rl_tty_set_default_bindings (Keymap kmap) -
Read the operating system's terminal editing characters (as would be -displayed by stty) to their Readline equivalents. -The bindings are performed in kmap. -
-

- - -

-
Function: void rl_tty_unset_default_bindings (Keymap kmap) -
Reset the bindings manipulated by rl_tty_set_default_bindings so -that the terminal editing characters are bound to rl_insert. -The bindings are performed in kmap. -
-

- - -

-
Function: int rl_tty_set_echoing (int value) -
Set Readline's idea of whether or not it is echoing output to its output -stream (rl_outstream). If value is 0, Readline does not display -output to rl_outstream; any other value enables output. The initial +rl_prep_terminal(). +

+ +
+
Function: void rl_tty_set_default_bindings (Keymap kmap)
+

Read the operating system’s terminal editing characters (as would be +displayed by stty) to their Readline equivalents. +The bindings are performed in kmap. +

+ +
+
Function: void rl_tty_unset_default_bindings (Keymap kmap)
+

Reset the bindings manipulated by rl_tty_set_default_bindings so +that the terminal editing characters are bound to rl_insert. +The bindings are performed in kmap. +

+ +
+
Function: int rl_tty_set_echoing (int value)
+

Set Readline’s idea of whether or not it is echoing output to its output +stream (rl_outstream). If value is 0, Readline does not display +output to rl_outstream; any other value enables output. The initial value is set when Readline initializes the terminal settings. This function returns the previous value. -

-

- - -

-
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 +

+ +
+
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. -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.4.10 Utility Functions

- -

- - -

-
Function: int rl_save_state (struct readline_state *sp) -
Save a snapshot of Readline's internal state to sp. -The contents of the readline_state structure are documented -in `readline.h'. +

+ +
+
+
+ +

2.4.10 Utility Functions

+ +
+
Function: int rl_save_state (struct readline_state *sp)
+

Save a snapshot of Readline’s internal state to sp. +The contents of the readline_state structure are documented +in readline.h. The caller is responsible for allocating the structure. -

-

- - -

-
Function: int rl_restore_state (struct readline_state *sp) -
Restore Readline's internal state to that stored in sp, which must -have been saved by a call to rl_save_state. -The contents of the readline_state structure are documented -in `readline.h'. +

+ +
+
Function: int rl_restore_state (struct readline_state *sp)
+

Restore Readline’s internal state to that stored in sp, which must +have been saved by a call to rl_save_state. +The contents of the readline_state structure are documented +in readline.h. The caller is responsible for freeing the structure. -

-

- - -

-
Function: void rl_free (void *mem) -
Deallocate the memory pointed to by mem. mem must have been -allocated by malloc. -
-

- - -

-
Function: void rl_replace_line (const char *text, int clear_undo) -
Replace the contents of rl_line_buffer with text. +

+ +
+
Function: void rl_free (void *mem)
+

Deallocate the memory pointed to by mem. mem must have been +allocated by malloc. +

+ +
+
Function: void rl_replace_line (const char *text, int clear_undo)
+

Replace the contents of rl_line_buffer with text. The point and mark are preserved, if possible. -If clear_undo is non-zero, the undo list associated with the +If clear_undo is non-zero, the undo list associated with the current line is cleared. -

-

+

- -
-
Function: void rl_extend_line_buffer (int len) -
Ensure that rl_line_buffer has enough space to hold len +
+
Function: void rl_extend_line_buffer (int len)
+

Ensure that rl_line_buffer has enough space to hold len characters, possibly reallocating it if necessary. -

-

- - -

-
Function: int rl_initialize (void) -
Initialize or re-initialize Readline's internal state. -It's not strictly necessary to call this; readline() calls it before +

+ +
+
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 +

+ +
+
Function: int rl_ding (void)
+

Ring the terminal bell, obeying the setting of bell-style. +

+ +
+
Function: int rl_alphabetic (int c)
+

Return 1 if c is an alphabetic character. +

+ +
+
Function: void rl_display_match_list (char **matches, int len, int max)
+

A convenience function for displaying a list of strings in +columnar format on Readline’s output stream. matches is the list of strings, in argv format, such as a list of completion matches. -len is the number of strings in matches, and max -is the length of the longest string in matches. This function uses -the setting of print-completions-horizontally to select how the -matches are displayed (see section 1.3.1 Readline Init File Syntax). +len is the number of strings in matches, and max +is the length of the longest string in matches. This function uses +the setting of print-completions-horizontally to select how the +matches are displayed (see Readline Init File Syntax). When displaying completions, this function sets the number of columns used -for display to the value of completion-display-width, the value of -the environment variable COLUMNS, or the screen width, in that order. -

-

+for display to the value of completion-display-width, the value of +the environment variable COLUMNS, or the screen width, in that order. +

-The following are implemented as macros, defined in chardefs.h. +

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 +

+
+
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 +
+
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. -
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

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: char * rl_variable_value (const char *variable) -
Return a string representing the value of the Readline variable variable. -For boolean variables, this string is either `on' or `off'. -
-

- - -

-
Function: void rl_variable_dumper (int readable) -
Print the readline variable names and their current values -to rl_outstream. -If readable is non-zero, the list is formatted in such a way -that it can be made part of an inputrc file and re-read. -
-

- - -

-
Function: int rl_set_paren_blink_timeout (int u) -
Set the time interval (in microseconds) that Readline waits when showing -a balancing character when blink-matching-paren has been enabled. -
-

- - -

-
Function: char * rl_get_termcap (const char *cap) -
Retrieve the string value of the termcap capability cap. +

+ +
+
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 Readline Init File Syntax). +

+ +
+
Function: char * rl_variable_value (const char *variable)
+

Return a string representing the value of the Readline variable variable. +For boolean variables, this string is either ‘on’ or ‘off’. +

+ +
+
Function: void rl_variable_dumper (int readable)
+

Print the Readline variable names and their current values +to rl_outstream. +If readable is non-zero, the list is formatted in such a way +that it can be made part of an inputrc file and re-read. +

+ +
+ +

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 +use all of a terminal’s capabilities, and this function will return values for only those capabilities Readline uses. -

-

- - -

-
Function: void rl_clear_history (void) -
Clear the history list by deleting all of the entries, in the same manner -as the History library's clear_history() function. -This differs from clear_history because it frees private data +

+ +
+
Function: void rl_clear_history (void)
+

Clear the history list by deleting all of the entries, in the same manner +as the History library’s clear_history() function. +This differs from clear_history because it frees private data Readline saves in the history list. -

-

- - -

-
Function: void rl_activate_mark (void) -
Enable an active mark. -When this is enabled, the text between point and mark (the region) is -displayed in the terminal's standout mode (a face). -This is called by various readline functions that set the mark and insert +

+ +
+
Function: void rl_activate_mark (void)
+

Enable an active mark. +When this is enabled, the text between point and mark (the region) is +displayed in the terminal’s standout mode (a face). +This is called by various Readline functions that set the mark and insert text, and is available for applications to call. -

-

- - -

-
Function: void rl_deactivate_mark (void) -
Turn off the active mark. -
-

- - -

-
Function: void rl_keep_mark_active (void) -
Indicate that the mark should remain active when the current readline function -completes and after redisplay occurs. +

+ +
+
Function: void rl_deactivate_mark (void)
+

Turn off the active mark. +

+ +
+
Function: void rl_keep_mark_active (void)
+

Indicate that the mark should remain active when the current Readline +function completes and after redisplay occurs. In most cases, the mark remains active for only the duration of a single -bindable readline function. -

-

- - -

-
Function: int rl_mark_active_p (void) -
Return a non-zero value if the mark is currently active; zero otherwise. -
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.4.12 Alternate Interface

- -

- -An alternate interface is available to plain readline(). Some +bindable Readline function. +

+ +
+
Function: int rl_mark_active_p (void)
+

Return a non-zero value if the mark is currently active; zero otherwise. +

+ +
+
+
+ +

2.4.12 Alternate Interface

+ +

An alternate interface is available to plain readline(). Some applications need to interleave keyboard I/O with file, device, or -window system I/O, typically by using a main loop to select() -on various file descriptors. To accommodate this need, readline can -also be invoked as a `callback' function from an event loop. There +window system I/O, typically by using a main loop to select() +on various file descriptors. To accommodate this need, Readline can +also be invoked as a ‘callback’ function from an event loop. There are functions available to make this easy. -

- - -

-
Function: void rl_callback_handler_install (const char *prompt, rl_vcpfunc_t *lhandler) -
Set up the terminal for readline I/O and display the initial -expanded value of prompt. Save the value of lhandler to +

+
+
Function: void rl_callback_handler_install (const char *prompt, rl_vcpfunc_t *lhandler)
+

Set up the terminal for Readline I/O and display the initial +expanded value of prompt. Save the value of lhandler to use as a handler function to call when a complete line of input has been entered. The handler function receives the text of the line as an argument. -As with readline(), the handler function should free the +As with readline(), the handler function should free the line when it it finished with it. -

-

- - -

-
Function: void rl_callback_read_char (void) -
Whenever an application determines that keyboard input is available, it -should call rl_callback_read_char(), which will read the next +

+ +
+
Function: void rl_callback_read_char (void)
+

Whenever an application determines that keyboard input is available, it +should call rl_callback_read_char(), which will read the next character from the current input source. -If that character completes the line, rl_callback_read_char will -invoke the lhandler function installed by -rl_callback_handler_install to process the line. -Before calling the lhandler function, the terminal settings are +If that character completes the line, rl_callback_read_char will +invoke the lhandler function installed by +rl_callback_handler_install to process the line. +Before calling the lhandler function, the terminal settings are reset to the values they had before calling -rl_callback_handler_install. -If the lhandler function returns, +rl_callback_handler_install. +If the lhandler function returns, and the line handler remains installed, -the terminal settings are modified for Readline's use again. -EOF is indicated by calling lhandler with a -NULL line. -

-

- - -

-
Function: void rl_callback_sigcleanup (void) -
Clean up any internal state the callback interface uses to maintain state +the terminal settings are modified for Readline’s use again. +EOF is indicated by calling lhandler with a +NULL line. +

+ +
+
Function: void rl_callback_sigcleanup (void)
+

Clean up any internal state the callback interface uses to maintain state between calls to rl_callback_read_char (e.g., the state of any active incremental searches). This is intended to be used by applications that -wish to perform their own signal handling; Readline's internal signal handler +wish to perform their own signal handling; Readline’s internal signal handler calls this when appropriate. -

-

+

- -
-
Function: void rl_callback_handler_remove (void) -
Restore the terminal to its initial state and remove the line handler. +
+
Function: void rl_callback_handler_remove (void)
+

Restore the terminal to its initial state and remove the line handler. You may call this function from within a callback as well as independently. -If the lhandler installed by rl_callback_handler_install +If the lhandler installed by rl_callback_handler_install does not exit the program, either this function or the function referred -to by the value of rl_deprep_term_function should be called before +to by the value of rl_deprep_term_function should be called before the program exits to reset the terminal settings. -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.4.13 A Readline Example

- -

- -Here is a function which changes lowercase characters to their uppercase +

+ +
+
+
+ +

2.4.13 A Readline Example

+ +

Here is a function which changes lowercase characters to their uppercase equivalents, and uppercase characters to lowercase. If -this function was bound to `M-c', then typing `M-c' would -change the case of the character under point. Typing `M-1 0 M-c' +this function was bound to ‘M-c’, then typing ‘M-c’ would +change the case of the character under point. Typing ‘M-1 0 M-c’ would change the case of the following 10 characters, leaving the cursor on the last character changed. -

- -
 
/* Invert the case of the COUNT following characters. */
+

+
+
/* Invert the case of the COUNT following characters. */
 int
 invert_case_line (count, key)
      int count, key;
@@ -4565,10 +3815,10 @@ invert_case_line (count, key)
 
   start = rl_point;
 
-  if (rl_point >= rl_end)
+  if (rl_point >= rl_end)
     return (0);
 
-  if (count < 0)
+  if (count < 0)
     {
       direction = -1;
       count = -count;
@@ -4580,15 +3830,15 @@ invert_case_line (count, key)
   end = start + (count * direction);
 
   /* Force it to be within range. */
-  if (end > rl_end)
+  if (end > rl_end)
     end = rl_end;
-  else if (end < 0)
+  else if (end < 0)
     end = 0;
 
   if (start == end)
     return (0);
 
-  if (start > end)
+  if (start > end)
     {
       int temp = start;
       start = end;
@@ -4610,56 +3860,47 @@ invert_case_line (count, key)
   rl_point = (direction == 1) ? end - 1 : start;
   return (0);
 }
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.4.14 Alternate Interface Example

- -

- -Here is a complete program that illustrates Readline's alternate interface. +

+ +
+
+
+ +

2.4.14 Alternate Interface Example

+ +

Here is a complete program that illustrates Readline’s alternate interface. It reads lines from the terminal and displays them, providing the standard history and TAB completion functions. -It understands the EOF character or "exit" to exit the program. -

- -
 
/* Standard include files. stdio.h is required. */
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <locale.h>
+It understands the EOF character or "exit" to exit the program.
+

+
+
/* Standard include files. stdio.h is required. */
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <locale.h>
 
 /* Used for select(2) */
-#include <sys/types.h>
-#include <sys/select.h>
+#include <sys/types.h>
+#include <sys/select.h>
 
-#include <signal.h>
+#include <signal.h>
 
-#include <stdio.h>
+#include <stdio.h>
 
 /* Standard readline include files. */
-#include <readline/readline.h>
-#include <readline/history.h>
+#include <readline/readline.h>
+#include <readline/history.h>
 
 static void cb_linehandler (char *);
 static void sighandler (int);
 
 int running;
 int sigwinch_received;
-const char *prompt = "rltest$ ";
+const char *prompt = "rltest$ ";
 
 /* Handle SIGWINCH and window size changes when readline is not active and
    reading a character. */
@@ -4676,11 +3917,11 @@ static void
 cb_linehandler (char *line)
 {
   /* Can use ^D (stty eof) or `exit' to exit. */
-  if (line == NULL || strcmp (line, "exit") == 0)
+  if (line == NULL || strcmp (line, "exit") == 0)
     {
       if (line == 0)
-        printf ("\n");
-      printf ("exit\n");
+        printf ("\n");
+      printf ("exit\n");
       /* This function needs to be called to reset the terminal settings,
          and calling it from the line handler keeps one extra prompt from
          being displayed. */
@@ -4692,7 +3933,7 @@ cb_linehandler (char *line)
     {
       if (*line)
         add_history (line);
-      printf ("input line: %s\n", line);
+      printf ("input line: %s\n", line);
       free (line);
     }
 }
@@ -4704,7 +3945,7 @@ main (int c, char **v)
   int r;
 
   /* Set the default locale values according to environment variables. */
-  setlocale (LC_ALL, "");
+  setlocale (LC_ALL, "");
 
   /* Handle window size changes when readline is not active and reading
      characters. */
@@ -4720,13 +3961,13 @@ main (int c, char **v)
   running = 1;
   while (running)
     {
-      FD_ZERO (&fds);
-      FD_SET (fileno (rl_instream), &fds);    
+      FD_ZERO (&fds);
+      FD_SET (fileno (rl_instream), &fds);    
 
-      r = select (FD_SETSIZE, &fds, NULL, NULL, NULL);
-      if (r < 0 && errno != EINTR)
+      r = select (FD_SETSIZE, &fds, NULL, NULL, NULL);
+      if (r < 0 && errno != EINTR)
         {
-          perror ("rltest: select");
+          perror ("rltest: select");
           rl_callback_handler_remove ();
           break;
         }
@@ -4735,348 +3976,273 @@ main (int c, char **v)
 	  rl_resize_terminal ();
 	  sigwinch_received = 0;
 	}
-      if (r < 0)
+      if (r < 0)
 	continue;     
 
-      if (FD_ISSET (fileno (rl_instream), &fds))
+      if (FD_ISSET (fileno (rl_instream), &fds))
         rl_callback_read_char ();
     }
 
-  printf ("rltest: Event loop has exited\n");
+  printf ("rltest: Event loop has exited\n");
   return 0;
 }
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.5 Readline Signal Handling

- -

- -Signals are asynchronous events sent to a process by the Unix kernel, +

+ +
+ + +
+ +

2.5 Readline Signal Handling

+ +

Signals are asynchronous events sent to a process by the Unix kernel, sometimes on behalf of another process. They are intended to indicate -exceptional events, like a user pressing the interrupt key on his terminal, +exceptional events, like a user pressing the terminal’s interrupt key, or a network connection being broken. There is a class of signals that can be sent to the process currently reading input from the keyboard. Since Readline changes the terminal attributes when it is called, it needs to perform special processing when such a signal is received in order to restore the terminal to a sane state, or provide application writers with functions to do so manually. -

- -Readline contains an internal signal handler that is installed for a -number of signals (SIGINT, SIGQUIT, SIGTERM, -SIGHUP, -SIGALRM, SIGTSTP, SIGTTIN, and SIGTTOU). +

+

Readline contains an internal signal handler that is installed for a +number of signals (SIGINT, SIGQUIT, SIGTERM, +SIGHUP, +SIGALRM, SIGTSTP, SIGTTIN, and SIGTTOU). When one of these signals is received, the signal handler will reset the terminal attributes to those that were in effect before -readline() was called, reset the signal handling to what it was -before readline() was called, and resend the signal to the calling +readline() was called, reset the signal handling to what it was +before readline() was called, and resend the signal to the calling application. -If and when the calling application's signal handler returns, Readline +If and when the calling application’s signal handler returns, Readline will reinitialize the terminal and continue to accept input. -When a SIGINT is received, the Readline signal handler performs +When a SIGINT is received, the Readline signal handler performs some additional work, which will cause any partially-entered line to be -aborted (see the description of rl_free_line_state() below). -

- -There is an additional Readline signal handler, for SIGWINCH, which -the kernel sends to a process whenever the terminal's size changes (for -example, if a user resizes an xterm). The Readline SIGWINCH -handler updates Readline's internal screen size information, and then calls -any SIGWINCH signal handler the calling application has installed. -Readline calls the application's SIGWINCH signal handler without -resetting the terminal to its original state. If the application's signal +aborted (see the description of rl_free_line_state() below). +

+

There is an additional Readline signal handler, for SIGWINCH, which +the kernel sends to a process whenever the terminal’s size changes (for +example, if a user resizes an xterm). The Readline SIGWINCH +handler updates Readline’s internal screen size information, and then calls +any SIGWINCH signal handler the calling application has installed. +Readline calls the application’s SIGWINCH signal handler without +resetting the terminal to its original state. If the application’s signal handler does more than update its idea of the terminal size and return (for -example, a longjmp back to a main processing loop), it must -call rl_cleanup_after_signal() (described below), to restore the +example, a longjmp back to a main processing loop), it must +call rl_cleanup_after_signal() (described below), to restore the terminal state. -

- -When an application is using the callback interface -(see section 2.4.12 Alternate Interface), Readline installs signal handlers only for -the duration of the call to rl_callback_read_char. Applications -using the callback interface should be prepared to clean up Readline's +

+

When an application is using the callback interface +(see Alternate Interface), Readline installs signal handlers only for +the duration of the call to rl_callback_read_char. Applications +using the callback interface should be prepared to clean up Readline’s state if they wish to handle the signal before the line handler completes and restores the terminal state. -

- -If an application using the callback interface wishes to have Readline +

+

If an application using the callback interface wishes to have Readline install its signal handlers at the time the application calls -rl_callback_handler_install and remove them only when a complete +rl_callback_handler_install and remove them only when a complete line of input has been read, it should set the -rl_persistent_signal_handlers variable to a non-zero value. +rl_persistent_signal_handlers variable to a non-zero value. This allows an application to defer all of the handling of the signals Readline catches to Readline. Applications should use this variable with care; it can result in Readline catching signals and not acting on them (or allowing the application to react -to them) until the application calls rl_callback_read_char. This +to them) until the application calls rl_callback_read_char. This can result in an application becoming less responsive to keyboard signals like SIGINT. If an application does not want or need to perform any signal handling, or -does not need to do any processing between calls to rl_callback_read_char, +does not need to do any processing between calls to rl_callback_read_char, setting this variable may be desirable. -

- -Readline provides two variables that allow application writers to +

+

Readline provides two variables that allow application writers to control whether or not it will catch certain signals and act on them when they are received. It is important that applications change the -values of these variables only when calling readline(), not in -a signal handler, so Readline's internal signal state is not corrupted. -

- - -

-
Variable: int rl_catch_signals -
If this variable is non-zero, Readline will install signal handlers for -SIGINT, SIGQUIT, SIGTERM, SIGHUP, SIGALRM, -SIGTSTP, SIGTTIN, and SIGTTOU. -

- -The default value of rl_catch_signals is 1. -

-

- - -

-
Variable: int rl_catch_sigwinch -
If this variable is set to a non-zero value, -Readline will install a signal handler for SIGWINCH. -

- -The default value of rl_catch_sigwinch is 1. -

-

- - -

-
Variable: int rl_persistent_signal_handlers -
If an application using the callback interface wishes Readline's signal +values of these variables only when calling readline(), not in +a signal handler, so Readline’s internal signal state is not corrupted. +

+
+
Variable: int rl_catch_signals
+

If this variable is non-zero, Readline will install signal handlers for +SIGINT, SIGQUIT, SIGTERM, SIGHUP, SIGALRM, +SIGTSTP, SIGTTIN, and SIGTTOU. +

+

The default value of rl_catch_signals is 1. +

+ +
+
Variable: int rl_catch_sigwinch
+

If this variable is set to a non-zero value, +Readline will install a signal handler for SIGWINCH. +

+

The default value of rl_catch_sigwinch is 1. +

+ +
+
Variable: int rl_persistent_signal_handlers
+

If an application using the callback interface wishes Readline’s signal handlers to be installed and active during the set of calls to -rl_callback_read_char that constitutes an entire single line, +rl_callback_read_char that constitutes an entire single line, it should set this variable to a non-zero value. -

- -The default value of rl_persistent_signal_handlers is 0. -

-

- - -

-
Variable: int rl_change_environment -
If this variable is set to a non-zero value, -and Readline is handling SIGWINCH, Readline will modify the -LINES and COLUMNS environment variables upon receipt of a -SIGWINCH -

- -The default value of rl_change_environment is 1. -

-

- -If an application does not wish to have Readline catch any signals, or -to handle signals other than those Readline catches (SIGHUP, +

+

The default value of rl_persistent_signal_handlers is 0. +

+ +
+
Variable: int rl_change_environment
+

If this variable is set to a non-zero value, +and Readline is handling SIGWINCH, Readline will modify the +LINES and COLUMNS environment variables upon receipt of a +SIGWINCH +

+

The default value of rl_change_environment is 1. +

+ +

If an application does not wish to have Readline catch any signals, or +to handle signals other than those Readline catches (SIGHUP, for example), Readline provides convenience functions to do the necessary terminal and internal state cleanup upon receipt of a signal. -

- - -

-
Function: int rl_pending_signal (void) -
Return the signal number of the most recent signal Readline received but +

+
+
Function: int rl_pending_signal (void)
+

Return the signal number of the most recent signal Readline received but has not yet handled, or 0 if there is no pending 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 +

+ +
+
Function: void rl_cleanup_after_signal (void)
+

This function will reset the state of the terminal to what it was before +readline() was called, and remove the Readline signal handlers for +all signals, depending on the values of rl_catch_signals and +rl_catch_sigwinch. +

+ +
+
Function: void rl_free_line_state (void)
+

This will free any partial state associated with the current input line (undo information, any partial history entry, any partially-entered keyboard macro, and any partially-entered numeric argument). This -should be called before rl_cleanup_after_signal(). The -Readline signal handler for SIGINT calls this to abort the +should be called before rl_cleanup_after_signal(). The +Readline signal handler for SIGINT calls this to abort the current input line. -

-

- - -

-
Function: void rl_reset_after_signal (void) -
This will reinitialize the terminal and reinstall any Readline signal -handlers, depending on the values of rl_catch_signals and -rl_catch_sigwinch. -
-

- -If an application wants to force Readline to handle any signals that -have arrived while it has been executing, rl_check_signals() -will call Readline's internal signal handler if there are any pending +

+ +
+
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 wants to force Readline to handle any signals that +have arrived while it has been executing, rl_check_signals() +will call Readline’s internal signal handler if there are any pending signals. This is primarily intended for those applications that use -a custom rl_getc_function (see section 2.3 Readline Variables) and wish +a custom rl_getc_function (see Readline Variables) and wish to handle signals received while waiting for input. -

- - -

-
Function: void rl_check_signals (void) -
If there are any pending signals, call Readline's internal signal handling -functions to process them. rl_pending_signal() can be used independently +

+
+
Function: void rl_check_signals (void)
+

If there are any pending signals, call Readline’s internal signal handling +functions to process them. rl_pending_signal() can be used independently to determine whether or not there are any pending signals. -

-

+

-If an application does not wish Readline to catch SIGWINCH, it may -call rl_resize_terminal() or rl_set_screen_size() to force +

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 it receives -a SIGWINCH. -

- - -

-
Function: void rl_echo_signal_char (int sig) -
If an application wishes to install its own signal handlers, but still -have readline display characters that generate signals, calling this -function with sig set to SIGINT, SIGQUIT, or -SIGTSTP will display the character generating that signal. -
-

- - -

-
Function: void rl_resize_terminal (void) -
Update Readline's internal screen size by reading values from the kernel. -
-

- - -

-
Function: void rl_set_screen_size (int rows, int cols) -
Set Readline's idea of the terminal size to rows rows and -cols columns. If either rows or columns is less than -or equal to 0, Readline's idea of that terminal dimension is unchanged. +a SIGWINCH. +

+
+
Function: void rl_echo_signal_char (int sig)
+

If an application wishes to install its own signal handlers, but still +have Readline display characters that generate signals, calling this +function with sig set to SIGINT, SIGQUIT, or +SIGTSTP will display the character generating that signal. +

+ +
+
Function: void rl_resize_terminal (void)
+

Update Readline’s internal screen size by reading values from the kernel. +

+ +
+
Function: void rl_set_screen_size (int rows, int cols)
+

Set Readline’s idea of the terminal size to rows rows and +cols columns. If either rows or columns is less than +or equal to 0, Readline’s idea of that terminal dimension is unchanged. This is intended to tell Readline the physical dimensions of the terminal, and is used internally to calculate the maximum number of characters that may appear on a single line and on the screen. -

-

+

-If an application does not want to install a SIGWINCH handler, but -is still interested in the screen dimensions, it may query Readline's idea +

If an application does not want to install a SIGWINCH handler, but +is still interested in the screen dimensions, it may query Readline’s idea of the screen size. -

- - -

-
Function: void rl_get_screen_size (int *rows, int *cols) -
Return Readline's idea of the terminal's size in the +

+
+
Function: void rl_get_screen_size (int *rows, int *cols)
+

Return Readline’s idea of the terminal’s size in the variables pointed to by the arguments. -

-

- - -

-
Function: void rl_reset_screen_size (void) -
Cause Readline to reobtain the screen size and recalculate its dimensions. -
-

- -The following functions install and remove Readline's signal handlers. -

- - -

-
Function: int rl_set_signals (void) -
Install Readline's signal handler for SIGINT, SIGQUIT, -SIGTERM, SIGHUP, SIGALRM, SIGTSTP, SIGTTIN, -SIGTTOU, and SIGWINCH, depending on the values of -rl_catch_signals and rl_catch_sigwinch. -
-

- - -

-
Function: int rl_clear_signals (void) -
Remove all of the Readline signal handlers installed by -rl_set_signals(). -
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.6 Custom Completers

- -

- -Typically, a program that reads commands from the user has a way of +

+ +
+
Function: void rl_reset_screen_size (void)
+

Cause Readline to reobtain the screen size and recalculate its dimensions. +

+ +

The following functions install and remove Readline’s signal handlers. +

+
+
Function: int rl_set_signals (void)
+

Install Readline’s signal handler for SIGINT, SIGQUIT, +SIGTERM, SIGHUP, SIGALRM, SIGTSTP, SIGTTIN, +SIGTTOU, and SIGWINCH, depending on the values of +rl_catch_signals and rl_catch_sigwinch. +

+ +
+
Function: int rl_clear_signals (void)
+

Remove all of the Readline signal handlers installed by +rl_set_signals(). +

+ +
+
+
+ +

2.6 Custom Completers

+ + +

Typically, a program that reads commands from the user has a way of disambiguating commands and data. If your program is one of these, then it can provide completion for commands, data, or both. The following sections describe how your program and Readline cooperate to provide this service. -

- -

- - - - -
2.6.1 How Completing Works  The logic used to do completion.
2.6.2 Completion Functions  Functions provided by Readline.
2.6.3 Completion Variables  Variables which control completion.
2.6.4 A Short Completion Example  An example of writing completer subroutines.
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.6.1 How Completing Works

- -

- -In order to complete some text, the full list of possible completions +

+ + +
+
+ +

2.6.1 How Completing Works

+ +

In order to complete some text, the full list of possible completions must be available. That is, it is not possible to accurately expand a partial word without knowing all of the possible words which make sense in that context. The Readline library provides @@ -5084,296 +4250,234 @@ the user interface to completion, and two of the most common completion functions: filename and username. For completing other types of text, you must write your own completion function. This section describes exactly what such functions must do, and provides an example. -

- -There are three major functions used to perform completion: -

- -

    -
  1. -The user-interface function rl_complete(). This function is +

    +

    There are three major functions used to perform completion: +

    +
      +
    1. The user-interface function rl_complete(). This function is called with the same arguments as other bindable Readline functions: -count and invoking_key. +count and invoking_key. It isolates the word to be completed and calls -rl_completion_matches() to generate a list of possible completions. +rl_completion_matches() to generate a list of possible completions. It then either lists the possible completions, inserts the possible completions, or actually performs the completion, depending on which behavior is desired. -

      -

    2. -The internal function rl_completion_matches() uses an -application-supplied generator function to generate the list of +
    3. The internal function rl_completion_matches() uses an +application-supplied generator function to generate the list of possible matches, and then returns the array of these matches. The caller should place the address of its generator function in -rl_completion_entry_function. -

      - -

    4. -The generator function is called repeatedly from -rl_completion_matches(), returning a string each time. The -arguments to the generator function are text and state. -text is the partial word to be completed. state is zero the +rl_completion_entry_function. + +
    5. The generator function is called repeatedly from +rl_completion_matches(), returning a string each time. The +arguments to the generator function are text and state. +text is the partial word to be completed. state is zero the first time the function is called, allowing the generator to perform any necessary initialization, and a positive non-zero integer for each subsequent call. The generator function returns -(char *)NULL to inform rl_completion_matches() that there are +(char *)NULL to inform rl_completion_matches() that there are no more possibilities left. Usually the generator function computes the -list of possible completions when state is zero, and returns them +list of possible completions when state is zero, and returns them one at a time on subsequent calls. Each string the generator function -returns as a match must be allocated with malloc(); Readline +returns as a match must be allocated with malloc(); Readline frees the strings when it has finished with them. Such a generator function is referred to as an -application-specific completion function. -

      +application-specific completion function. -

    -

    +

- -
-
Function: int rl_complete (int ignore, int invoking_key) -
Complete the word at or before point. You have supplied the function +
+
Function: int rl_complete (int ignore, int invoking_key)
+

Complete the word at or before point. You have supplied the function that does the initial simple matching selection algorithm (see -rl_completion_matches()). The default is to do filename completion. -

-

- - -

-
Variable: rl_compentry_func_t * rl_completion_entry_function -
This is a pointer to the generator function for -rl_completion_matches(). -If the value of rl_completion_entry_function is -NULL then the default filename generator -function, rl_filename_completion_function(), is used. -An application-specific completion function is a function whose -address is assigned to rl_completion_entry_function and whose +rl_completion_matches()). The default is to do filename completion. +

+ +
+
Variable: rl_compentry_func_t * rl_completion_entry_function
+

This is a pointer to the generator function for +rl_completion_matches(). +If the value of rl_completion_entry_function is +NULL then the default filename generator +function, rl_filename_completion_function(), is used. +An application-specific completion function is a function whose +address is assigned to rl_completion_entry_function and whose return values are used to generate possible completions. -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.6.2 Completion Functions

- -

- -Here is the complete list of callable completion functions present in +

+ +
+
+
+ +

2.6.2 Completion Functions

+ +

Here is the complete list of callable completion functions present in Readline. -

- - -

-
Function: int rl_complete_internal (int what_to_do) -
Complete the word at or before point. what_to_do says what to do -with the completion. A value of `?' means list the possible -completions. `TAB' means do standard completion. `*' means -insert all of the possible completions. `!' means to display +

+
+
Function: int rl_complete_internal (int what_to_do)
+

Complete the word at or before point. what_to_do says what to do +with the completion. A value of ‘?’ means list the possible +completions. ‘TAB’ means do standard completion. ‘*’ means +insert all of the possible completions. ‘!’ means to display all of the possible completions, if there is more than one, as well as -performing partial completion. `@' is similar to `!', but +performing partial completion. ‘@’ is similar to ‘!’, but possible completions are not listed if the possible completions share a common prefix. -

-

+

- -
-
Function: int rl_complete (int ignore, int invoking_key) -
Complete the word at or before point. You have supplied the function +
+
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). +rl_completion_matches() and rl_completion_entry_function). The default is to do filename -completion. This calls rl_complete_internal() with an -argument depending on invoking_key. -

-

- - -

-
Function: int rl_possible_completions (int count, int invoking_key) -
List the possible completions. See description of rl_complete -(). This calls rl_complete_internal() with an argument of -`?'. -
-

- - -

-
Function: int rl_insert_completions (int count, int invoking_key) -
Insert the list of possible completions into the line, deleting the -partially-completed word. See description of rl_complete(). -This calls rl_complete_internal() with an argument of `*'. -
-

- - -

-
Function: int rl_completion_mode (rl_command_func_t *cfunc) -
Returns the appropriate value to pass to rl_complete_internal() -depending on whether cfunc was called twice in succession and -the values of the show-all-if-ambiguous and -show-all-if-unmodified variables. +completion. This calls rl_complete_internal() with an +argument depending on invoking_key. +

+ +
+
Function: int rl_possible_completions (int count, int invoking_key)
+

List the possible completions. See description of rl_complete +(). This calls rl_complete_internal() with an argument of +‘?’. +

+ +
+
Function: int rl_insert_completions (int count, int invoking_key)
+

Insert the list of possible completions into the line, deleting the +partially-completed word. See description of rl_complete(). +This calls rl_complete_internal() with an argument of ‘*’. +

+ +
+
Function: int rl_completion_mode (rl_command_func_t *cfunc)
+

Returns the appropriate value to pass to rl_complete_internal() +depending on whether cfunc was called twice in succession and +the values of the show-all-if-ambiguous and +show-all-if-unmodified variables. Application-specific completion functions may use this function to present -the same interface as rl_complete(). -

-

- - -

-
Function: char ** rl_completion_matches (const char *text, rl_compentry_func_t *entry_func) -
Returns an array of strings which is a list of completions for -text. If there are no completions, returns NULL. -The first entry in the returned array is the substitution for text. +the same interface as rl_complete(). +

+ +
+
Function: char ** rl_completion_matches (const char *text, rl_compentry_func_t *entry_func)
+

Returns an array of strings which is a list of completions for +text. If there are no completions, returns NULL. +The first entry in the returned array is the substitution for text. The remaining entries are the possible completions. The array is -terminated with a NULL pointer. -

- -entry_func is a function of two args, and returns a -char *. The first argument is text. The second is a +terminated with a NULL pointer. +

+

entry_func is a function of two args, and returns a +char *. The first argument is text. The second is a state argument; it is zero on the first call, and non-zero on subsequent -calls. entry_func returns a NULL pointer to the caller +calls. entry_func returns a NULL pointer to the caller when there are no more matches. -

-

- - -

-
Function: char * rl_filename_completion_function (const char *text, int state) -
A generator function for filename completion in the general case. -text is a partial filename. +

+ +
+
Function: char * rl_filename_completion_function (const char *text, int state)
+

A generator function for filename completion in the general case. +text is a partial filename. The Bash source is a useful reference for writing application-specific completion functions (the Bash completion functions call this and other Readline functions). -

-

- - -

-
Function: char * rl_username_completion_function (const char *text, int state) -
A completion generator for usernames. text contains a partial -username preceded by a random character (usually `~'). As with all -completion generators, state is zero on the first call and non-zero +

+ +
+
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. -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

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(), +

+ +
+
+
+ +

2.6.3 Completion Variables

+ +
+
Variable: rl_compentry_func_t * rl_completion_entry_function
+

A pointer to the generator function for rl_completion_matches(). +NULL means to use rl_filename_completion_function(), the default filename completer. -

-

- - -

-
Variable: rl_completion_func_t * rl_attempted_completion_function -
A pointer to an alternative function to create matches. -The function is called with text, start, and end. -start and end are indices in rl_line_buffer defining -the boundaries of text, which is a character string. -If this function exists and returns NULL, or if this variable is -set to NULL, then rl_complete() will call the value of -rl_completion_entry_function to generate matches, otherwise the +

+ +
+
Variable: rl_completion_func_t * rl_attempted_completion_function
+

A pointer to an alternative function to create matches. +The function is called with text, start, and end. +start and end are indices in rl_line_buffer defining +the boundaries of text, which is a character string. +If this function exists and returns NULL, or if this variable is +set to NULL, then rl_complete() will call the value of +rl_completion_entry_function to generate matches, otherwise the array of strings returned will be used. -If this function sets the rl_attempted_completion_over +If this function sets the rl_attempted_completion_over variable to a non-zero value, Readline will not perform its default completion even if this function returns no matches. -

-

+

- -
-
Variable: rl_quote_func_t * rl_filename_quoting_function -
A pointer to a function that will quote a filename in an +
+
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 +attempted and one of the characters in rl_filename_quote_characters appears in a completed filename. The function is called with -text, match_type, and quote_pointer. The text -is the filename to be quoted. The match_type is either -SINGLE_MATCH, if there is only one completion match, or -MULT_MATCH. Some functions use this to decide whether or not to -insert a closing quote character. The quote_pointer is a pointer +text, match_type, and quote_pointer. The text +is the filename to be quoted. The match_type is either +SINGLE_MATCH, if there is only one completion match, or +MULT_MATCH. Some functions use this to decide whether or not to +insert a closing quote character. The quote_pointer is a pointer to any opening quote character the user typed. Some functions choose to reset this character. -

-

+

- -
-
Variable: rl_dequote_func_t * rl_filename_dequoting_function -
A pointer to a function that will remove application-specific quoting +
+
Variable: rl_dequote_func_t * rl_filename_dequoting_function
+

A pointer to a function that will remove application-specific quoting characters from a filename before completion is attempted, so those characters do not interfere with matching the text against names in -the filesystem. It is called with text, the text of the word -to be dequoted, and quote_char, which is the quoting character -that delimits the filename (usually `'' or `"'). If -quote_char is zero, the filename was not in an embedded string. -

-

- - -

-
Variable: rl_linebuf_func_t * rl_char_is_quoted_p -
A pointer to a function to call that determines whether or not a specific +the filesystem. It is called with text, the text of the word +to be dequoted, and quote_char, which is the quoting character +that delimits the filename (usually ‘'’ or ‘"’). If +quote_char is zero, the filename was not in an embedded string. +

+ +
+
Variable: rl_linebuf_func_t * rl_char_is_quoted_p
+

A pointer to a function to call that determines whether or not a specific character in the line buffer is quoted, according to whatever quoting mechanism the program calling Readline uses. The function is called with -two arguments: text, the text of the line, and index, the +two arguments: text, the text of the line, and index, the index of the character in the line. It is used to decide whether a -character found in rl_completer_word_break_characters should be +character found in rl_completer_word_break_characters should be used to break words for the completer. -

-

+

- -
-
Variable: rl_compignore_func_t * rl_ignore_some_completions_function -
This function, if defined, is called by the completer when real filename +
+
Variable: rl_compignore_func_t * rl_ignore_some_completions_function
+

This function, if defined, is called by the completer when real filename completion is done, after all the matching names have been generated. -It is passed a NULL terminated array of matches. -The first element (matches[0]) is the +It is passed a NULL terminated array of matches. +The first element (matches[0]) is the maximal substring common to all matches. This function can re-arrange the list of matches as required, but each element deleted from the array must be freed. -

-

+

- -
-
Variable: rl_icppfunc_t * rl_directory_completion_hook -
This function, if defined, is allowed to modify the directory portion +
+
Variable: rl_icppfunc_t * rl_directory_completion_hook
+

This function, if defined, is allowed to modify the directory portion of filenames Readline completes. It could be used to expand symbolic links or shell variables in pathnames. It is called with the address of a string (the current directory name) as an @@ -5384,384 +4488,321 @@ The modified value will be used as part of the completion, replacing the directory portion of the pathname the user typed. At the least, even if no other expansion is performed, this function should remove any quote characters from the directory name, because its result will -be passed directly to opendir(). -

- -The directory completion hook returns an integer that should be non-zero if +be passed directly to opendir(). +

+

The directory completion hook returns an integer that should be non-zero if the function modifies its directory argument. The function should not modify the directory argument if it returns 0. -

-

+

- -
-
Variable: rl_icppfunc_t * rl_directory_rewrite_hook; -
If non-zero, this is the address of a function to call when completing +
+
Variable: rl_icppfunc_t * rl_directory_rewrite_hook;
+

If non-zero, this is the address of a function to call when completing a directory name. This function takes the address of the directory name -to be modified as an argument. Unlike rl_directory_completion_hook, -it only modifies the directory name used in opendir, not what is +to be modified as an argument. Unlike rl_directory_completion_hook, +it only modifies the directory name used in opendir, not what is displayed when the possible completions are printed or inserted. It is called before rl_directory_completion_hook. At the least, even if no other expansion is performed, this function should remove any quote characters from the directory name, because its result will -be passed directly to opendir(). -

- -The directory rewrite hook returns an integer that should be non-zero if +be passed directly to opendir(). +

+

The directory rewrite hook returns an integer that should be non-zero if the function modifies its directory argument. The function should not modify the directory argument if it returns 0. -

-

+

- -
-
Variable: rl_icppfunc_t * rl_filename_stat_hook -
If non-zero, this is the address of a function for the completer to +
+
Variable: rl_icppfunc_t * rl_filename_stat_hook
+

If non-zero, this is the address of a function for the completer to call before deciding which character to append to a completed name. This function modifies its filename name argument, and the modified value -is passed to stat() to determine the file's type and characteristics. +is passed to stat() to determine the file’s type and characteristics. This function does not need to remove quote characters from the filename. -

- -The stat hook returns an integer that should be non-zero if +

+

The stat hook returns an integer that should be non-zero if the function modifies its directory argument. The function should not modify the directory argument if it returns 0. -

-

+

- -
-
Variable: rl_dequote_func_t * rl_filename_rewrite_hook -
If non-zero, this is the address of a function called when reading +
+
Variable: rl_dequote_func_t * rl_filename_rewrite_hook
+

If non-zero, this is the address of a function called when reading directory entries from the filesystem for completion and comparing them to the partial word to be completed. The function should perform any necessary application or system-specific conversion on the filename, such as converting between character sets or converting from a filesystem format to a character input format. -The function takes two arguments: fname, the filename to be converted, -and fnlen, its length in bytes. +The function takes two arguments: fname, the filename to be converted, +and fnlen, its length in bytes. It must either return its first argument (if no conversion takes place) or the converted filename in newly-allocated memory. The converted form is used to compare against the word to be completed, and, if it matches, is added to the list of matches. Readline will free the allocated string. -

-

+

- -
-
Variable: rl_compdisp_func_t * rl_completion_display_matches_hook -
If non-zero, then this is the address of a function to call when +
+
Variable: rl_compdisp_func_t * rl_completion_display_matches_hook
+

If non-zero, then this is the address of a function to call when completing a word would normally display the list of possible matches. This function is called in lieu of Readline displaying the list. It takes three arguments: -(char **matches, int num_matches, int max_length) -where matches is the array of matching strings, -num_matches is the number of strings in that array, and -max_length is the length of the longest string in that array. -Readline provides a convenience function, rl_display_match_list, -that takes care of doing the display to Readline's output stream. +(char **matches, int num_matches, int max_length) +where matches is the array of matching strings, +num_matches is the number of strings in that array, and +max_length is the length of the longest string in that array. +Readline provides a convenience function, rl_display_match_list, +that takes care of doing the display to Readline’s output stream. You may call that function from this hook. -

-

+

- -
-
Variable: const char * rl_basic_word_break_characters -
The basic list of characters that signal a break between words for the +
+
Variable: const char * rl_basic_word_break_characters
+

The basic list of characters that signal a break between words for the completer routine. The default value of this variable is the characters which break words for completion in Bash: -" \t\n\"\\'`@$><=;|&{(". -

-

- - -

-
Variable: const char * rl_basic_quote_characters -
A list of quote characters which can cause a word break. -
-

- - -

-
Variable: const char * rl_completer_word_break_characters -
The list of characters that signal a break between words for -rl_complete_internal(). The default list is the value of -rl_basic_word_break_characters. -
-

- - -

-
Variable: rl_cpvfunc_t * rl_completion_word_break_hook -
If non-zero, this is the address of a function to call when Readline is +" \t\n\"\\'`@$><=;|&{(". +

+ +
+
Variable: const char * rl_basic_quote_characters
+

A list of quote characters which can cause a word break. +

+ +
+
Variable: const char * rl_completer_word_break_characters
+

The list of characters that signal a break between words for +rl_complete_internal(). The default list is the value of +rl_basic_word_break_characters. +

+ +
+
Variable: rl_cpvfunc_t * rl_completion_word_break_hook
+

If non-zero, this is the address of a function to call when Readline is deciding where to separate words for word completion. It should return -a character string like rl_completer_word_break_characters to be +a character string like rl_completer_word_break_characters to be used to perform the current completion. The function may choose to set -rl_completer_word_break_characters itself. If the function -returns NULL, rl_completer_word_break_characters is used. -

-

- - -

-
Variable: const char * rl_completer_quote_characters -
A list of characters which can be used to quote a substring of the line. +rl_completer_word_break_characters itself. If the function +returns NULL, rl_completer_word_break_characters is used. +

+ +
+
Variable: const char * rl_completer_quote_characters
+

A list of characters which can be used to quote a substring of the line. Completion occurs on the entire substring, and within the substring -rl_completer_word_break_characters are treated as any other character, +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 +
+
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. +

+ +
+
Variable: const char * rl_special_prefixes
+

The list of characters that are word break characters, but should be +left in text when it is passed to the completion function. Programs can use this to help determine what kind of completing to do. -For instance, Bash sets this variable to "$@" so that it can complete +For instance, Bash sets this variable to "$@" so that it can complete shell variables and hostnames. -

-

- - -

-
Variable: int rl_completion_query_items -
Up to this many items will be displayed in response to a -possible-completions call. After that, readline asks the user if she is sure -she wants to see them all. The default value is 100. A negative value -indicates that Readline should never ask the user. -
-

- - -

-
Variable: int rl_completion_append_character -
When a single completion alternative matches at the end of the command +

+ +
+
Variable: int rl_completion_query_items
+

Up to this many items will be displayed in response to a +possible-completions call. After that, Readline asks the user for +confirmation before displaying them. +The default value is 100. A negative value +indicates that Readline should never ask for confirmation. +

+ +
+
Variable: int rl_completion_append_character
+

When a single completion alternative matches at the end of the command line, this character is appended to the inserted completion text. The -default is a space character (` '). Setting this to the null -character (`\0') prevents anything being appended automatically. +default is a space character (‘ ’). Setting this to the null +character (‘\0’) prevents anything being appended automatically. This can be changed in application-specific completion functions to -provide the "most sensible word separator character" according to +provide the “most sensible word separator character” according to an application-specific command line syntax specification. It is set to the default before any application-specific completion function is called, and may only be changed within such a function. -

-

+

- -
-
Variable: int rl_completion_suppress_append -
If non-zero, rl_completion_append_character is not appended to +
+
Variable: int rl_completion_suppress_append
+

If non-zero, rl_completion_append_character is not appended to matches at the end of the command line, as described above. It is set to 0 before any application-specific completion function is called, and may only be changed within such a function. -

-

- - -

-
Variable: int rl_completion_quote_character -
When Readline is completing quoted text, as delimited by one of the -characters in rl_completer_quote_characters, it sets this variable +

+ +
+
Variable: int rl_completion_quote_character
+

When Readline is completing quoted text, as delimited by one of the +characters in rl_completer_quote_characters, it sets this variable to the quoting character found. This is set before any application-specific completion function is called. -

-

+

- -
-
Variable: int rl_completion_suppress_quote -
If non-zero, Readline does not append a matching quote character when +
+
Variable: int rl_completion_suppress_quote
+

If non-zero, Readline does not append a matching quote character when performing completion on a quoted string. It is set to 0 before any application-specific completion function is called, and may only be changed within such a function. -

-

+

- -
-
Variable: int rl_completion_found_quote -
When Readline is completing quoted text, it sets this variable +
+
Variable: int rl_completion_found_quote
+

When Readline is completing quoted text, it sets this variable to a non-zero value if the word being completed contains or is delimited by any quoting characters, including backslashes. This is set before any application-specific completion function is called. -

-

+

- -
-
Variable: int rl_completion_mark_symlink_dirs -
If non-zero, a slash will be appended to completed filenames that are +
+ +

If non-zero, a slash will be appended to completed filenames that are symbolic links to directory names, subject to the value of the -user-settable mark-directories variable. +user-settable mark-directories variable. This variable exists so that application-specific completion functions -can override the user's global preference (set via the -mark-symlinked-directories Readline variable) if appropriate. -This variable is set to the user's preference before any +can override the user’s global preference (set via the +mark-symlinked-directories Readline variable) if appropriate. +This variable is set to the user’s preference before any application-specific completion function is called, so unless that -function modifies the value, the user's preferences are honored. -

-

- - -

-
Variable: int rl_ignore_completion_duplicates -
If non-zero, then duplicates in the matches are removed. +function modifies the value, the user’s preferences are honored. +

+ +
+
Variable: int rl_ignore_completion_duplicates
+

If non-zero, then duplicates in the matches are removed. The default is 1. -

-

- - -

-
Variable: int rl_filename_completion_desired -
Non-zero means that the results of the matches are to be treated as -filenames. This is always zero when completion is attempted, +

+ +
+
Variable: int rl_filename_completion_desired
+

Non-zero means that the results of the matches are to be treated as +filenames. This is always zero when completion is attempted, and can only be changed within an application-specific completion function. If it is set to a non-zero value by such a function, directory names have a slash appended and Readline attempts to quote completed filenames if they contain any -characters in rl_filename_quote_characters and -rl_filename_quoting_desired is set to a non-zero value. -

-

- - -

-
Variable: int rl_filename_quoting_desired -
Non-zero means that the results of the matches are to be quoted using +characters in rl_filename_quote_characters and +rl_filename_quoting_desired is set to a non-zero value. +

+ +
+
Variable: int rl_filename_quoting_desired
+

Non-zero means that the results of the matches are to be quoted using double quotes (or an application-specific quoting mechanism) if the completed filename contains any characters in -rl_filename_quote_chars. This is always non-zero +rl_filename_quote_chars. This is always non-zero when completion is attempted, and can only be changed within an application-specific completion function. The quoting is effected via a call to the function pointed to -by rl_filename_quoting_function. -

-

- - -

-
Variable: int rl_attempted_completion_over -
If an application-specific completion function assigned to -rl_attempted_completion_function sets this variable to a non-zero +by rl_filename_quoting_function. +

+ +
+
Variable: int rl_attempted_completion_over
+

If an application-specific completion function assigned to +rl_attempted_completion_function sets this variable to a non-zero value, Readline will not perform its default filename completion even -if the application's completion function returns no matches. -It should be set only by an application's completion function. -

-

- - -

-
Variable: int rl_sort_completion_matches -
If an application sets this variable to 0, Readline will not sort the +if the application’s completion function returns no matches. +It should be set only by an application’s completion function. +

+ +
+
Variable: int rl_sort_completion_matches
+

If an application sets this variable to 0, Readline will not sort the list of completions (which implies that it cannot remove any duplicate completions). The default value is 1, which means that Readline will sort the completions and, depending on the value of -rl_ignore_completion_duplicates, will attempt to remove duplicate +rl_ignore_completion_duplicates, will attempt to remove duplicate matches. -

-

- - -

-
Variable: int rl_completion_type -
Set to a character describing the type of completion Readline is currently -attempting; see the description of rl_complete_internal() -(see section 2.6.2 Completion Functions) for the list of characters. +

+ +
+
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 Completion Functions) for the list of characters. This is set to the appropriate value before any application-specific completion function is called, allowing such functions to present -the same interface as rl_complete(). -

-

- - -

-
Variable: int rl_completion_invoking_key -
Set to the final character in the key sequence that invoked one of the -completion functions that call rl_complete_internal(). This is +the same interface as rl_complete(). +

+ +
+
Variable: int rl_completion_invoking_key
+

Set to the final character in the key sequence that invoked one of the +completion functions that call rl_complete_internal(). This is set to the appropriate value before any application-specific completion function is called. -

-

- - -

-
Variable: int rl_inhibit_completion -
If this variable is non-zero, completion is inhibited. The completion -character will be inserted as any other bound to self-insert. -
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2.6.4 A Short Completion Example

- -

- -Here is a small application demonstrating the use of the GNU Readline -library. It is called fileman, and the source code resides in -`examples/fileman.c'. This sample application provides +

+ +
+
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. +

+ +
+
+
+ +

2.6.4 A Short Completion Example

+ +

Here is a small application demonstrating the use of the GNU Readline +library. It is called fileman, and the source code resides in +examples/fileman.c. This sample application provides completion of command names, line editing features, and access to the history list. -

- -
 
/* fileman.c -- A tiny application which demonstrates how to use the
+

+
+
/* fileman.c -- A tiny application which demonstrates how to use the
    GNU Readline library.  This application interactively allows users
    to manipulate files and their modes. */
 
 #ifdef HAVE_CONFIG_H
-#  include <config.h>
+#  include <config.h>
 #endif
 
-#include <sys/types.h>
+#include <sys/types.h>
 #ifdef HAVE_SYS_FILE_H
-#  include <sys/file.h>
+#  include <sys/file.h>
 #endif
-#include <sys/stat.h>
+#include <sys/stat.h>
 
 #ifdef HAVE_UNISTD_H
-#  include <unistd.h>
+#  include <unistd.h>
 #endif
 
-#include <fcntl.h>
-#include <stdio.h>
-#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <errno.h>
+#include <locale.h>
 
 #if defined (HAVE_STRING_H)
-#  include <string.h>
+#  include <string.h>
 #else /* !HAVE_STRING_H */
-#  include <strings.h>
+#  include <strings.h>
 #endif /* !HAVE_STRING_H */
 
 #ifdef HAVE_STDLIB_H
-#  include <stdlib.h>
+#  include <stdlib.h>
 #endif
 
-#include <time.h>
+#include <time.h>
 
-#include <readline/readline.h>
-#include <readline/history.h>
+#include <readline/readline.h>
+#include <readline/history.h>
 
 extern char *xmalloc PARAMS((size_t));
 
@@ -5786,17 +4827,17 @@ typedef struct {
 } COMMAND;
 
 COMMAND commands[] = {
-  { "cd", com_cd, "Change to directory DIR" },
-  { "delete", com_delete, "Delete FILE" },
-  { "help", com_help, "Display this text" },
-  { "?", com_help, "Synonym for `help'" },
-  { "list", com_list, "List files in DIR" },
-  { "ls", com_list, "Synonym for `list'" },
-  { "pwd", com_pwd, "Print the current working directory" },
-  { "quit", com_quit, "Quit using Fileman" },
-  { "rename", com_rename, "Rename FILE to NEWNAME" },
-  { "stat", com_stat, "Print out statistics on FILE" },
-  { "view", com_view, "View the contents of FILE" },
+  { "cd", com_cd, "Change to directory DIR" },
+  { "delete", com_delete, "Delete FILE" },
+  { "help", com_help, "Display this text" },
+  { "?", com_help, "Synonym for `help'" },
+  { "list", com_list, "List files in DIR" },
+  { "ls", com_list, "Synonym for `list'" },
+  { "pwd", com_pwd, "Print the current working directory" },
+  { "quit", com_quit, "Quit using Fileman" },
+  { "rename", com_rename, "Rename FILE to NEWNAME" },
+  { "stat", com_stat, "Print out statistics on FILE" },
+  { "view", com_view, "View the contents of FILE" },
   { (char *)NULL, (rl_icpfunc_t *)NULL, (char *)NULL }
 };
 
@@ -5827,6 +4868,8 @@ main (argc, argv)
 {
   char *line, *s;
 
+  setlocale (LC_ALL, "");
+
   progname = argv[0];
 
   initialize_readline ();	/* Bind our completer. */
@@ -5834,7 +4877,7 @@ main (argc, argv)
   /* Loop reading and executing lines until the user quits. */
   for ( ; done == 0; )
     {
-      line = readline ("FileMan: ");
+      line = readline ("FileMan: ");
 
       if (!line)
         break;
@@ -5866,11 +4909,11 @@ execute_line (line)
 
   /* Isolate the command word. */
   i = 0;
-  while (line[i] && whitespace (line[i]))
+  while (line[i] && whitespace (line[i]))
     i++;
   word = line + i;
 
-  while (line[i] && !whitespace (line[i]))
+  while (line[i] && !whitespace (line[i]))
     i++;
 
   if (line[i])
@@ -5880,7 +4923,7 @@ execute_line (line)
 
   if (!command)
     {
-      fprintf (stderr, "%s: No such command for FileMan.\n", word);
+      fprintf (stderr, "%s: No such command for FileMan.\n", word);
       return (-1);
     }
 
@@ -5891,7 +4934,7 @@ execute_line (line)
   word = line + i;
 
   /* Call the function. */
-  return ((*(command->func)) (word));
+  return ((*(command->func)) (word));
 }
 
 /* Look up NAME as the name of a command, and return a pointer to that
@@ -5904,7 +4947,7 @@ find_command (name)
 
   for (i = 0; commands[i].name; i++)
     if (strcmp (name, commands[i].name) == 0)
-      return (&commands[i]);
+      return (&commands[i]);
 
   return ((COMMAND *)NULL);
 }
@@ -5924,7 +4967,7 @@ stripwhite (string)
     return (s);
 
   t = s + strlen (s) - 1;
-  while (t > s && whitespace (*t))
+  while (t > s && whitespace (*t))
     t--;
   *++t = '\0';
 
@@ -5946,7 +4989,7 @@ char **fileman_completion PARAMS((const char *, int, int));
 initialize_readline ()
 {
   /* Allow conditional parsing of the ~/.inputrc file. */
-  rl_readline_name = "FileMan";
+  rl_readline_name = "FileMan";
 
   /* Tell the completer that we want a crack first. */
   rl_attempted_completion_function = fileman_completion;
@@ -6023,23 +5066,23 @@ com_list (arg)
      char *arg;
 {
   if (!arg)
-    arg = "";
+    arg = "";
 
-  sprintf (syscom, "ls -FClg %s", arg);
+  sprintf (syscom, "ls -FClg %s", arg);
   return (system (syscom));
 }
 
 com_view (arg)
      char *arg;
 {
-  if (!valid_argument ("view", arg))
+  if (!valid_argument ("view", arg))
     return 1;
 
 #if defined (__MSDOS__)
   /* more.com doesn't grok slashes in pathnames */
-  sprintf (syscom, "less %s", arg);
+  sprintf (syscom, "less %s", arg);
 #else
-  sprintf (syscom, "more %s", arg);
+  sprintf (syscom, "more %s", arg);
 #endif
   return (system (syscom));
 }
@@ -6047,7 +5090,7 @@ com_view (arg)
 com_rename (arg)
      char *arg;
 {
-  too_dangerous ("rename");
+  too_dangerous ("rename");
   return (1);
 }
 
@@ -6056,33 +5099,33 @@ com_stat (arg)
 {
   struct stat finfo;
 
-  if (!valid_argument ("stat", arg))
+  if (!valid_argument ("stat", arg))
     return (1);
 
-  if (stat (arg, &finfo) == -1)
+  if (stat (arg, &finfo) == -1)
     {
       perror (arg);
       return (1);
     }
 
-  printf ("Statistics for `%s':\n", arg);
+  printf ("Statistics for `%s':\n", arg);
 
-  printf ("%s has %d link%s, and is %d byte%s in length.\n",
+  printf ("%s has %d link%s, and is %d byte%s in length.\n",
 	  arg,
           finfo.st_nlink,
-          (finfo.st_nlink == 1) ? "" : "s",
+          (finfo.st_nlink == 1) ? "" : "s",
           finfo.st_size,
-          (finfo.st_size == 1) ? "" : "s");
-  printf ("Inode Last Change at: %s", ctime (&finfo.st_ctime));
-  printf ("      Last access at: %s", ctime (&finfo.st_atime));
-  printf ("    Last modified at: %s", ctime (&finfo.st_mtime));
+          (finfo.st_size == 1) ? "" : "s");
+  printf ("Inode Last Change at: %s", ctime (&finfo.st_ctime));
+  printf ("      Last access at: %s", ctime (&finfo.st_atime));
+  printf ("    Last modified at: %s", ctime (&finfo.st_mtime));
   return (0);
 }
 
 com_delete (arg)
      char *arg;
 {
-  too_dangerous ("delete");
+  too_dangerous ("delete");
   return (1);
 }
 
@@ -6098,14 +5141,14 @@ com_help (arg)
     {
       if (!*arg || (strcmp (arg, commands[i].name) == 0))
         {
-          printf ("%s\t\t%s.\n", commands[i].name, commands[i].doc);
+          printf ("%s\t\t%s.\n", commands[i].name, commands[i].doc);
           printed++;
         }
     }
 
   if (!printed)
     {
-      printf ("No commands match `%s'.  Possibilities are:\n", arg);
+      printf ("No commands match `%s'.  Possibilities are:\n", arg);
 
       for (i = 0; commands[i].name; i++)
         {
@@ -6113,15 +5156,15 @@ com_help (arg)
           if (printed == 6)
             {
               printed = 0;
-              printf ("\n");
+              printf ("\n");
             }
 
-          printf ("%s\t", commands[i].name);
+          printf ("%s\t", commands[i].name);
           printed++;
         }
 
       if (printed)
-        printf ("\n");
+        printf ("\n");
     }
   return (0);
 }
@@ -6136,7 +5179,7 @@ com_cd (arg)
       return 1;
     }
 
-  com_pwd ("");
+  com_pwd ("");
   return (0);
 }
 
@@ -6149,11 +5192,11 @@ com_pwd (ignore)
   s = getcwd (dir, sizeof(dir) - 1);
   if (s == 0)
     {
-      printf ("Error getting pwd: %s\n", dir);
+      printf ("Error getting pwd: %s\n", dir);
       return 1;
     }
 
-  printf ("Current directory is %s\n", dir);
+  printf ("Current directory is %s\n", dir);
   return 0;
 }
 
@@ -6170,7 +5213,7 @@ too_dangerous (caller)
      char *caller;
 {
   fprintf (stderr,
-           "%s: Too dangerous for me to distribute.  Write it yourself.\n",
+           "%s: Too dangerous for me to distribute.  Write it yourself.\n",
            caller);
 }
 
@@ -6182,96 +5225,79 @@ valid_argument (caller, arg)
 {
   if (!arg || !*arg)
     {
-      fprintf (stderr, "%s: Argument required.\n", caller);
+      fprintf (stderr, "%s: Argument required.\n", caller);
       return (0);
     }
 
   return (1);
 }
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

A. GNU Free Documentation License

- -

- -

- Version 1.3, 3 November 2008 -
-

- -
 
Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
-http://fsf.org/
+
+ +
+ + + +
+ +

Appendix A GNU Free Documentation License

+ +
Version 1.3, 3 November 2008 +
+ +
+
Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+http://fsf.org/
 
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.
-

+

-
    -
  1. -PREAMBLE -

    +

      +
    1. PREAMBLE -The purpose of this License is to make a manual, textbook, or other -functional and useful document free in the sense of freedom: to +

      The purpose of this License is to make a manual, textbook, or other +functional and useful document free in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. -

      - -This License is a kind of "copyleft", which means that derivative +

      +

      This License is a kind of “copyleft”, which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. -

      - -We have designed this License in order to use it for manuals for free +

      +

      We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. -

      +

      +
    2. APPLICABILITY AND DEFINITIONS -
    3. -APPLICABILITY AND DEFINITIONS -

      - -This License applies to any manual or other work, in any medium, that +

      This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that -work under the conditions stated herein. The "Document", below, +work under the conditions stated herein. The “Document”, below, refers to any such manual or work. Any member of the public is a -licensee, and is addressed as "you". You accept the license if you +licensee, and is addressed as “you”. You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. -

      - -A "Modified Version" of the Document means any work containing the +

      +

      A “Modified Version” of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. -

      - -A "Secondary Section" is a named appendix or a front-matter section +

      +

      A “Secondary Section” is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the -publishers or authors of the Document to the Document's overall +publishers or authors of the Document to the Document’s overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain @@ -6279,24 +5305,21 @@ any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. -

      - -The "Invariant Sections" are certain Secondary Sections whose titles +

      +

      The “Invariant Sections” are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. -

      - -The "Cover Texts" are certain short passages of text that are listed, +

      +

      The “Cover Texts” are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. -

      - -A "Transparent" copy of the Document means a machine-readable copy, +

      +

      A “Transparent” copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of @@ -6307,57 +5330,49 @@ to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount -of text. A copy that is not "Transparent" is called "Opaque". -

      - -Examples of suitable formats for Transparent copies include plain -ASCII without markup, Texinfo input format, LaTeX input -format, SGML or XML using a publicly available -DTD, and standard-conforming simple HTML, -PostScript or PDF designed for human modification. Examples -of transparent image formats include PNG, XCF and -JPG. Opaque formats include proprietary formats that can be -read and edited only by proprietary word processors, SGML or -XML for which the DTD and/or processing tools are -not generally available, and the machine-generated HTML, -PostScript or PDF produced by some word processors for +of text. A copy that is not “Transparent” is called “Opaque”. +

      +

      Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, LaTeX input +format, SGML or XML using a publicly available +DTD, and standard-conforming simple HTML, +PostScript or PDF designed for human modification. Examples +of transparent image formats include PNG, XCF and +JPG. Opaque formats include proprietary formats that can be +read and edited only by proprietary word processors, SGML or +XML for which the DTD and/or processing tools are +not generally available, and the machine-generated HTML, +PostScript or PDF produced by some word processors for output purposes only. -

      - -The "Title Page" means, for a printed book, the title page itself, +

      +

      The “Title Page” means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in -formats which do not have any title page as such, "Title Page" means -the text near the most prominent appearance of the work's title, +formats which do not have any title page as such, “Title Page” means +the text near the most prominent appearance of the work’s title, preceding the beginning of the body of the text. -

      - -The "publisher" means any person or entity that distributes copies +

      +

      The “publisher” means any person or entity that distributes copies of the Document to the public. -

      - -A section "Entitled XYZ" means a named subunit of the Document whose +

      +

      A section “Entitled XYZ” means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a -specific section name mentioned below, such as "Acknowledgements", -"Dedications", "Endorsements", or "History".) To "Preserve the Title" +specific section name mentioned below, such as “Acknowledgements”, +“Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” of such a section when you modify the Document means that it remains a -section "Entitled XYZ" according to this definition. -

      - -The Document may include Warranty Disclaimers next to the notice which +section “Entitled XYZ” according to this definition. +

      +

      The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. -

      - -

    4. -VERBATIM COPYING -

      +

      +
    5. VERBATIM COPYING -You may copy and distribute the Document in any medium, either +

      You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other @@ -6366,19 +5381,15 @@ technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. -

      - -You may also lend copies, under the same conditions stated above, and +

      +

      You may also lend copies, under the same conditions stated above, and you may publicly display copies. -

      - -

    6. -COPYING IN QUANTITY -

      +

      +
    7. COPYING IN QUANTITY -If you publish printed copies (or copies in media that commonly have +

      If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the -Document's license notice requires Cover Texts, you must enclose the +Document’s license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify @@ -6388,15 +5399,13 @@ visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. -

      - -If the required texts for either cover are too voluminous to fit +

      +

      If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. -

      - -If you publish or distribute Opaque copies of the Document numbering +

      +

      If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using @@ -6408,135 +5417,98 @@ that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. -

      - -It is requested, but not required, that you contact the authors of the +

      +

      It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. -

      +

      +
    8. MODIFICATIONS -
    9. -MODIFICATIONS -

      - -You may copy and distribute a Modified Version of the Document under +

      You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: -

      - -

        -
      1. -Use in the Title Page (and on the covers, if any) a title distinct +

        +
          +
        1. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. -

          -

        2. -List on the Title Page, as authors, one or more persons or entities +
        3. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. -

          -

        4. -State on the Title page the name of the publisher of the +
        5. State on the Title page the name of the publisher of the Modified Version, as the publisher. -

          -

        6. -Preserve all the copyright notices of the Document. -

          +

        7. Preserve all the copyright notices of the Document. -
        8. -Add an appropriate copyright notice for your modifications +
        9. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. -

          -

        10. -Include, immediately after the copyright notices, a license notice +
        11. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. -

          -

        12. -Preserve in that license notice the full lists of Invariant Sections -and required Cover Texts given in the Document's license notice. -

          +

        13. Preserve in that license notice the full lists of Invariant Sections +and required Cover Texts given in the Document’s license notice. -
        14. -Include an unaltered copy of this License. -

          +

        15. Include an unaltered copy of this License. -
        16. -Preserve the section Entitled "History", Preserve its Title, and add +
        17. Preserve the section Entitled “History”, Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If -there is no section Entitled "History" in the Document, create one +there is no section Entitled “History” in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. -

          -

        18. -Preserve the network location, if any, given in the Document for +
        19. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions -it was based on. These may be placed in the "History" section. +it was based on. These may be placed in the “History” section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. -

          -

        20. -For any section Entitled "Acknowledgements" or "Dedications", Preserve +
        21. For any section Entitled “Acknowledgements” or “Dedications”, Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. -

          -

        22. -Preserve all the Invariant Sections of the Document, +
        23. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. -

          -

        24. -Delete any section Entitled "Endorsements". Such a section +
        25. Delete any section Entitled “Endorsements”. Such a section may not be included in the Modified Version. -

          -

        26. -Do not retitle any existing section to be Entitled "Endorsements" or +
        27. Do not retitle any existing section to be Entitled “Endorsements” or to conflict in title with any Invariant Section. -

          -

        28. -Preserve any Warranty Disclaimers. -
        -

        +

      2. Preserve any Warranty Disclaimers. +
      -If the Modified Version includes new front-matter sections or +

      If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the -list of Invariant Sections in the Modified Version's license notice. +list of Invariant Sections in the Modified Version’s license notice. These titles must be distinct from any other section titles. -

      - -You may add a section Entitled "Endorsements", provided it contains +

      +

      You may add a section Entitled “Endorsements”, provided it contains nothing but endorsements of your Modified Version by various -parties--for example, statements of peer review or that the text has +parties—for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. -

      - -You may add a passage of up to five words as a Front-Cover Text, and a +

      +

      You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or @@ -6545,26 +5517,21 @@ includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. -

      - -The author(s) and publisher(s) of the Document do not by this License +

      +

      The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. -

      - -

    10. -COMBINING DOCUMENTS -

      +

      +
    11. COMBINING DOCUMENTS -You may combine the Document with other documents released under this +

      You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. -

      - -The combined work need only contain one copy of this License, and +

      +

      The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by @@ -6572,60 +5539,48 @@ adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. -

      - -In the combination, you must combine any sections Entitled "History" +

      +

      In the combination, you must combine any sections Entitled “History” in the various original documents, forming one section Entitled -"History"; likewise combine any sections Entitled "Acknowledgements", -and any sections Entitled "Dedications". You must delete all -sections Entitled "Endorsements." -

      - -

    12. -COLLECTIONS OF DOCUMENTS -

      +“History”; likewise combine any sections Entitled “Acknowledgements”, +and any sections Entitled “Dedications”. You must delete all +sections Entitled “Endorsements.” +

      +
    13. COLLECTIONS OF DOCUMENTS -You may make a collection consisting of the Document and other documents +

      You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. -

      - -You may extract a single document from such a collection, and distribute +

      +

      You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. -

      - -

    14. -AGGREGATION WITH INDEPENDENT WORKS -

      +

      +
    15. AGGREGATION WITH INDEPENDENT WORKS -A compilation of the Document or its derivatives with other separate +

      A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or -distribution medium, is called an "aggregate" if the copyright +distribution medium, is called an “aggregate” if the copyright resulting from the compilation is not used to limit the legal rights -of the compilation's users beyond what the individual works permit. +of the compilation’s users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. -

      - -If the Cover Text requirement of section 3 is applicable to these +

      +

      If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of -the entire aggregate, the Document's Cover Texts may be placed on +the entire aggregate, the Document’s Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. -

      +

      +
    16. TRANSLATION -
    17. -TRANSLATION -

      - -Translation is considered a kind of modification, so you may +

      Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include @@ -6637,1133 +5592,695 @@ the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. -

      - -If a section in the Document is Entitled "Acknowledgements", -"Dedications", or "History", the requirement (section 4) to Preserve +

      +

      If a section in the Document is Entitled “Acknowledgements”, +“Dedications”, or “History”, the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. -

      +

      +
    18. TERMINATION -
    19. -TERMINATION -

      - -You may not copy, modify, sublicense, or distribute the Document +

      You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License. -

      - -However, if you cease all violation of this License, then your license +

      +

      However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. -

      - -Moreover, your license from a particular copyright holder is +

      +

      Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. -

      - -Termination of your rights under this section does not terminate the +

      +

      Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it. -

      - -

    20. -FUTURE REVISIONS OF THIS LICENSE -

      +

      +
    21. FUTURE REVISIONS OF THIS LICENSE -The Free Software Foundation may publish new, revised versions +

      The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See -http://www.gnu.org/copyleft/. -

      - -Each version of the License is given a distinguishing version number. +http://www.gnu.org/copyleft/. +

      +

      Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this -License "or any later version" applies to it, you have the option of +License “or any later version” applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this -License can be used, that proxy's public statement of acceptance of a +License can be used, that proxy’s public statement of acceptance of a version permanently authorizes you to choose that version for the Document. -

      - -

    22. -RELICENSING -

      +

      +
    23. RELICENSING -"Massive Multiauthor Collaboration Site" (or "MMC Site") means any +

      “Massive Multiauthor Collaboration Site” (or “MMC Site”) means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A -"Massive Multiauthor Collaboration" (or "MMC") contained in the +“Massive Multiauthor Collaboration” (or “MMC”) contained in the site means any set of copyrightable works thus published on the MMC site. -

      - -"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 +

      +

      “CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization. -

      - -"Incorporate" means to publish or republish a Document, in whole or +

      +

      “Incorporate” means to publish or republish a Document, in whole or in part, as part of another Document. -

      - -An MMC is "eligible for relicensing" if it is licensed under this +

      +

      An MMC is “eligible for relicensing” if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008. -

      - -The operator of an MMC Site may republish an MMC contained in the site +

      +

      The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing. -

      - -

    -

    +

    +
- -

ADDENDUM: How to use this License for your documents

- -

+

ADDENDUM: How to use this License for your documents

-To use this License in a document you have written, include a copy of +

To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: -

- -
 
  Copyright (C)  year  your name.
+

+
+
  Copyright (C)  year  your name.
   Permission is granted to copy, distribute and/or modify this document
   under the terms of the GNU Free Documentation License, Version 1.3
   or any later version published by the Free Software Foundation;
   with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
   Texts.  A copy of the license is included in the section entitled ``GNU
   Free Documentation License''.
-

- -If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, -replace the "with...Texts." line with this: -

- -
 
    with the Invariant Sections being list their titles, with
-    the Front-Cover Texts being list, and with the Back-Cover Texts
-    being list.
-

- -If you have Invariant Sections without Cover Texts, or some other +

+ +

If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the “with…Texts.” line with this: +

+
+
    with the Invariant Sections being list their titles, with
+    the Front-Cover Texts being list, and with the Back-Cover Texts
+    being list.
+
+ +

If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. -

- -If your document contains nontrivial examples of program code, we +

+

If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

Concept Index

- -
Jump to:   A -   -C +

+ + +
+ +
+ +

Concept Index

+
Jump to:   A   -E +C   -I +E   -K +I   -N +K   -R +N   -V +R   -Y +V   -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Index Entry Section

A
application-specific completion functions2.6 Custom Completers

C
command editing1.2.1 Readline Bare Essentials

E
editing command lines1.2.1 Readline Bare Essentials

I
initialization file, readline1.3 Readline Init File
interaction, readline1.2 Readline Interaction

K
kill ring1.2.3 Readline Killing Commands
killing text1.2.3 Readline Killing Commands

N
notation, readline1.2.1 Readline Bare Essentials

R
readline, function2.1 Basic Behavior

V
variables, readline1.3.1 Readline Init File Syntax

Y
yanking text1.2.3 Readline Killing Commands

Jump to:   A +Y   -C +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Index Entry  Section

A
application-specific completion functions: Custom Completers

C
command editing: Readline Bare Essentials

E
editing command lines: Readline Bare Essentials

I
initialization file, readline: Readline Init File
interaction, readline: Readline Interaction

K
kill ring: Readline Killing Commands
killing text: Readline Killing Commands

N
notation, readline: Readline Bare Essentials

R
readline, function: Basic Behavior

V
variables, readline: Readline Init File Syntax

Y
yanking text: Readline Killing Commands

+
Jump to:   A   -E +C   -I +E   -K +I   -N +K   -R +N   -V +R   -Y +V   -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

Function and Variable Index

- -
Jump to:   _ +Y   -
-A +
+ +
+
+
+ +

Function and Variable Index

+
Jump to:   _   -B -   -C -   -D -   -E +
+A   -F +B   -H +C   -I +D   -K +E   -M +F   -N +H   -O +I   -P +K   -Q +M   -R +N   -S +O   -T +P   -U +Q   -V +R   -Y +S   -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Index Entry Section

_
_rl_digit_p2.4.10 Utility Functions
_rl_digit_value2.4.10 Utility Functions
_rl_lowercase_p2.4.10 Utility Functions
_rl_to_lower2.4.10 Utility Functions
_rl_to_upper2.4.10 Utility Functions
_rl_uppercase_p2.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-&#60;)1.4.2 Commands For Manipulating The History
beginning-of-history (M-&#60;)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-style1.3.1 Readline Init File Syntax
bind-tty-special-chars1.3.1 Readline Init File Syntax
blink-matching-paren1.3.1 Readline Init File Syntax
bracketed-paste-begin ()1.4.3 Commands For Changing Text
bracketed-paste-begin ()1.4.3 Commands For Changing Text

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-display (M-C-l)1.4.1 Commands For Moving
clear-display (M-C-l)1.4.1 Commands For Moving
clear-screen (C-l)1.4.1 Commands For Moving
clear-screen (C-l)1.4.1 Commands For Moving
colored-completion-prefix1.3.1 Readline Init File Syntax
colored-stats1.3.1 Readline Init File Syntax
comment-begin1.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-display-width1.3.1 Readline Init File Syntax
completion-ignore-case1.3.1 Readline Init File Syntax
completion-map-case1.3.1 Readline Init File Syntax
completion-prefix-display-length1.3.1 Readline Init File Syntax
completion-query-items1.3.1 Readline Init File Syntax
convert-meta1.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-completion1.3.1 Readline Init File Syntax
do-lowercase-version (M-A, M-B, M-x, <small>...</small>)1.4.8 Some Miscellaneous Commands
do-lowercase-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
echo-control-characters1.3.1 Readline Init File Syntax
editing-mode1.3.1 Readline Init File Syntax
emacs-editing-mode (C-e)1.4.8 Some Miscellaneous Commands
emacs-editing-mode (C-e)1.4.8 Some Miscellaneous Commands
emacs-mode-string1.3.1 Readline Init File Syntax
enable-bracketed-paste1.3.1 Readline Init File Syntax
enable-keypad1.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-file (usually C-d)1.4.3 Commands For Changing Text
end-of-file (usually C-d)1.4.3 Commands For Changing Text
end-of-history (M-&#62;)1.4.2 Commands For Manipulating The History
end-of-history (M-&#62;)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-tilde1.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-point1.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
history-size1.3.1 Readline Init File Syntax
history-substring-search-backward ()1.4.2 Commands For Manipulating The History
history-substring-search-backward ()1.4.2 Commands For Manipulating The History
history-substring-search-forward ()1.4.2 Commands For Manipulating The History
history-substring-search-forward ()1.4.2 Commands For Manipulating The History
horizontal-scroll-mode1.3.1 Readline Init File Syntax

I
input-meta1.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-terminators1.3.1 Readline Init File Syntax

K
keymap1.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-lines1.3.1 Readline Init File Syntax
mark-symlinked-directories1.3.1 Readline Init File Syntax
match-hidden-files1.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
menu-complete-backward ()1.4.6 Letting Readline Type For You
menu-complete-backward ()1.4.6 Letting Readline Type For You
menu-complete-display-prefix1.3.1 Readline Init File Syntax
meta-flag1.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
next-screen-line ()1.4.1 Commands For Moving
next-screen-line ()1.4.1 Commands For Moving
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
operate-and-get-next (C-o)1.4.2 Commands For Manipulating The History
operate-and-get-next (C-o)1.4.2 Commands For Manipulating The History
output-meta1.3.1 Readline Init File Syntax
overwrite-mode ()1.4.3 Commands For Changing Text
overwrite-mode ()1.4.3 Commands For Changing Text

P
page-completions1.3.1 Readline Init File Syntax
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
previous-screen-line ()1.4.1 Commands For Moving
previous-screen-line ()1.4.1 Commands For Moving
print-last-kbd-macro ()1.4.7 Keyboard Macros
print-last-kbd-macro ()1.4.7 Keyboard Macros

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
readline2.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-all-at-newline1.3.1 Readline Init File Syntax
revert-line (M-r)1.4.8 Some Miscellaneous Commands
revert-line (M-r)1.4.8 Some Miscellaneous Commands
rl_activate_mark2.4.11 Miscellaneous Functions
rl_add_defun2.4.1 Naming a Function
rl_add_funmap_entry2.4.4 Associating Function Names and Bindings
rl_add_undo2.4.5 Allowing Undoing
rl_alphabetic2.4.10 Utility Functions
rl_already_prompted2.3 Readline Variables
rl_attempted_completion_function2.6.3 Completion Variables
rl_attempted_completion_over2.6.3 Completion Variables
rl_basic_quote_characters2.6.3 Completion Variables
rl_basic_word_break_characters2.6.3 Completion Variables
rl_begin_undo_group2.4.5 Allowing Undoing
rl_bind_key2.4.3 Binding Keys
rl_bind_key_if_unbound2.4.3 Binding Keys
rl_bind_key_if_unbound_in_map2.4.3 Binding Keys
rl_bind_key_in_map2.4.3 Binding Keys
rl_bind_keyseq2.4.3 Binding Keys
rl_bind_keyseq_if_unbound2.4.3 Binding Keys
rl_bind_keyseq_if_unbound_in_map2.4.3 Binding Keys
rl_bind_keyseq_in_map2.4.3 Binding Keys
rl_binding_keymap2.3 Readline Variables
rl_callback_handler_install2.4.12 Alternate Interface
rl_callback_handler_remove2.4.12 Alternate Interface
rl_callback_read_char2.4.12 Alternate Interface
rl_callback_sigcleanup2.4.12 Alternate Interface
rl_catch_signals2.5 Readline Signal Handling
rl_catch_sigwinch2.5 Readline Signal Handling
rl_change_environment2.5 Readline Signal Handling
rl_char_is_quoted_p2.6.3 Completion Variables
rl_check_signals2.5 Readline Signal Handling
rl_cleanup_after_signal2.5 Readline Signal Handling
rl_clear_history2.4.11 Miscellaneous Functions
rl_clear_message2.4.6 Redisplay
rl_clear_pending_input2.4.8 Character Input
rl_clear_signals2.5 Readline Signal Handling
rl_clear_visible_line2.4.6 Redisplay
rl_complete2.6.1 How Completing Works
rl_complete2.6.2 Completion Functions
rl_complete_internal2.6.2 Completion Functions
rl_completer_quote_characters2.6.3 Completion Variables
rl_completer_word_break_characters2.6.3 Completion Variables
rl_completion_append_character2.6.3 Completion Variables
rl_completion_display_matches_hook2.6.3 Completion Variables
rl_completion_entry_function2.6.1 How Completing Works
rl_completion_entry_function2.6.3 Completion Variables
rl_completion_found_quote2.6.3 Completion Variables
rl_completion_invoking_key2.6.3 Completion Variables
rl_completion_mark_symlink_dirs2.6.3 Completion Variables
rl_completion_matches2.6.2 Completion Functions
rl_completion_mode2.6.2 Completion Functions
rl_completion_query_items2.6.3 Completion Variables
rl_completion_quote_character2.6.3 Completion Variables
rl_completion_suppress_append2.6.3 Completion Variables
rl_completion_suppress_quote2.6.3 Completion Variables
rl_completion_type2.6.3 Completion Variables
rl_completion_word_break_hook2.6.3 Completion Variables
rl_copy_keymap2.4.2 Selecting a Keymap
rl_copy_text2.4.7 Modifying Text
rl_crlf2.4.6 Redisplay
rl_deactivate_mark2.4.11 Miscellaneous Functions
rl_delete_text2.4.7 Modifying Text
rl_deprep_term_function2.3 Readline Variables
rl_deprep_terminal2.4.9 Terminal Management
rl_ding2.4.10 Utility Functions
rl_directory_completion_hook2.6.3 Completion Variables
rl_directory_rewrite_hook;2.6.3 Completion Variables
rl_discard_keymap2.4.2 Selecting a Keymap
rl_dispatching2.3 Readline Variables
rl_display_match_list2.4.10 Utility Functions
rl_display_prompt2.3 Readline Variables
rl_do_undo2.4.5 Allowing Undoing
rl_done2.3 Readline Variables
rl_echo_signal_char2.5 Readline Signal Handling
rl_editing_mode2.3 Readline Variables
rl_empty_keymap2.4.2 Selecting a Keymap
rl_end2.3 Readline Variables
rl_end_undo_group2.4.5 Allowing Undoing
rl_erase_empty_line2.3 Readline Variables
rl_event_hook2.3 Readline Variables
rl_execute_next2.4.8 Character Input
rl_executing_key2.3 Readline Variables
rl_executing_keymap2.3 Readline Variables
rl_executing_keyseq2.3 Readline Variables
rl_executing_macro2.3 Readline Variables
rl_expand_prompt2.4.6 Redisplay
rl_explicit_arg2.3 Readline Variables
rl_extend_line_buffer2.4.10 Utility Functions
rl_filename_completion_desired2.6.3 Completion Variables
rl_filename_completion_function2.6.2 Completion Functions
rl_filename_dequoting_function2.6.3 Completion Variables
rl_filename_quote_characters2.6.3 Completion Variables
rl_filename_quoting_desired2.6.3 Completion Variables
rl_filename_quoting_function2.6.3 Completion Variables
rl_filename_rewrite_hook2.6.3 Completion Variables
rl_filename_stat_hook2.6.3 Completion Variables
rl_forced_update_display2.4.6 Redisplay
rl_free2.4.10 Utility Functions
rl_free_keymap2.4.2 Selecting a Keymap
rl_free_line_state2.5 Readline Signal Handling
rl_free_undo_list2.4.5 Allowing Undoing
rl_function_dumper2.4.4 Associating Function Names and Bindings
rl_function_of_keyseq2.4.4 Associating Function Names and Bindings
rl_function_of_keyseq_len2.4.4 Associating Function Names and Bindings
rl_funmap_names2.4.4 Associating Function Names and Bindings
rl_generic_bind2.4.3 Binding Keys
rl_get_keymap2.4.2 Selecting a Keymap
rl_get_keymap_by_name2.4.2 Selecting a Keymap
rl_get_keymap_name2.4.2 Selecting a Keymap
rl_get_screen_size2.5 Readline Signal Handling
rl_get_termcap2.4.11 Miscellaneous Functions
rl_getc2.4.8 Character Input
rl_getc_function2.3 Readline Variables
rl_gnu_readline_p2.3 Readline Variables
rl_ignore_completion_duplicates2.6.3 Completion Variables
rl_ignore_some_completions_function2.6.3 Completion Variables
rl_inhibit_completion2.6.3 Completion Variables
rl_initialize2.4.10 Utility Functions
rl_input_available_hook2.3 Readline Variables
rl_insert_completions2.6.2 Completion Functions
rl_insert_text2.4.7 Modifying Text
rl_instream2.3 Readline Variables
rl_invoking_keyseqs2.4.4 Associating Function Names and Bindings
rl_invoking_keyseqs_in_map2.4.4 Associating Function Names and Bindings
rl_keep_mark_active2.4.11 Miscellaneous Functions
rl_key_sequence_length2.3 Readline Variables
rl_kill_text2.4.7 Modifying Text
rl_last_func2.3 Readline Variables
rl_library_version2.3 Readline Variables
rl_line_buffer2.3 Readline Variables
rl_list_funmap_names2.4.4 Associating Function Names and Bindings
rl_macro_bind2.4.11 Miscellaneous Functions
rl_macro_dumper2.4.11 Miscellaneous Functions
rl_make_bare_keymap2.4.2 Selecting a Keymap
rl_make_keymap2.4.2 Selecting a Keymap
rl_mark2.3 Readline Variables
rl_mark_active_p2.4.11 Miscellaneous Functions
rl_message2.4.6 Redisplay
rl_modifying2.4.5 Allowing Undoing
rl_named_function2.4.4 Associating Function Names and Bindings
rl_num_chars_to_read2.3 Readline Variables
rl_numeric_arg2.3 Readline Variables
rl_on_new_line2.4.6 Redisplay
rl_on_new_line_with_prompt2.4.6 Redisplay
rl_outstream2.3 Readline Variables
rl_parse_and_bind2.4.3 Binding Keys
rl_pending_input2.3 Readline Variables
rl_pending_signal2.5 Readline Signal Handling
rl_persistent_signal_handlers2.5 Readline Signal Handling
rl_point2.3 Readline Variables
rl_possible_completions2.6.2 Completion Functions
rl_pre_input_hook2.3 Readline Variables
rl_prefer_env_winsize2.3 Readline Variables
rl_prep_term_function2.3 Readline Variables
rl_prep_terminal2.4.9 Terminal Management
rl_prompt2.3 Readline Variables
rl_push_macro_input2.4.7 Modifying Text
rl_read_init_file2.4.3 Binding Keys
rl_read_key2.4.8 Character Input
rl_readline_name2.3 Readline Variables
rl_readline_state2.3 Readline Variables
rl_readline_version2.3 Readline Variables
rl_redisplay2.4.6 Redisplay
rl_redisplay_function2.3 Readline Variables
rl_replace_line2.4.10 Utility Functions
rl_reset_after_signal2.5 Readline Signal Handling
rl_reset_line_state2.4.6 Redisplay
rl_reset_screen_size2.5 Readline Signal Handling
rl_reset_terminal2.4.9 Terminal Management
rl_resize_terminal2.5 Readline Signal Handling
rl_restore_prompt2.4.6 Redisplay
rl_restore_state2.4.10 Utility Functions
rl_save_prompt2.4.6 Redisplay
rl_save_state2.4.10 Utility Functions
rl_set_key2.4.3 Binding Keys
rl_set_keyboard_input_timeout2.4.8 Character Input
rl_set_keymap2.4.2 Selecting a Keymap
rl_set_keymap_name2.4.2 Selecting a Keymap
rl_set_paren_blink_timeout2.4.11 Miscellaneous Functions
rl_set_prompt2.4.6 Redisplay
rl_set_screen_size2.5 Readline Signal Handling
rl_set_signals2.5 Readline Signal Handling
rl_show_char2.4.6 Redisplay
rl_signal_event_hook2.3 Readline Variables
rl_sort_completion_matches2.6.3 Completion Variables
rl_special_prefixes2.6.3 Completion Variables
rl_startup_hook2.3 Readline Variables
rl_stuff_char2.4.8 Character Input
rl_terminal_name2.3 Readline Variables
rl_tty_set_default_bindings2.4.9 Terminal Management
rl_tty_set_echoing2.4.9 Terminal Management
rl_tty_unset_default_bindings2.4.9 Terminal Management
rl_unbind_command_in_map2.4.3 Binding Keys
rl_unbind_function_in_map2.4.3 Binding Keys
rl_unbind_key2.4.3 Binding Keys
rl_unbind_key_in_map2.4.3 Binding Keys
rl_username_completion_function2.6.2 Completion Functions
rl_variable_bind2.4.11 Miscellaneous Functions
rl_variable_dumper2.4.11 Miscellaneous Functions
rl_variable_value2.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
shell-transpose-words (M-C-t)1.4.4 Killing And Yanking
shell-transpose-words (M-C-t)1.4.4 Killing And Yanking
show-all-if-ambiguous1.3.1 Readline Init File Syntax
show-all-if-unmodified1.3.1 Readline Init File Syntax
show-mode-in-prompt1.3.1 Readline Init File Syntax
skip-completed-text1.3.1 Readline Init File Syntax
skip-csi-sequence ()1.4.8 Some Miscellaneous Commands
skip-csi-sequence ()1.4.8 Some Miscellaneous Commands
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-filename-rubout ()1.4.4 Killing And Yanking
unix-filename-rubout ()1.4.4 Killing And Yanking
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
vi-cmd-mode-string1.3.1 Readline Init File Syntax
vi-editing-mode (M-C-j)1.4.8 Some Miscellaneous Commands
vi-editing-mode (M-C-j)1.4.8 Some Miscellaneous Commands
vi-ins-mode-string1.3.1 Readline Init File Syntax
visible-stats1.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:   _ +T   -
-A +U   -B +V   -C +Y   -D +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Index Entry  Section

_
_rl_digit_p: Utility Functions
_rl_digit_value: Utility Functions
_rl_lowercase_p: Utility Functions
_rl_to_lower: Utility Functions
_rl_to_upper: Utility Functions
_rl_uppercase_p: Utility Functions

A
abort (C-g): Miscellaneous Commands
accept-line (Newline or Return): Commands For History
active-region-end-color: Readline Init File Syntax
active-region-start-color: Readline Init File Syntax

B
backward-char (C-b): Commands For Moving
backward-delete-char (Rubout): Commands For Text
backward-kill-line (C-x Rubout): Commands For Killing
backward-kill-word (M-DEL): Commands For Killing
backward-word (M-b): Commands For Moving
beginning-of-history (M-<): Commands For History
beginning-of-line (C-a): Commands For Moving
bell-style: Readline Init File Syntax
bind-tty-special-chars: Readline Init File Syntax
blink-matching-paren: Readline Init File Syntax
bracketed-paste-begin (): Commands For Text

C
call-last-kbd-macro (C-x e): Keyboard Macros
capitalize-word (M-c): Commands For Text
character-search (C-]): Miscellaneous Commands
character-search-backward (M-C-]): Miscellaneous Commands
clear-display (M-C-l): Commands For Moving
clear-screen (C-l): Commands For Moving
colored-completion-prefix: Readline Init File Syntax
colored-stats: Readline Init File Syntax
comment-begin: Readline Init File Syntax
complete (TAB): Commands For Completion
completion-display-width: Readline Init File Syntax
completion-ignore-case: Readline Init File Syntax
completion-map-case: Readline Init File Syntax
completion-prefix-display-length: Readline Init File Syntax
completion-query-items: Readline Init File Syntax
convert-meta: Readline Init File Syntax
copy-backward-word (): Commands For Killing
copy-forward-word (): Commands For Killing
copy-region-as-kill (): Commands For Killing

D
delete-char (C-d): Commands For Text
delete-char-or-list (): Commands For Completion
delete-horizontal-space (): Commands For Killing
digit-argument (M-0, M-1, … M--): Numeric Arguments
disable-completion: Readline Init File Syntax
do-lowercase-version (M-A, M-B, M-x, …): Miscellaneous Commands
downcase-word (M-l): Commands For Text
dump-functions (): Miscellaneous Commands
dump-macros (): Miscellaneous Commands
dump-variables (): Miscellaneous Commands

E
echo-control-characters: Readline Init File Syntax
editing-mode: Readline Init File Syntax
emacs-editing-mode (C-e): Miscellaneous Commands
emacs-mode-string: Readline Init File Syntax
enable-active-region: Readline Init File Syntax
enable-bracketed-paste: Readline Init File Syntax
enable-keypad: Readline Init File Syntax
end-kbd-macro (C-x )): Keyboard Macros
end-of-file (usually C-d): Commands For Text
end-of-history (M->): Commands For History
end-of-line (C-e): Commands For Moving
exchange-point-and-mark (C-x C-x): Miscellaneous Commands
expand-tilde: Readline Init File Syntax

F
fetch-history (): Commands For History
forward-backward-delete-char (): Commands For Text
forward-char (C-f): Commands For Moving
forward-search-history (C-s): Commands For History
forward-word (M-f): Commands For Moving

H
history-preserve-point: Readline Init File Syntax
history-search-backward (): Commands For History
history-search-forward (): Commands For History
history-size: Readline Init File Syntax
history-substring-search-backward (): Commands For History
history-substring-search-forward (): Commands For History
horizontal-scroll-mode: Readline Init File Syntax

I
input-meta: Readline Init File Syntax
insert-comment (M-#): Miscellaneous Commands
insert-completions (M-*): Commands For Completion
isearch-terminators: Readline Init File Syntax

K
keymap: Readline Init File Syntax
kill-line (C-k): Commands For Killing
kill-region (): Commands For Killing
kill-whole-line (): Commands For Killing
kill-word (M-d): Commands For Killing

M
mark-modified-lines: Readline Init File Syntax
mark-symlinked-directories: Readline Init File Syntax
match-hidden-files: Readline Init File Syntax
menu-complete (): Commands For Completion
menu-complete-backward (): Commands For Completion
menu-complete-display-prefix: Readline Init File Syntax
meta-flag: Readline Init File Syntax

N
next-history (C-n): Commands For History
next-screen-line (): Commands For Moving
non-incremental-forward-search-history (M-n): Commands For History
non-incremental-reverse-search-history (M-p): Commands For History

O
operate-and-get-next (C-o): Commands For History
output-meta: Readline Init File Syntax
overwrite-mode (): Commands For Text

P
page-completions: Readline Init File Syntax
possible-completions (M-?): Commands For Completion
prefix-meta (ESC): Miscellaneous Commands
previous-history (C-p): Commands For History
previous-screen-line (): Commands For Moving
print-last-kbd-macro (): Keyboard Macros

Q
quoted-insert (C-q or C-v): Commands For Text

R
re-read-init-file (C-x C-r): Miscellaneous Commands
readline: Basic Behavior
redraw-current-line (): Commands For Moving
reverse-search-history (C-r): Commands For History
revert-all-at-newline: Readline Init File Syntax
revert-line (M-r): Miscellaneous Commands
rl_activate_mark: Miscellaneous Functions
rl_add_defun: Function Naming
rl_add_funmap_entry: Associating Function Names and Bindings
rl_add_undo: Allowing Undoing
rl_alphabetic: Utility Functions
rl_already_prompted: Readline Variables
rl_attempted_completion_function: Completion Variables
rl_attempted_completion_over: Completion Variables
rl_basic_quote_characters: Completion Variables
rl_basic_word_break_characters: Completion Variables
rl_begin_undo_group: Allowing Undoing
rl_binding_keymap: Readline Variables
rl_bind_key: Binding Keys
rl_bind_keyseq: Binding Keys
rl_bind_keyseq_if_unbound: Binding Keys
rl_bind_keyseq_if_unbound_in_map: Binding Keys
rl_bind_keyseq_in_map: Binding Keys
rl_bind_key_if_unbound: Binding Keys
rl_bind_key_if_unbound_in_map: Binding Keys
rl_bind_key_in_map: Binding Keys
rl_callback_handler_install: Alternate Interface
rl_callback_handler_remove: Alternate Interface
rl_callback_read_char: Alternate Interface
rl_callback_sigcleanup: Alternate Interface
rl_catch_signals: Readline Signal Handling
rl_catch_sigwinch: Readline Signal Handling
rl_change_environment: Readline Signal Handling
rl_char_is_quoted_p: Completion Variables
rl_check_signals: Readline Signal Handling
rl_cleanup_after_signal: Readline Signal Handling
rl_clear_history: Miscellaneous Functions
rl_clear_message: Redisplay
rl_clear_pending_input: Character Input
rl_clear_signals: Readline Signal Handling
rl_clear_visible_line: Redisplay
rl_complete: How Completing Works
rl_complete: Completion Functions
rl_completer_quote_characters: Completion Variables
rl_completer_word_break_characters: Completion Variables
rl_complete_internal: Completion Functions
rl_completion_append_character: Completion Variables
rl_completion_display_matches_hook: Completion Variables
rl_completion_entry_function: How Completing Works
rl_completion_entry_function: Completion Variables
rl_completion_found_quote: Completion Variables
rl_completion_invoking_key: Completion Variables
rl_completion_mark_symlink_dirs: Completion Variables
rl_completion_matches: Completion Functions
rl_completion_mode: Completion Functions
rl_completion_query_items: Completion Variables
rl_completion_quote_character: Completion Variables
rl_completion_suppress_append: Completion Variables
rl_completion_suppress_quote: Completion Variables
rl_completion_type: Completion Variables
rl_completion_word_break_hook: Completion Variables
rl_copy_keymap: Keymaps
rl_copy_text: Modifying Text
rl_crlf: Redisplay
rl_deactivate_mark: Miscellaneous Functions
rl_delete_text: Modifying Text
rl_deprep_terminal: Terminal Management
rl_deprep_term_function: Readline Variables
rl_ding: Utility Functions
rl_directory_completion_hook: Completion Variables
rl_directory_rewrite_hook;: Completion Variables
rl_discard_keymap: Keymaps
rl_dispatching: Readline Variables
rl_display_match_list: Utility Functions
rl_display_prompt: Readline Variables
rl_done: Readline Variables
rl_do_undo: Allowing Undoing
rl_echo_signal_char: Readline Signal Handling
rl_editing_mode: Readline Variables
rl_empty_keymap: Keymaps
rl_end: Readline Variables
rl_end_undo_group: Allowing Undoing
rl_eof_found: Readline Variables
rl_erase_empty_line: Readline Variables
rl_event_hook: Readline Variables
rl_execute_next: Character Input
rl_executing_key: Readline Variables
rl_executing_keymap: Readline Variables
rl_executing_keyseq: Readline Variables
rl_executing_macro: Readline Variables
rl_expand_prompt: Redisplay
rl_explicit_arg: Readline Variables
rl_extend_line_buffer: Utility Functions
rl_filename_completion_desired: Completion Variables
rl_filename_completion_function: Completion Functions
rl_filename_dequoting_function: Completion Variables
rl_filename_quote_characters: Completion Variables
rl_filename_quoting_desired: Completion Variables
rl_filename_quoting_function: Completion Variables
rl_filename_rewrite_hook: Completion Variables
rl_filename_stat_hook: Completion Variables
rl_forced_update_display: Redisplay
rl_free: Utility Functions
rl_free_keymap: Keymaps
rl_free_line_state: Readline Signal Handling
rl_free_undo_list: Allowing Undoing
rl_function_dumper: Associating Function Names and Bindings
rl_function_of_keyseq: Associating Function Names and Bindings
rl_function_of_keyseq_len: Associating Function Names and Bindings
rl_funmap_names: Associating Function Names and Bindings
rl_generic_bind: Binding Keys
rl_getc: Character Input
rl_getc_function: Readline Variables
rl_get_keymap: Keymaps
rl_get_keymap_by_name: Keymaps
rl_get_keymap_name: Keymaps
rl_get_screen_size: Readline Signal Handling
rl_get_termcap: Miscellaneous Functions
rl_gnu_readline_p: Readline Variables
rl_ignore_completion_duplicates: Completion Variables
rl_ignore_some_completions_function: Completion Variables
rl_inhibit_completion: Completion Variables
rl_initialize: Utility Functions
rl_input_available_hook: Readline Variables
rl_insert_completions: Completion Functions
rl_insert_text: Modifying Text
rl_instream: Readline Variables
rl_invoking_keyseqs: Associating Function Names and Bindings
rl_invoking_keyseqs_in_map: Associating Function Names and Bindings
rl_keep_mark_active: Miscellaneous Functions
rl_key_sequence_length: Readline Variables
rl_kill_text: Modifying Text
rl_last_func: Readline Variables
rl_library_version: Readline Variables
rl_line_buffer: Readline Variables
rl_list_funmap_names: Associating Function Names and Bindings
rl_macro_bind: Miscellaneous Functions
rl_macro_dumper: Miscellaneous Functions
rl_make_bare_keymap: Keymaps
rl_make_keymap: Keymaps
rl_mark: Readline Variables
rl_mark_active_p: Miscellaneous Functions
rl_message: Redisplay
rl_modifying: Allowing Undoing
rl_named_function: Associating Function Names and Bindings
rl_numeric_arg: Readline Variables
rl_num_chars_to_read: Readline Variables
rl_on_new_line: Redisplay
rl_on_new_line_with_prompt: Redisplay
rl_outstream: Readline Variables
rl_parse_and_bind: Binding Keys
rl_pending_input: Readline Variables
rl_pending_signal: Readline Signal Handling
rl_persistent_signal_handlers: Readline Signal Handling
rl_point: Readline Variables
rl_possible_completions: Completion Functions
rl_prefer_env_winsize: Readline Variables
rl_prep_terminal: Terminal Management
rl_prep_term_function: Readline Variables
rl_pre_input_hook: Readline Variables
rl_prompt: Readline Variables
rl_push_macro_input: Modifying Text
rl_readline_name: Readline Variables
rl_readline_state: Readline Variables
rl_readline_version: Readline Variables
rl_read_init_file: Binding Keys
rl_read_key: Character Input
rl_redisplay: Redisplay
rl_redisplay_function: Readline Variables
rl_replace_line: Utility Functions
rl_reset_after_signal: Readline Signal Handling
rl_reset_line_state: Redisplay
rl_reset_screen_size: Readline Signal Handling
rl_reset_terminal: Terminal Management
rl_resize_terminal: Readline Signal Handling
rl_restore_prompt: Redisplay
rl_restore_state: Utility Functions
rl_save_prompt: Redisplay
rl_save_state: Utility Functions
rl_set_key: Binding Keys
rl_set_keyboard_input_timeout: Character Input
rl_set_keymap: Keymaps
rl_set_keymap_name: Keymaps
rl_set_paren_blink_timeout: Miscellaneous Functions
rl_set_prompt: Redisplay
rl_set_screen_size: Readline Signal Handling
rl_set_signals: Readline Signal Handling
rl_set_timeout: Character Input
rl_show_char: Redisplay
rl_signal_event_hook: Readline Variables
rl_sort_completion_matches: Completion Variables
rl_special_prefixes: Completion Variables
rl_startup_hook: Readline Variables
rl_stuff_char: Character Input
rl_terminal_name: Readline Variables
rl_timeout_event_hook: Readline Variables
rl_timeout_remaining: Character Input
rl_trim_arg_from_keyseq: Associating Function Names and Bindings
rl_tty_set_default_bindings: Terminal Management
rl_tty_set_echoing: Terminal Management
rl_tty_unset_default_bindings: Terminal Management
rl_unbind_command_in_map: Binding Keys
rl_unbind_function_in_map: Binding Keys
rl_unbind_key: Binding Keys
rl_unbind_key_in_map: Binding Keys
rl_username_completion_function: Completion Functions
rl_variable_bind: Miscellaneous Functions
rl_variable_dumper: Miscellaneous Functions
rl_variable_value: Miscellaneous Functions

S
self-insert (a, b, A, 1, !, …): Commands For Text
set-mark (C-@): Miscellaneous Commands
shell-transpose-words (M-C-t): Commands For Killing
show-all-if-ambiguous: Readline Init File Syntax
show-all-if-unmodified: Readline Init File Syntax
show-mode-in-prompt: Readline Init File Syntax
skip-completed-text: Readline Init File Syntax
skip-csi-sequence (): Miscellaneous Commands
start-kbd-macro (C-x (): Keyboard Macros

T
tab-insert (M-TAB): Commands For Text
tilde-expand (M-~): Miscellaneous Commands
transpose-chars (C-t): Commands For Text
transpose-words (M-t): Commands For Text

U
undo (C-_ or C-x C-u): Miscellaneous Commands
universal-argument (): Numeric Arguments
unix-filename-rubout (): Commands For Killing
unix-line-discard (C-u): Commands For Killing
unix-word-rubout (C-w): Commands For Killing
upcase-word (M-u): Commands For Text

V
vi-cmd-mode-string: Readline Init File Syntax
vi-editing-mode (M-C-j): Miscellaneous Commands
vi-ins-mode-string: Readline Init File Syntax
visible-stats: Readline Init File Syntax

Y
yank (C-y): Commands For Killing
yank-last-arg (M-. or M-_): Commands For History
yank-nth-arg (M-C-y): Commands For History
yank-pop (M-y): Commands For Killing

+
Jump to:   _   -E +
+A   -F +B   -H +C   -I +D   -K +E   -M +F   -N +H   -O +I   -P +K   -Q +M   -R +N   -S +O   -T +P   -U +Q   -V +R   -Y +S   -

- -


- - - - - - -
[Top][Contents][Index][ ? ]
-

Table of Contents

- -
- - - - - - -
[Top][Contents][Index][ ? ]
-

Short Table of Contents

-
-1. Command Line Editing -
-2. Programming with GNU Readline -
-A. GNU Free Documentation License -
-Concept Index -
-Function and Variable Index -
- -
-
- - - - - - -
[Top][Contents][Index][ ? ]
-

About this document

-This document was generated by Chet Ramey on October, 30 2020 -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 - +T   -
- [Contents] -Contents - -table of contents - +U   -
- [Index] -Index - -concept index - +V   -
- [ ? ] -About - -this page - +Y   -
-

-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, 30 2020 -using texi2html - - - +
+ + + + + + + + diff --git a/doc/readline.info b/doc/readline.info index 93d54dc..4ea6b8c 100644 --- a/doc/readline.info +++ b/doc/readline.info @@ -1,10 +1,11 @@ -This is readline.info, produced by makeinfo version 6.7 from rlman.texi. +This is readline.info, produced by makeinfo version 6.8 from rlman.texi. -This manual describes the GNU Readline Library (version 8.1, 29 October -2020), a library which aids in the consistency of user interface across -discrete programs which provide a command line interface. +This manual describes the GNU Readline Library (version 8.2, 19 +September 2022), a library which aids in the consistency of user +interface across discrete programs which provide a command line +interface. - Copyright (C) 1988-2020 Free Software Foundation, Inc. + Copyright (C) 1988-2022 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, @@ -155,9 +156,9 @@ Printing characters Undo the last editing command. You can undo all the way back to an empty line. -(Depending on your configuration, the key be set to delete -the character to the left of the cursor and the key set to delete -the character underneath the cursor, like 'C-d', rather than the +(Depending on your configuration, the key might be set to +delete the character to the left of the cursor and the key set to +delete the character underneath the cursor, like 'C-d', rather than the character to the left of the cursor.)  @@ -219,9 +220,9 @@ available to be yanked back later, when you are typing another line. as those used by 'M-f'. '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'. + Kill from the cursor to 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 @@ -309,7 +310,7 @@ File: readline.info, Node: Readline Init File, Next: Bindable Readline Command Although the Readline library comes with a set of Emacs-like keybindings installed by default, it is possible to use a different set of keybindings. Any user can customize programs that use Readline by -putting commands in an "inputrc" file, conventionally in his home +putting commands in an "inputrc" file, conventionally in their home directory. The name of this file is taken from the value of the environment variable 'INPUTRC'. If that variable is unset, the default is '~/.inputrc'. If that file does not exist or cannot be read, the @@ -363,6 +364,32 @@ Variable Settings A great deal of run-time behavior is changeable with the following variables. + 'active-region-start-color' + A string variable that controls the text color and background + when displaying the text in the active region (see the + description of 'enable-active-region' below). This string + must not take up any physical character positions on the + display, so it should consist only of terminal escape + sequences. It is output to the terminal before displaying the + text in the active region. This variable is reset to the + default value whenever the terminal type changes. The default + value is the string that puts the terminal in standout mode, + as obtained from the terminal's terminfo description. A + sample value might be '\e[01;33m'. + + 'active-region-end-color' + A string variable that "undoes" the effects of + 'active-region-start-color' and restores "normal" terminal + display appearance after displaying text in the active region. + This string must not take up any physical character positions + on the display, so it should consist only of terminal escape + sequences. It is output to the terminal after displaying the + text in the active region. This variable is reset to the + default value whenever the terminal type changes. The default + value is the string that restores the terminal from standout + mode, as obtained from the terminal's terminfo description. A + sample value might be '\e[0m'. + 'bell-style' Controls what happens when Readline wants to ring the terminal bell. If set to 'none', Readline never rings the bell. If @@ -384,7 +411,10 @@ Variable Settings If set to 'on', when listing completions, Readline displays the common prefix of the set of possible completions using a different color. The color definitions are taken from the - value of the 'LS_COLORS' environment variable. The default is + value of the 'LS_COLORS' environment variable. If there is a + color definition in 'LS_COLORS' for the custom suffix + 'readline-colored-completion-prefix', Readline uses this color + for the common prefix instead of its default. The default is 'off'. 'colored-stats' @@ -430,8 +460,9 @@ Variable Settings than or equal to this value, Readline will ask whether or not the user wishes to view them; otherwise, they are simply listed. This variable must be set to an integer value greater - than or equal to 0. A negative value means Readline should - never ask. The default limit is '100'. + than or equal to zero. A zero value means Readline should + never ask; negative values are treated as zero. The default + limit is '100'. 'convert-meta' If set to 'on', Readline will convert characters with the @@ -439,7 +470,9 @@ Variable Settings eighth bit and prefixing an character, converting them to a meta-prefixed key sequence. The default value is 'on', but will be set to 'off' if the locale is one that contains - eight-bit characters. + eight-bit characters. This variable is dependent on the + 'LC_CTYPE' locale category, and may change if the locale is + changed. 'disable-completion' If set to 'On', Readline will inhibit word completion. @@ -448,7 +481,7 @@ Variable Settings 'echo-control-characters' When set to 'on', on operating systems that indicate they - support it, readline echoes a character corresponding to a + support it, Readline echoes a character corresponding to a signal generated from the keyboard. The default is 'on'. 'editing-mode' @@ -467,13 +500,27 @@ Variable Settings non-printing characters, which can be used to embed a terminal control sequence into the mode string. The default is '@'. + 'enable-active-region' + The "point" is the current cursor position, and "mark" refers + to a saved cursor position (*note Commands For Moving::). The + text between the point and mark is referred to as the + "region". When this variable is set to 'On', Readline allows + certain commands to designate the region as "active". When + the region is active, Readline highlights the text in the + region using the value of the 'active-region-start-color', + which defaults to the string that enables the terminal's + standout mode. The active region shows the text inserted by + bracketed-paste and any matching text found by incremental and + non-incremental history searches. The default is 'On'. + 'enable-bracketed-paste' - When set to 'On', Readline will configure the terminal in a - way that will enable it to insert each paste into the editing - buffer as a single string of characters, instead of treating - each character as if it had been read from the keyboard. This - can prevent pasted characters from being interpreted as - editing commands. The default is 'On'. + When set to 'On', Readline configures the terminal to insert + each paste into the editing buffer as a single string of + characters, instead of treating each character as if it had + been read from the keyboard. This is called putting the + terminal into "bracketed paste mode"; it prevents Readline + from executing any editing commands bound to key sequences + appearing in the pasted text. The default is 'On'. 'enable-keypad' When set to 'on', Readline will try to enable the application @@ -520,7 +567,9 @@ Variable Settings regardless of what the terminal claims it can support. The default value is 'off', but Readline will set it to 'on' if the locale contains eight-bit characters. The name - 'meta-flag' is a synonym for this variable. + 'meta-flag' is a synonym for this variable. This variable is + dependent on the 'LC_CTYPE' locale category, and may change if + the locale is changed. 'isearch-terminators' The string of characters that should terminate an incremental @@ -585,7 +634,9 @@ Variable Settings 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', but Readline will set it to - 'on' if the locale contains eight-bit characters. + 'on' if the locale contains eight-bit characters. This + variable is dependent on the 'LC_CTYPE' locale category, and + may change if the locale is changed. 'page-completions' If set to 'on', Readline uses an internal 'more'-like pager to @@ -601,7 +652,8 @@ Variable Settings If set to 'on', Readline will undo all changes to history lines before returning when 'accept-line' is executed. By default, history lines may be modified and retain individual - undo lists across calls to 'readline'. The default is 'off'. + undo lists across calls to 'readline()'. The default is + 'off'. 'show-all-if-ambiguous' This alters the default behavior of the completion functions. @@ -628,7 +680,7 @@ Variable Settings If set to 'on', this alters the default completion behavior when inserting a single match into the line. It's only active when performing completion in the middle of a word. If - enabled, readline does not insert characters from the + enabled, Readline does not insert characters from the completion that match characters after point in the word being completed, so portions of the word following the cursor are not duplicated. For instance, if this is enabled, attempting @@ -678,7 +730,7 @@ Key Bindings part of the key name. The name of the key can be expressed in different ways, depending on what you find most comfortable. - In addition to command names, readline allows keys to be bound to a + 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 @@ -1145,6 +1197,11 @@ File: readline.info, Node: Commands For History, Next: Commands For Text, Pre supplied, specifies the history entry to use instead of the current line. +'fetch-history ()' + With a numeric argument, fetch that entry from the history list and + make it the current line. Without an argument, move back to the + first entry in the history list. +  File: readline.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands @@ -1395,7 +1452,7 @@ File: readline.info, Node: Keyboard Macros, Next: Miscellaneous Commands, Pre characters in the macro appear as if typed at the keyboard. 'print-last-kbd-macro ()' - Print the last keboard macro defined in a format suitable for the + Print the last keyboard macro defined in a format suitable for the INPUTRC file.  @@ -1442,12 +1499,12 @@ File: readline.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: 'character-search (C-])' A character is read and point is moved to the next occurrence of - that character. A negative count searches for previous + that character. A negative argument 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 + of that character. A negative argument searches for subsequent occurrences. 'skip-csi-sequence ()' @@ -1455,7 +1512,7 @@ File: readline.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: those defined for keys like Home and End. Such sequences begin with a Control Sequence Indicator (CSI), usually ESC-[. If this sequence is bound to "\e[", keys producing such sequences will have - no effect unless explicitly bound to a readline command, instead of + no effect unless explicitly bound to a Readline command, instead of inserting stray characters into the editing buffer. This is unbound by default, but usually bound to ESC-[. @@ -1519,7 +1576,7 @@ and subsequent lines with 'j', and so forth. aiding in the consistency of user interface across discrete programs that need to provide a command line interface. - Copyright (C) 1988-2020 Free Software Foundation, Inc. + Copyright (C) 1988-2022 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 @@ -1807,7 +1864,14 @@ These variables are available to function writers. -- Variable: int rl_done Setting this to a non-zero value causes Readline to return the - current line immediately. + current line immediately. Readline will set this variable when it + has read a key sequence bound to 'accept-line' and is about to + return the line to the caller. + + -- Variable: int rl_eof_found + Readline will set this variable when it has read an EOF character + (e.g., the stty 'EOF' character) on an empty line or encountered a + read error and is about to return a NULL line to the caller. -- Variable: int rl_num_chars_to_read Setting this to a positive value before calling 'readline()' causes @@ -1861,7 +1925,7 @@ These variables are available to function writers. value 0x0402. -- Variable: int rl_gnu_readline_p - Always set to 1, denoting that this is GNU readline rather than + Always set to 1, denoting that this is GNU Readline rather than some emulation. -- Variable: const char * rl_terminal_name @@ -1918,6 +1982,10 @@ These variables are available to function writers. If non-zero, this is the address of a function to call if a read system call is interrupted when Readline is reading terminal input. + -- Variable: rl_hook_func_t * rl_timeout_event_hook + If non-zero, this is the address of a function to call if Readline + times out while reading input. + -- Variable: rl_hook_func_t * rl_input_available_hook If non-zero, Readline will use this function's return value when it needs to determine whether or not there is available input on the @@ -1960,7 +2028,7 @@ These variables are available to function writers. -- Variable: Keymap rl_executing_keymap This variable is set to the keymap (*note Keymaps::) in which the - currently executing readline function was found. + currently executing Readline function was found. -- Variable: Keymap rl_binding_keymap This variable is set to the keymap (*note Keymaps::) in which the @@ -2049,6 +2117,15 @@ These variables are available to function writers. 'RL_STATE_DONE' Readline has read a key sequence bound to 'accept-line' and is about to return the line to the caller. + 'RL_STATE_TIMEOUT' + Readline has timed out (it did not receive a line or specified + number of characters before the timeout duration specified by + 'rl_set_timeout' elapsed) and is returning that status to the + caller. + 'RL_STATE_EOF' + Readline has read an EOF character (e.g., the stty 'EOF' + character) or encountered a read error and is about to return + a NULL line to the caller. -- Variable: int rl_explicit_arg Set to a non-zero value if an explicit numeric argument was @@ -2322,6 +2399,14 @@ associate a new function name with an arbitrary function. parameter. It takes a "translated" key sequence and should be used if the key sequence can include NUL. + -- Function: int rl_trim_arg_from_keyseq (const char *keyseq, size_t + len, Keymap map) + If there is a numeric argument at the beginning of KEYSEQ, possibly + including digits, return the index of the first character in KEYSEQ + following the numeric argument. This can be used to skip over the + numeric argument (which is available as 'rl_numeric_arg' while + traversing the key sequence that invoked the current command. + -- 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. @@ -2332,7 +2417,7 @@ associate a new function name with an arbitrary function. invoke FUNCTION in the keymap MAP. -- Function: void rl_function_dumper (int readable) - Print the readline function names and the key sequences currently + 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. @@ -2490,8 +2575,8 @@ File: readline.info, Node: Redisplay, Next: Modifying Text, Prev: Allowing Un characters that take up no physical screen space when displayed by bracketing a sequence of such characters with the special markers 'RL_PROMPT_START_IGNORE' and 'RL_PROMPT_END_IGNORE' (declared in - 'readline.h'). This may be used to embed terminal-specific escape - sequences in prompts. + 'readline.h' as '\001' and '\002', respectively). This may be used + to embed terminal-specific escape sequences in prompts. -- Function: int rl_set_prompt (const char *prompt) Make Readline use PROMPT for subsequent redisplay. This calls @@ -2570,6 +2655,26 @@ File: readline.info, Node: Character Input, Next: Terminal Management, Prev: waiting period is one-tenth of a second. Returns the old timeout value. + -- Function: int rl_set_timeout (unsigned int secs, unsigned int usecs) + Set a timeout for subsequent calls to 'readline()'. If Readline + does not read a complete line, or the number of characters + specified by 'rl_num_chars_to_read', before the duration specified + by SECS (in seconds) and USECS (microseconds), it returns and sets + 'RL_STATE_TIMEOUT' in 'rl_readline_state'. Passing 0 for 'secs' + and 'usecs' cancels any previously set timeout; the convenience + macro 'rl_clear_timeout()' is shorthand for this. Returns 0 if the + timeout is set successfully. + + -- Function: int rl_timeout_remaining (unsigned int *secs, unsigned int + *usecs) + Return the number of seconds and microseconds remaining in the + current timeout duration in *SECS and *USECS, respectively. Both + *SECS and *USECS must be non-NULL to return any values. The return + value is -1 on error or when there is no timeout set, 0 when the + timeout has expired (leaving *SECS and *USECS unchanged), and 1 if + the timeout has not expired. If either of SECS and USECS is + 'NULL', the return value indicates whether the timeout has expired. +  File: readline.info, Node: Terminal Management, Next: Utility Functions, Prev: Character Input, Up: Readline Convenience Functions @@ -2710,7 +2815,7 @@ File: readline.info, Node: Miscellaneous Functions, Next: Alternate Interface, -- 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 + the Readline command 'set VARIABLE VALUE' had been executed in an 'inputrc' file (*note Readline Init File Syntax::). -- Function: char * rl_variable_value (const char *variable) @@ -2719,7 +2824,7 @@ File: readline.info, Node: Miscellaneous Functions, Next: Alternate Interface, 'off'. -- Function: void rl_variable_dumper (int readable) - Print the readline variable names and their current values to + 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. @@ -2746,7 +2851,7 @@ File: readline.info, Node: Miscellaneous Functions, Next: Alternate Interface, -- Function: void rl_activate_mark (void) Enable an _active_ mark. When this is enabled, the text between point and mark (the REGION) is displayed in the terminal's standout - mode (a FACE). This is called by various readline functions that + mode (a FACE). This is called by various Readline functions that set the mark and insert text, and is available for applications to call. @@ -2755,9 +2860,9 @@ File: readline.info, Node: Miscellaneous Functions, Next: Alternate Interface, -- Function: void rl_keep_mark_active (void) Indicate that the mark should remain active when the current - readline function completes and after redisplay occurs. In most + Readline function completes and after redisplay occurs. In most cases, the mark remains active for only the duration of a single - bindable readline function. + bindable Readline function. -- Function: int rl_mark_active_p (void) Return a non-zero value if the mark is currently active; zero @@ -2772,13 +2877,13 @@ File: readline.info, Node: Alternate Interface, Next: A Readline Example, Pre An alternate interface is available to plain 'readline()'. Some applications need to interleave keyboard I/O with file, device, or window system I/O, typically by using a main loop to 'select()' on -various file descriptors. To accommodate this need, readline can also +various file descriptors. To accommodate this need, Readline can also be invoked as a 'callback' function from an event loop. There are functions available to make this easy. -- Function: void rl_callback_handler_install (const char *prompt, rl_vcpfunc_t *lhandler) - Set up the terminal for readline I/O and display the initial + Set up the terminal for Readline I/O and display the initial expanded value of PROMPT. Save the value of LHANDLER to use as a handler function to call when a complete line of input has been entered. The handler function receives the text of the line as an @@ -3011,13 +3116,13 @@ File: readline.info, Node: Readline Signal Handling, Next: Custom Completers, Signals are asynchronous events sent to a process by the Unix kernel, sometimes on behalf of another process. They are intended to indicate -exceptional events, like a user pressing the interrupt key on his -terminal, or a network connection being broken. There is a class of -signals that can be sent to the process currently reading input from the -keyboard. Since Readline changes the terminal attributes when it is -called, it needs to perform special processing when such a signal is -received in order to restore the terminal to a sane state, or provide -application writers with functions to do so manually. +exceptional events, like a user pressing the terminal's interrupt key, +or a network connection being broken. There is a class of signals that +can be sent to the process currently reading input from the keyboard. +Since Readline changes the terminal attributes when it is called, it +needs to perform special processing when such a signal is received in +order to restore the terminal to a sane state, or provide application +writers with functions to do so manually. Readline contains an internal signal handler that is installed for a number of signals ('SIGINT', 'SIGQUIT', 'SIGTERM', 'SIGHUP', 'SIGALRM', @@ -3148,7 +3253,7 @@ to update its idea of the terminal size when it receives a 'SIGWINCH'. -- Function: void rl_echo_signal_char (int sig) If an application wishes to install its own signal handlers, but - still have readline display characters that generate signals, + still have Readline display characters that generate signals, calling this function with SIG set to 'SIGINT', 'SIGQUIT', or 'SIGTSTP' will display the character generating that signal. @@ -3520,9 +3625,10 @@ File: readline.info, Node: Completion Variables, Next: A Short Completion Exam -- Variable: int rl_completion_query_items Up to this many items will be displayed in response to a - possible-completions call. After that, readline asks the user if - she is sure she wants to see them all. The default value is 100. - A negative value indicates that Readline should never ask the user. + possible-completions call. After that, Readline asks the user for + confirmation before displaying them. The default value is 100. A + negative value indicates that Readline should never ask for + confirmation. -- Variable: int rl_completion_append_character When a single completion alternative matches at the end of the @@ -3661,6 +3767,7 @@ command names, line editing features, and access to the history list. #include #include #include + #include #if defined (HAVE_STRING_H) # include @@ -3741,6 +3848,8 @@ command names, line editing features, and access to the history list. { char *line, *s; + setlocale (LC_ALL, ""); + progname = argv[0]; initialize_readline (); /* Bind our completer. */ @@ -4633,6 +4742,10 @@ Function and Variable Index (line 10) * accept-line (Newline or Return): Commands For History. (line 6) +* active-region-end-color: Readline Init File Syntax. + (line 48) +* active-region-start-color: Readline Init File Syntax. + (line 35) * backward-char (C-b): Commands For Moving. (line 15) * backward-delete-char (Rubout): Commands For Text. (line 17) * backward-kill-line (C-x Rubout): Commands For Killing. @@ -4644,11 +4757,11 @@ Function and Variable Index (line 19) * beginning-of-line (C-a): Commands For Moving. (line 6) * bell-style: Readline Init File Syntax. - (line 35) + (line 61) * bind-tty-special-chars: Readline Init File Syntax. - (line 42) + (line 68) * blink-matching-paren: Readline Init File Syntax. - (line 47) + (line 73) * bracketed-paste-begin (): Commands For Text. (line 36) * call-last-kbd-macro (C-x e): Keyboard Macros. (line 13) * capitalize-word (M-c): Commands For Text. (line 69) @@ -4659,25 +4772,25 @@ Function and Variable Index * clear-display (M-C-l): Commands For Moving. (line 40) * clear-screen (C-l): Commands For Moving. (line 45) * colored-completion-prefix: Readline Init File Syntax. - (line 52) + (line 78) * colored-stats: Readline Init File Syntax. - (line 59) + (line 88) * comment-begin: Readline Init File Syntax. - (line 65) + (line 94) * complete (): Commands For Completion. (line 6) * completion-display-width: Readline Init File Syntax. - (line 70) + (line 99) * completion-ignore-case: Readline Init File Syntax. - (line 77) + (line 106) * completion-map-case: Readline Init File Syntax. - (line 82) + (line 111) * completion-prefix-display-length: Readline Init File Syntax. - (line 88) + (line 117) * completion-query-items: Readline Init File Syntax. - (line 95) + (line 124) * convert-meta: Readline Init File Syntax. - (line 105) + (line 135) * copy-backward-word (): Commands For Killing. (line 60) * copy-forward-word (): Commands For Killing. @@ -4691,7 +4804,7 @@ Function and Variable Index (line 48) * digit-argument (M-0, M-1, ... M--): Numeric Arguments. (line 6) * disable-completion: Readline Init File Syntax. - (line 113) + (line 145) * do-lowercase-version (M-A, M-B, M-X, ...): Miscellaneous Commands. (line 14) * downcase-word (M-l): Commands For Text. (line 65) @@ -4702,17 +4815,19 @@ Function and Variable Index * dump-variables (): Miscellaneous Commands. (line 76) * echo-control-characters: Readline Init File Syntax. - (line 118) + (line 150) * editing-mode: Readline Init File Syntax. - (line 123) + (line 155) * emacs-editing-mode (C-e): Miscellaneous Commands. (line 88) * emacs-mode-string: Readline Init File Syntax. - (line 129) + (line 161) +* enable-active-region: Readline Init File Syntax. + (line 171) * enable-bracketed-paste: Readline Init File Syntax. - (line 139) + (line 184) * enable-keypad: Readline Init File Syntax. - (line 147) + (line 193) * end-kbd-macro (C-x )): Keyboard Macros. (line 9) * end-of-file (usually C-d): Commands For Text. (line 6) * end-of-history (M->): Commands For History. @@ -4721,36 +4836,38 @@ Function and Variable Index * exchange-point-and-mark (C-x C-x): Miscellaneous Commands. (line 37) * expand-tilde: Readline Init File Syntax. - (line 158) + (line 204) +* fetch-history (): Commands For History. + (line 102) * forward-backward-delete-char (): Commands For Text. (line 21) * forward-char (C-f): Commands For Moving. (line 12) * forward-search-history (C-s): Commands For History. (line 32) * forward-word (M-f): Commands For Moving. (line 18) * history-preserve-point: Readline Init File Syntax. - (line 162) + (line 208) * history-search-backward (): Commands For History. (line 56) * history-search-forward (): Commands For History. (line 50) * history-size: Readline Init File Syntax. - (line 168) + (line 214) * history-substring-search-backward (): Commands For History. (line 68) * history-substring-search-forward (): Commands For History. (line 62) * horizontal-scroll-mode: Readline Init File Syntax. - (line 177) + (line 223) * input-meta: Readline Init File Syntax. - (line 186) + (line 232) * insert-comment (M-#): Miscellaneous Commands. (line 61) * insert-completions (M-*): Commands For Completion. (line 18) * isearch-terminators: Readline Init File Syntax. - (line 194) + (line 242) * keymap: Readline Init File Syntax. - (line 201) + (line 249) * kill-line (C-k): Commands For Killing. (line 6) * kill-region (): Commands For Killing. @@ -4760,19 +4877,19 @@ Function and Variable Index * kill-word (M-d): Commands For Killing. (line 23) * mark-modified-lines: Readline Init File Syntax. - (line 231) + (line 279) * mark-symlinked-directories: Readline Init File Syntax. - (line 236) + (line 284) * match-hidden-files: Readline Init File Syntax. - (line 241) + (line 289) * menu-complete (): Commands For Completion. (line 22) * menu-complete-backward (): Commands For Completion. (line 34) * menu-complete-display-prefix: Readline Init File Syntax. - (line 248) + (line 296) * meta-flag: Readline Init File Syntax. - (line 186) + (line 232) * next-history (C-n): Commands For History. (line 16) * next-screen-line (): Commands For Moving. (line 33) @@ -4783,10 +4900,10 @@ Function and Variable Index * operate-and-get-next (C-o): Commands For History. (line 95) * output-meta: Readline Init File Syntax. - (line 253) + (line 301) * overwrite-mode (): Commands For Text. (line 73) * page-completions: Readline Init File Syntax. - (line 259) + (line 309) * possible-completions (M-?): Commands For Completion. (line 11) * prefix-meta (): Miscellaneous Commands. @@ -4803,27 +4920,27 @@ Function and Variable Index * reverse-search-history (C-r): Commands For History. (line 26) * revert-all-at-newline: Readline Init File Syntax. - (line 269) + (line 319) * revert-line (M-r): Miscellaneous Commands. (line 26) * rl_activate_mark: Miscellaneous Functions. (line 55) * rl_add_defun: Function Naming. (line 18) * rl_add_funmap_entry: Associating Function Names and Bindings. - (line 54) + (line 62) * rl_add_undo: Allowing Undoing. (line 39) * rl_alphabetic: Utility Functions. (line 38) -* rl_already_prompted: Readline Variables. (line 63) +* rl_already_prompted: Readline Variables. (line 70) * rl_attempted_completion_function: Completion Variables. (line 11) * rl_attempted_completion_over: Completion Variables. - (line 255) + (line 256) * rl_basic_quote_characters: Completion Variables. (line 143) * rl_basic_word_break_characters: Completion Variables. (line 137) * rl_begin_undo_group: Allowing Undoing. (line 28) -* rl_binding_keymap: Readline Variables. (line 184) +* rl_binding_keymap: Readline Variables. (line 195) * rl_bind_key: Binding Keys. (line 21) * rl_bind_keyseq: Binding Keys. (line 57) * rl_bind_keyseq_if_unbound: Binding Keys. (line 75) @@ -4866,7 +4983,7 @@ Function and Variable Index * rl_complete_internal: Completion Functions. (line 9) * rl_completion_append_character: Completion Variables. - (line 184) + (line 185) * rl_completion_display_matches_hook: Completion Variables. (line 124) * rl_completion_entry_function: How Completing Works. @@ -4874,11 +4991,11 @@ Function and Variable Index * rl_completion_entry_function <1>: Completion Variables. (line 6) * rl_completion_found_quote: Completion Variables. - (line 214) + (line 215) * rl_completion_invoking_key: Completion Variables. - (line 278) + (line 279) * rl_completion_mark_symlink_dirs: Completion Variables. - (line 220) + (line 221) * rl_completion_matches: Completion Functions. (line 43) * rl_completion_mode: Completion Functions. @@ -4886,13 +5003,13 @@ Function and Variable Index * rl_completion_query_items: Completion Variables. (line 178) * rl_completion_quote_character: Completion Variables. - (line 202) + (line 203) * rl_completion_suppress_append: Completion Variables. - (line 196) + (line 197) * rl_completion_suppress_quote: Completion Variables. - (line 208) + (line 209) * rl_completion_type: Completion Variables. - (line 270) + (line 271) * rl_completion_word_break_hook: Completion Variables. (line 151) * rl_copy_keymap: Keymaps. (line 16) @@ -4902,36 +5019,37 @@ Function and Variable Index (line 62) * rl_delete_text: Modifying Text. (line 10) * rl_deprep_terminal: Terminal Management. (line 12) -* rl_deprep_term_function: Readline Variables. (line 174) +* rl_deprep_term_function: Readline Variables. (line 185) * rl_ding: Utility Functions. (line 35) * rl_directory_completion_hook: Completion Variables. (line 63) * rl_directory_rewrite_hook;: Completion Variables. (line 81) * rl_discard_keymap: Keymaps. (line 25) -* rl_dispatching: Readline Variables. (line 40) +* rl_dispatching: Readline Variables. (line 47) * rl_display_match_list: Utility Functions. (line 41) -* rl_display_prompt: Readline Variables. (line 58) +* rl_display_prompt: Readline Variables. (line 65) * rl_done: Readline Variables. (line 27) * rl_do_undo: Allowing Undoing. (line 47) * rl_echo_signal_char: Readline Signal Handling. (line 143) -* rl_editing_mode: Readline Variables. (line 281) +* rl_editing_mode: Readline Variables. (line 301) * rl_empty_keymap: Keymaps. (line 33) * rl_end: Readline Variables. (line 18) * rl_end_undo_group: Allowing Undoing. (line 34) -* rl_erase_empty_line: Readline Variables. (line 46) -* rl_event_hook: Readline Variables. (line 123) +* rl_eof_found: Readline Variables. (line 33) +* rl_erase_empty_line: Readline Variables. (line 53) +* rl_event_hook: Readline Variables. (line 130) * rl_execute_next: Character Input. (line 25) -* rl_executing_key: Readline Variables. (line 191) -* rl_executing_keymap: Readline Variables. (line 180) -* rl_executing_keyseq: Readline Variables. (line 195) -* rl_executing_macro: Readline Variables. (line 188) +* rl_executing_key: Readline Variables. (line 202) +* rl_executing_keymap: Readline Variables. (line 191) +* rl_executing_keyseq: Readline Variables. (line 206) +* rl_executing_macro: Readline Variables. (line 199) * rl_expand_prompt: Redisplay. (line 66) -* rl_explicit_arg: Readline Variables. (line 272) +* rl_explicit_arg: Readline Variables. (line 292) * rl_extend_line_buffer: Utility Functions. (line 26) * rl_filename_completion_desired: Completion Variables. - (line 235) + (line 236) * rl_filename_completion_function: Completion Functions. (line 57) * rl_filename_dequoting_function: Completion Variables. @@ -4939,7 +5057,7 @@ Function and Variable Index * rl_filename_quote_characters: Completion Variables. (line 166) * rl_filename_quoting_desired: Completion Variables. - (line 245) + (line 246) * rl_filename_quoting_function: Completion Variables. (line 23) * rl_filename_rewrite_hook: Completion Variables. @@ -4953,16 +5071,16 @@ Function and Variable Index (line 113) * rl_free_undo_list: Allowing Undoing. (line 44) * rl_function_dumper: Associating Function Names and Bindings. - (line 38) + (line 46) * rl_function_of_keyseq: Associating Function Names and Bindings. (line 13) * rl_function_of_keyseq_len: Associating Function Names and Bindings. (line 22) * rl_funmap_names: Associating Function Names and Bindings. - (line 48) + (line 56) * rl_generic_bind: Binding Keys. (line 87) * rl_getc: Character Input. (line 14) -* rl_getc_function: Readline Variables. (line 128) +* rl_getc_function: Readline Variables. (line 135) * rl_get_keymap: Keymaps. (line 40) * rl_get_keymap_by_name: Keymaps. (line 46) * rl_get_keymap_name: Keymaps. (line 51) @@ -4970,32 +5088,32 @@ Function and Variable Index (line 165) * rl_get_termcap: Miscellaneous Functions. (line 41) -* rl_gnu_readline_p: Readline Variables. (line 82) +* rl_gnu_readline_p: Readline Variables. (line 89) * rl_ignore_completion_duplicates: Completion Variables. - (line 231) + (line 232) * rl_ignore_some_completions_function: Completion Variables. (line 55) * rl_inhibit_completion: Completion Variables. - (line 284) + (line 285) * rl_initialize: Utility Functions. (line 30) -* rl_input_available_hook: Readline Variables. (line 140) +* rl_input_available_hook: Readline Variables. (line 151) * rl_insert_completions: Completion Functions. (line 31) * rl_insert_text: Modifying Text. (line 6) -* rl_instream: Readline Variables. (line 96) +* rl_instream: Readline Variables. (line 103) * rl_invoking_keyseqs: Associating Function Names and Bindings. - (line 29) + (line 37) * rl_invoking_keyseqs_in_map: Associating Function Names and Bindings. - (line 33) + (line 41) * rl_keep_mark_active: Miscellaneous Functions. (line 65) -* rl_key_sequence_length: Readline Variables. (line 199) +* rl_key_sequence_length: Readline Variables. (line 210) * rl_kill_text: Modifying Text. (line 18) -* rl_last_func: Readline Variables. (line 109) -* rl_library_version: Readline Variables. (line 72) +* rl_last_func: Readline Variables. (line 116) +* rl_library_version: Readline Variables. (line 79) * rl_line_buffer: Readline Variables. (line 8) * rl_list_funmap_names: Associating Function Names and Bindings. - (line 44) + (line 52) * rl_macro_bind: Miscellaneous Functions. (line 6) * rl_macro_dumper: Miscellaneous Functions. @@ -5009,13 +5127,13 @@ Function and Variable Index * rl_modifying: Allowing Undoing. (line 56) * rl_named_function: Associating Function Names and Bindings. (line 10) -* rl_numeric_arg: Readline Variables. (line 276) -* rl_num_chars_to_read: Readline Variables. (line 31) +* rl_numeric_arg: Readline Variables. (line 296) +* rl_num_chars_to_read: Readline Variables. (line 38) * rl_on_new_line: Redisplay. (line 14) * rl_on_new_line_with_prompt: Redisplay. (line 18) -* rl_outstream: Readline Variables. (line 100) +* rl_outstream: Readline Variables. (line 107) * rl_parse_and_bind: Binding Keys. (line 95) -* rl_pending_input: Readline Variables. (line 36) +* rl_pending_input: Readline Variables. (line 43) * rl_pending_signal: Readline Signal Handling. (line 102) * rl_persistent_signal_handlers: Readline Signal Handling. @@ -5023,19 +5141,19 @@ Function and Variable Index * rl_point: Readline Variables. (line 14) * rl_possible_completions: Completion Functions. (line 27) -* rl_prefer_env_winsize: Readline Variables. (line 104) +* rl_prefer_env_winsize: Readline Variables. (line 111) * rl_prep_terminal: Terminal Management. (line 6) -* rl_prep_term_function: Readline Variables. (line 167) -* rl_pre_input_hook: Readline Variables. (line 118) -* rl_prompt: Readline Variables. (line 52) +* rl_prep_term_function: Readline Variables. (line 178) +* rl_pre_input_hook: Readline Variables. (line 125) +* rl_prompt: Readline Variables. (line 59) * rl_push_macro_input: Modifying Text. (line 25) -* rl_readline_name: Readline Variables. (line 91) -* rl_readline_state: Readline Variables. (line 202) -* rl_readline_version: Readline Variables. (line 75) +* rl_readline_name: Readline Variables. (line 98) +* rl_readline_state: Readline Variables. (line 213) +* rl_readline_version: Readline Variables. (line 82) * rl_read_init_file: Binding Keys. (line 100) * rl_read_key: Character Input. (line 6) * rl_redisplay: Redisplay. (line 6) -* rl_redisplay_function: Readline Variables. (line 161) +* rl_redisplay_function: Readline Variables. (line 172) * rl_replace_line: Utility Functions. (line 21) * rl_reset_after_signal: Readline Signal Handling. (line 121) @@ -5060,15 +5178,20 @@ Function and Variable Index (line 153) * rl_set_signals: Readline Signal Handling. (line 176) +* rl_set_timeout: Character Input. (line 42) * rl_show_char: Redisplay. (line 36) -* rl_signal_event_hook: Readline Variables. (line 136) +* rl_signal_event_hook: Readline Variables. (line 143) * rl_sort_completion_matches: Completion Variables. - (line 262) + (line 263) * rl_special_prefixes: Completion Variables. (line 171) -* rl_startup_hook: Readline Variables. (line 114) +* rl_startup_hook: Readline Variables. (line 121) * rl_stuff_char: Character Input. (line 18) -* rl_terminal_name: Readline Variables. (line 86) +* rl_terminal_name: Readline Variables. (line 93) +* rl_timeout_event_hook: Readline Variables. (line 147) +* rl_timeout_remaining: Character Input. (line 52) +* rl_trim_arg_from_keyseq: Associating Function Names and Bindings. + (line 29) * rl_tty_set_default_bindings: Terminal Management. (line 17) * rl_tty_set_echoing: Terminal Management. (line 27) * rl_tty_unset_default_bindings: Terminal Management. (line 22) @@ -5090,13 +5213,13 @@ Function and Variable Index * shell-transpose-words (M-C-t): Commands For Killing. (line 32) * show-all-if-ambiguous: Readline Init File Syntax. - (line 275) + (line 326) * show-all-if-unmodified: Readline Init File Syntax. - (line 281) + (line 332) * show-mode-in-prompt: Readline Init File Syntax. - (line 290) + (line 341) * skip-completed-text: Readline Init File Syntax. - (line 296) + (line 347) * skip-csi-sequence (): Miscellaneous Commands. (line 52) * start-kbd-macro (C-x (): Keyboard Macros. (line 6) @@ -5116,13 +5239,13 @@ Function and Variable Index (line 39) * upcase-word (M-u): Commands For Text. (line 61) * vi-cmd-mode-string: Readline Init File Syntax. - (line 309) + (line 360) * vi-editing-mode (M-C-j): Miscellaneous Commands. (line 92) * vi-ins-mode-string: Readline Init File Syntax. - (line 320) + (line 371) * visible-stats: Readline Init File Syntax. - (line 331) + (line 382) * yank (C-y): Commands For Killing. (line 70) * yank-last-arg (M-. or M-_): Commands For History. @@ -5135,59 +5258,59 @@ Function and Variable Index  Tag Table: -Node: Top864 -Node: Command Line Editing1589 -Node: Introduction and Notation2241 -Node: Readline Interaction3865 -Node: Readline Bare Essentials5057 -Node: Readline Movement Commands6841 -Node: Readline Killing Commands7802 -Node: Readline Arguments9721 -Node: Searching10766 -Node: Readline Init File12919 -Node: Readline Init File Syntax14073 -Node: Conditional Init Constructs34331 -Node: Sample Init File38528 -Node: Bindable Readline Commands41653 -Node: Commands For Moving42708 -Node: Commands For History44467 -Node: Commands For Text49230 -Node: Commands For Killing52933 -Node: Numeric Arguments55647 -Node: Commands For Completion56787 -Node: Keyboard Macros58756 -Node: Miscellaneous Commands59444 -Node: Readline vi Mode63366 -Node: Programming with GNU Readline65183 -Node: Basic Behavior66169 -Node: Custom Functions69852 -Node: Readline Typedefs71335 -Node: Function Writing72969 -Node: Readline Variables74283 -Node: Readline Convenience Functions86955 -Node: Function Naming88027 -Node: Keymaps89289 -Node: Binding Keys92368 -Node: Associating Function Names and Bindings96916 -Node: Allowing Undoing99695 -Node: Redisplay102245 -Node: Modifying Text106269 -Node: Character Input107516 -Node: Terminal Management109414 -Node: Utility Functions111237 -Node: Miscellaneous Functions114565 -Node: Alternate Interface117984 -Node: A Readline Example120726 -Node: Alternate Interface Example122665 -Node: Readline Signal Handling126197 -Node: Custom Completers135456 -Node: How Completing Works136176 -Node: Completion Functions139483 -Node: Completion Variables143057 -Node: A Short Completion Example158850 -Node: GNU Free Documentation License171630 -Node: Concept Index196804 -Node: Function and Variable Index198325 +Node: Top866 +Node: Command Line Editing1591 +Node: Introduction and Notation2243 +Node: Readline Interaction3867 +Node: Readline Bare Essentials5059 +Node: Readline Movement Commands6849 +Node: Readline Killing Commands7810 +Node: Readline Arguments9732 +Node: Searching10777 +Node: Readline Init File12930 +Node: Readline Init File Syntax14086 +Node: Conditional Init Constructs37389 +Node: Sample Init File41586 +Node: Bindable Readline Commands44711 +Node: Commands For Moving45766 +Node: Commands For History47525 +Node: Commands For Text52489 +Node: Commands For Killing56192 +Node: Numeric Arguments58906 +Node: Commands For Completion60046 +Node: Keyboard Macros62015 +Node: Miscellaneous Commands62704 +Node: Readline vi Mode66632 +Node: Programming with GNU Readline68449 +Node: Basic Behavior69435 +Node: Custom Functions73118 +Node: Readline Typedefs74601 +Node: Function Writing76235 +Node: Readline Variables77549 +Node: Readline Convenience Functions91224 +Node: Function Naming92296 +Node: Keymaps93558 +Node: Binding Keys96637 +Node: Associating Function Names and Bindings101185 +Node: Allowing Undoing104415 +Node: Redisplay106965 +Node: Modifying Text111024 +Node: Character Input112271 +Node: Terminal Management115352 +Node: Utility Functions117175 +Node: Miscellaneous Functions120503 +Node: Alternate Interface123922 +Node: A Readline Example126664 +Node: Alternate Interface Example128603 +Node: Readline Signal Handling132135 +Node: Custom Completers141388 +Node: How Completing Works142108 +Node: Completion Functions145415 +Node: Completion Variables148989 +Node: A Short Completion Example164795 +Node: GNU Free Documentation License177632 +Node: Concept Index202806 +Node: Function and Variable Index204327  End Tag Table diff --git a/doc/readline.pdf b/doc/readline.pdf index 8723e98..b0925cd 100644 Binary files a/doc/readline.pdf and b/doc/readline.pdf differ diff --git a/doc/readline.ps b/doc/readline.ps index 229f63f..011e8cb 100644 --- a/doc/readline.ps +++ b/doc/readline.ps @@ -1,8 +1,8 @@ %!PS-Adobe-2.0 -%%Creator: dvips(k) 5.999 Copyright 2019 Radical Eye Software +%%Creator: dvips(k) 2022.1 (TeX Live 2022) Copyright 2022 Radical Eye Software %%Title: readline.dvi -%%CreationDate: Fri Oct 30 14:07:46 2020 -%%Pages: 82 +%%CreationDate: Tue Sep 20 14:17:05 2022 +%%Pages: 86 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%DocumentFonts: CMBX12 CMR10 CMTT10 CMSY10 CMMI12 CMMI10 CMCSC10 @@ -12,7 +12,7 @@ %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -D 600 -t letter -o readline.ps readline.dvi %DVIPSParameters: dpi=600 -%DVIPSSource: TeX output 2020.10.30:1007 +%DVIPSSource: TeX output 2022.09.20:1017 %%BeginProcSet: tex.pro 0 0 %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S @@ -6638,37 +6638,37 @@ rf /Ff 133[44 53 53 72 53 55 39 39 39 53 55 50 55 83 109.091 /CMBX12 rf /Fj 133[40 48 48 66 48 51 35 36 36 48 51 45 51 76 25 48 1[25 51 45 28 40 51 40 51 45 9[93 1[68 66 51 67 1[62 71 68 83 57 71 1[33 68 1[59 62 69 -66 64 68 15[45 45 2[30 31[51 51 53 11[{}50 90.9091 /CMSL10 -rf /Fk 134[44 1[60 42 49 30 37 38 1[46 46 51 74 23 42 -1[28 1[42 1[42 46 42 1[46 84[51 12[{}20 90.9091 /CMTI10 -rf /Fl 134[48 48 48 48 48 48 48 48 48 48 48 48 48 48 -48 48 48 1[48 48 48 48 48 48 48 1[48 2[48 14[48 48 1[48 -1[48 2[48 48 48 17[48 48 2[48 5[48 39[{}37 90.9091 /CMSLTT10 -rf /Fm 135[56 2[56 1[42 2[51 58 56 4[27 1[58 49 51 1[54 -1[56 97[{}12 90.9091 /CMCSC10 rf /Fn 197[25 58[{}1 90.9091 -/CMMI10 rf /Fo 197[33 58[{}1 119.552 /CMMI12 rf /Fp 135[85 -117 1[90 63 64 66 1[90 81 90 134 45 2[45 90 81 49 74 -90 72 90 78 10[122 124 112 1[120 1[110 1[126 1[97 2[60 -1[127 101 106 124 117 1[122 14[81 81 49[{}36 143.462 -/CMBX12 rf /Fq 242[91 13[{}1 90.9091 /CMSY10 rf /Fr 134[71 -71 97 71 75 52 53 55 1[75 67 75 112 37 2[37 75 67 41 -61 75 60 75 65 7[102 1[139 102 103 94 75 100 101 92 101 -105 128 81 105 1[50 105 106 85 88 103 97 96 102 6[37 -2[67 67 67 67 67 67 67 2[37 1[37 44[{}55 119.552 /CMBX12 -rf /Fs 129[48 48 48 48 48 48 48 48 48 48 48 48 48 48 +66 64 68 15[45 45 2[30 2[45 28[51 51 53 11[{}51 90.9091 +/CMSL10 rf /Fk 134[44 1[60 42 49 30 37 38 1[46 46 51 +74 23 42 1[28 1[42 1[42 46 42 1[46 84[51 12[{}20 90.9091 +/CMTI10 rf /Fl 134[48 48 48 48 48 48 48 48 48 48 48 48 +48 48 48 48 48 1[48 48 48 48 48 48 48 1[48 2[48 14[48 +48 1[48 1[48 2[48 48 48 17[48 48 2[48 5[48 39[{}37 90.9091 +/CMSLTT10 rf /Fm 135[56 2[56 1[42 2[51 58 56 4[27 1[58 +49 51 1[54 1[56 97[{}12 90.9091 /CMCSC10 rf /Fn 197[25 +58[{}1 90.9091 /CMMI10 rf /Fo 197[33 58[{}1 119.552 /CMMI12 +rf /Fp 135[85 117 1[90 63 64 66 1[90 81 90 134 45 2[45 +90 81 49 74 90 72 90 78 10[122 124 112 1[120 1[110 1[126 +1[97 2[60 1[127 101 106 124 117 1[122 14[81 81 49[{}36 +143.462 /CMBX12 rf /Fq 242[91 13[{}1 90.9091 /CMSY10 +rf /Fr 134[71 71 97 71 75 52 53 55 1[75 67 75 112 37 +2[37 75 67 41 61 75 60 75 65 7[102 1[139 102 103 94 75 +100 101 92 101 105 128 81 105 1[50 105 106 85 88 103 +97 96 102 6[37 67 67 67 67 67 67 67 67 67 67 1[37 1[37 +44[{}58 119.552 /CMBX12 rf /Fs 129[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 -48 48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 -48 1[48 48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 -48 48 48 48 48 48 48 33[{}91 90.9091 /CMTT10 rf /Ft 131[91 -45 40 48 48 66 48 51 35 36 36 48 51 45 51 76 25 48 28 -25 51 45 28 40 51 40 51 45 25 2[25 45 25 56 68 68 93 -68 68 66 51 67 71 62 71 68 83 57 71 47 33 68 71 59 62 -69 66 64 68 71 4[25 25 45 45 45 45 45 45 45 45 45 45 -45 25 30 25 2[35 35 25 2[45 1[45 19[76 51 51 53 11[{}84 -90.9091 /CMR10 rf /Fu 134[102 6[79 3[108 1[54 2[54 3[88 -108 1[108 94 11[149 2[144 3[151 1[116 4[152 71[{}14 172.154 -/CMBX12 rf end +48 48 48 48 48 48 48 48 48 48 1[48 48 48 48 48 48 48 +48 48 48 48 48 48 48 48 48 1[48 48 1[48 48 48 48 48 48 +48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 33[{}91 +90.9091 /CMTT10 rf /Ft 131[91 45 40 48 48 66 48 51 35 +36 36 48 51 45 51 76 25 48 28 25 51 45 28 40 51 40 51 +45 25 2[25 45 25 56 68 68 93 68 68 66 51 67 71 62 71 +68 83 57 71 47 33 68 71 59 62 69 66 64 68 71 4[25 25 +45 45 45 45 45 45 45 45 45 45 45 25 30 25 2[35 35 25 +2[45 1[45 19[76 51 51 53 11[{}84 90.9091 /CMR10 rf /Fu +134[102 6[79 3[108 1[54 2[54 3[88 108 1[108 94 11[149 +2[144 3[151 1[116 4[152 71[{}14 172.154 /CMBX12 rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi @@ -6683,29 +6683,30 @@ ifelse %%EndSetup %%Page: 1 1 TeXDict begin 1 0 bop 150 1318 a Fu(GNU)65 b(Readline)g(Library)p -150 1418 3600 34 v 1873 1515 a Ft(Edition)30 b(8.1,)i(for)e -Fs(Readline)e(Library)h Ft(V)-8 b(ersion)31 b(8.1.)3217 -1623 y(Octob)s(er)f(2020)150 4927 y Fr(Chet)45 b(Ramey)-11 +150 1418 3600 34 v 1873 1515 a Ft(Edition)30 b(8.2,)i(for)e +Fs(Readline)e(Library)h Ft(V)-8 b(ersion)31 b(8.2.)3118 +1623 y(Septem)m(b)s(er)f(2022)150 4927 y Fr(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46 b(Reserv)l(e)g(Univ)l(ersit)l(y)150 5068 y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F) -11 b(oundation)p 150 5141 3600 17 v eop end %%Page: 2 2 -TeXDict begin 2 1 bop 150 4413 a Ft(This)28 b(man)m(ual)i(describ)s(es) -e(the)i(GNU)f(Readline)h(Library)e(\(v)m(ersion)i(8.1,)h(29)f(Octob)s -(er)f(2020\),)j(a)d(library)150 4523 y(whic)m(h)39 b(aids)g(in)g(the)g -(consistency)h(of)g(user)e(in)m(terface)j(across)f(discrete)g(programs) -e(whic)m(h)h(pro)m(vide)h(a)150 4633 y(command)30 b(line)h(in)m -(terface.)150 4767 y(Cop)m(yrigh)m(t)602 4764 y(c)577 -4767 y Fq(\015)f Ft(1988{2020)35 b(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F) --8 b(oundation,)31 b(Inc.)390 4902 y(P)m(ermission)21 -b(is)f(gran)m(ted)h(to)g(cop)m(y)-8 b(,)24 b(distribute)c(and/or)h(mo)s -(dify)e(this)i(do)s(cumen)m(t)f(under)f(the)390 5011 -y(terms)25 b(of)h(the)f(GNU)h(F)-8 b(ree)27 b(Do)s(cumen)m(tation)g -(License,)g(V)-8 b(ersion)26 b(1.3)g(or)f(an)m(y)h(later)g(v)m(ersion) -390 5121 y(published)43 b(b)m(y)h(the)h(F)-8 b(ree)46 -b(Soft)m(w)m(are)g(F)-8 b(oundation;)53 b(with)44 b(no)g(In)m(v)-5 -b(arian)m(t)46 b(Sections,)j(no)390 5230 y(F)-8 b(ron)m(t-Co)m(v)m(er) -31 b(T)-8 b(exts,)30 b(and)f(no)f(Bac)m(k-Co)m(v)m(er)k(T)-8 +TeXDict begin 2 1 bop 150 4413 a Ft(This)21 b(man)m(ual)g(describ)s(es) +g(the)g(GNU)h(Readline)g(Library)f(\(v)m(ersion)h(8.2,)i(19)e(Septem)m +(b)s(er)f(2022\),)26 b(a)21 b(library)150 4523 y(whic)m(h)39 +b(aids)g(in)g(the)g(consistency)h(of)g(user)e(in)m(terface)j(across)f +(discrete)g(programs)e(whic)m(h)h(pro)m(vide)h(a)150 +4633 y(command)30 b(line)h(in)m(terface.)150 4767 y(Cop)m(yrigh)m(t)602 +4764 y(c)577 4767 y Fq(\015)f Ft(1988{2022)35 b(F)-8 +b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390 +4902 y(P)m(ermission)21 b(is)f(gran)m(ted)h(to)g(cop)m(y)-8 +b(,)24 b(distribute)c(and/or)h(mo)s(dify)e(this)i(do)s(cumen)m(t)f +(under)f(the)390 5011 y(terms)25 b(of)h(the)f(GNU)h(F)-8 +b(ree)27 b(Do)s(cumen)m(tation)g(License,)g(V)-8 b(ersion)26 +b(1.3)g(or)f(an)m(y)h(later)g(v)m(ersion)390 5121 y(published)43 +b(b)m(y)h(the)h(F)-8 b(ree)46 b(Soft)m(w)m(are)g(F)-8 +b(oundation;)53 b(with)44 b(no)g(In)m(v)-5 b(arian)m(t)46 +b(Sections,)j(no)390 5230 y(F)-8 b(ron)m(t-Co)m(v)m(er)31 +b(T)-8 b(exts,)30 b(and)f(no)f(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts.)41 b(A)29 b(cop)m(y)h(of)f(the)g(license)h(is)f(included)390 5340 y(in)h(the)h(section)g(en)m(titled)h(\\GNU)f(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License".)p eop end @@ -6746,143 +6747,143 @@ b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f 39 b Ft(4)399 1773 y(1.3.2)93 b(Conditional)31 b(Init)f(Constructs)16 b Fn(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 -b Ft(12)399 1882 y(1.3.3)93 b(Sample)30 b(Init)g(File)22 +b Ft(13)399 1882 y(1.3.3)93 b(Sample)30 b(Init)g(File)22 b Fn(:)17 b(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)35 b Ft(13)275 1992 y(1.4)92 +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)35 b Ft(14)275 1992 y(1.4)92 b(Bindable)30 b(Readline)h(Commands)22 b Fn(:)15 b(:)g(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)35 b Ft(16)399 2101 +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)35 b Ft(17)399 2101 y(1.4.1)93 b(Commands)29 b(F)-8 b(or)31 b(Mo)m(ving)18 b Fn(:)f(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)31 b Ft(16)399 2211 y(1.4.2)93 b(Commands)29 b(F)-8 +(:)31 b Ft(17)399 2211 y(1.4.2)93 b(Commands)29 b(F)-8 b(or)31 b(Manipulating)g(The)f(History)f Fn(:)15 b(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Ft(17)399 +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Ft(18)399 2320 y(1.4.3)93 b(Commands)29 b(F)-8 b(or)31 b(Changing)f(T)-8 b(ext)12 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)25 -b Ft(18)399 2430 y(1.4.4)93 b(Killing)31 b(And)e(Y)-8 +b Ft(19)399 2430 y(1.4.4)93 b(Killing)31 b(And)e(Y)-8 b(anking)13 b Fn(:)k(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)26 b Ft(20)399 2540 y(1.4.5)93 +(:)f(:)g(:)h(:)f(:)h(:)f(:)26 b Ft(21)399 2540 y(1.4.5)93 b(Sp)s(ecifying)30 b(Numeric)g(Argumen)m(ts)e Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)41 b Ft(21)399 2649 +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)41 b Ft(22)399 2649 y(1.4.6)93 b(Letting)31 b(Readline)g(T)m(yp)s(e)f(F)-8 b(or)31 b(Y)-8 b(ou)22 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)35 -b Ft(21)399 2759 y(1.4.7)93 b(Keyb)s(oard)29 b(Macros)11 +b Ft(22)399 2759 y(1.4.7)93 b(Keyb)s(oard)29 b(Macros)11 b Fn(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)24 b Ft(22)399 2868 y(1.4.8)93 +g(:)h(:)f(:)h(:)f(:)g(:)h(:)24 b Ft(23)399 2868 y(1.4.8)93 b(Some)30 b(Miscellaneous)j(Commands)16 b Fn(:)e(:)h(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)29 b Ft(22)275 2978 y(1.5)92 b(Readline)31 +(:)h(:)f(:)29 b Ft(23)275 2978 y(1.5)92 b(Readline)31 b(vi)f(Mo)s(de)10 b Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)23 -b Ft(24)150 3229 y Fr(2)135 b(Programming)46 b(with)f(GNU)g(Readline)37 +b Ft(25)150 3229 y Fr(2)135 b(Programming)46 b(with)f(GNU)g(Readline)37 b Fo(:)19 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)48 -b Fr(25)275 3366 y Ft(2.1)92 b(Basic)31 b(Beha)m(vior)23 +b Fr(26)275 3366 y Ft(2.1)92 b(Basic)31 b(Beha)m(vior)23 b Fn(:)17 b(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)36 -b Ft(25)275 3475 y(2.2)92 b(Custom)29 b(F)-8 b(unctions)19 +b Ft(26)275 3475 y(2.2)92 b(Custom)29 b(F)-8 b(unctions)19 b Fn(:)d(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)32 b Ft(26)399 +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)32 b Ft(27)399 3585 y(2.2.1)93 b(Readline)31 b(T)m(yp)s(edefs)17 b Fn(:)e(:)g(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)30 b Ft(27)399 3694 y(2.2.2)93 b(W)-8 b(riting)31 +(:)30 b Ft(28)399 3694 y(2.2.2)93 b(W)-8 b(riting)31 b(a)g(New)g(F)-8 b(unction)24 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)37 b Ft(27)275 3804 y(2.3)92 +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)37 b Ft(28)275 3804 y(2.3)92 b(Readline)31 b(V)-8 b(ariables)11 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)h(:)f(:)24 b Ft(28)275 3914 y(2.4)92 b(Readline)31 +(:)h(:)f(:)24 b Ft(29)275 3914 y(2.4)92 b(Readline)31 b(Con)m(v)m(enience)g(F)-8 b(unctions)22 b Fn(:)16 b(:)g(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)35 b Ft(33)399 4023 y(2.4.1)93 +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)35 b Ft(34)399 4023 y(2.4.1)93 b(Naming)31 b(a)g(F)-8 b(unction)21 b Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)34 -b Ft(33)399 4133 y(2.4.2)93 b(Selecting)32 b(a)e(Keymap)9 +b Ft(34)399 4133 y(2.4.2)93 b(Selecting)32 b(a)e(Keymap)9 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)22 b Ft(34)399 4242 y(2.4.3)93 b(Binding)30 +f(:)h(:)f(:)g(:)h(:)22 b Ft(35)399 4242 y(2.4.3)93 b(Binding)30 b(Keys)15 b Fn(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)28 -b Ft(35)399 4352 y(2.4.4)93 b(Asso)s(ciating)32 b(F)-8 +b Ft(36)399 4352 y(2.4.4)93 b(Asso)s(ciating)32 b(F)-8 b(unction)31 b(Names)g(and)e(Bindings)d Fn(:)16 b(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)39 b Ft(36)399 +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)39 b Ft(38)399 4462 y(2.4.5)93 b(Allo)m(wing)32 b(Undoing)26 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)40 b Ft(37)399 4571 y(2.4.6)93 b(Redispla)m(y)10 +f(:)g(:)h(:)f(:)40 b Ft(39)399 4571 y(2.4.6)93 b(Redispla)m(y)10 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)23 -b Ft(38)399 4681 y(2.4.7)93 b(Mo)s(difying)30 b(T)-8 +b Ft(40)399 4681 y(2.4.7)93 b(Mo)s(difying)30 b(T)-8 b(ext)16 b Fn(:)g(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)28 b Ft(40)399 +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)28 b Ft(41)399 4790 y(2.4.8)93 b(Character)31 b(Input)22 b Fn(:)13 b(:)j(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)35 b Ft(40)399 4900 y(2.4.9)93 b(T)-8 b(erminal)30 +(:)g(:)35 b Ft(42)399 4900 y(2.4.9)93 b(T)-8 b(erminal)30 b(Managemen)m(t)17 b Fn(:)h(:)d(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)30 b Ft(41)399 5010 y(2.4.10)93 +g(:)h(:)f(:)h(:)f(:)g(:)30 b Ft(43)399 5010 y(2.4.10)93 b(Utilit)m(y)33 b(F)-8 b(unctions)24 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)36 -b Ft(41)399 5119 y(2.4.11)93 b(Miscellaneous)33 b(F)-8 +b Ft(43)399 5119 y(2.4.11)93 b(Miscellaneous)33 b(F)-8 b(unctions)23 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)36 b Ft(43)399 5229 y(2.4.12)93 b(Alternate)32 +f(:)h(:)f(:)36 b Ft(45)399 5229 y(2.4.12)93 b(Alternate)32 b(In)m(terface)27 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38 b Ft(44)399 5338 +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38 b Ft(46)399 5338 y(2.4.13)93 b(A)31 b(Readline)g(Example)12 b Fn(:)j(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)25 -b Ft(45)p eop end +b Ft(46)p eop end %%Page: -2 4 TeXDict begin -2 3 bop 3699 -116 a Ft(ii)399 83 y(2.4.14)93 b(Alternate)32 b(In)m(terface)g(Example)18 b Fn(:)e(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)31 b Ft(46)275 193 y(2.5)92 b(Readline)31 +f(:)g(:)h(:)f(:)h(:)31 b Ft(48)275 193 y(2.5)92 b(Readline)31 b(Signal)f(Handling)18 b Fn(:)e(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)31 b Ft(48)275 302 +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)31 b Ft(50)275 302 y(2.6)92 b(Custom)29 b(Completers)e Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)40 b Ft(51)399 412 y(2.6.1)93 b(Ho)m(w)31 b(Completing)g(W)-8 +(:)40 b Ft(53)399 412 y(2.6.1)93 b(Ho)m(w)31 b(Completing)g(W)-8 b(orks)11 b Fn(:)16 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)24 b Ft(51)399 521 y(2.6.2)93 b(Completion)31 +g(:)h(:)f(:)h(:)24 b Ft(53)399 521 y(2.6.2)93 b(Completion)31 b(F)-8 b(unctions)28 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)40 b Ft(52)399 631 y(2.6.3)93 +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)40 b Ft(54)399 631 y(2.6.3)93 b(Completion)31 b(V)-8 b(ariables)18 b Fn(:)e(:)g(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)31 b -Ft(53)399 741 y(2.6.4)93 b(A)30 b(Short)g(Completion)h(Example)15 +Ft(55)399 741 y(2.6.4)93 b(A)30 b(Short)g(Completion)h(Example)15 b Fn(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)28 b -Ft(58)150 991 y Fr(App)t(endix)44 b(A)119 b(GNU)39 b(F)-11 +Ft(60)150 991 y Fr(App)t(endix)44 b(A)119 b(GNU)39 b(F)-11 b(ree)38 b(Do)t(cumen)l(tation)i(License)25 b Fo(:)20 -b(:)32 b Fr(67)150 1269 y(Concept)45 b(Index)36 b Fo(:)19 +b(:)32 b Fr(70)150 1269 y(Concept)45 b(Index)36 b Fo(:)19 b(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:) -h(:)49 b Fr(75)150 1548 y(F)-11 b(unction)44 b(and)h(V)-11 +h(:)49 b Fr(78)150 1548 y(F)-11 b(unction)44 b(and)h(V)-11 b(ariable)45 b(Index)20 b Fo(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fr(76)p +f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fr(79)p eop end %%Page: 1 5 TeXDict begin 1 4 bop 3705 -116 a Ft(1)150 299 y Fp(1)80 @@ -6990,33 +6991,33 @@ m(haracter)i(to)f(the)g(left)g(of)f(the)h(cursor.)150 (cursor.)150 1596 y Fl(C-_)e Ft(or)i Fl(C-x)e(C-u)630 1706 y Ft(Undo)k(the)h(last)g(editing)g(command.)50 b(Y)-8 b(ou)34 b(can)f(undo)g(all)h(the)f(w)m(a)m(y)i(bac)m(k)f(to)g(an)g -(empt)m(y)630 1815 y(line.)150 1977 y(\(Dep)s(ending)29 -b(on)h(y)m(our)f(con\014guration,)i(the)e Fs(Backspace)e -Ft(k)m(ey)k(b)s(e)d(set)j(to)f(delete)h(the)e(c)m(haracter)i(to)g(the) -150 2087 y(left)37 b(of)f(the)h(cursor)e(and)h(the)g -Fs(DEL)g Ft(k)m(ey)h(set)f(to)h(delete)h(the)e(c)m(haracter)i -(underneath)d(the)h(cursor,)i(lik)m(e)150 2196 y Fl(C-d)p -Ft(,)30 b(rather)g(than)g(the)h(c)m(haracter)h(to)f(the)f(left)h(of)g -(the)f(cursor.\))150 2398 y Fi(1.2.2)63 b(Readline)40 -b(Mo)m(v)m(emen)m(t)h(Commands)150 2545 y Ft(The)27 b(ab)s(o)m(v)m(e)i -(table)g(describ)s(es)e(the)g(most)i(basic)f(k)m(eystrok)m(es)h(that)f -(y)m(ou)g(need)g(in)f(order)g(to)i(do)e(editing)i(of)150 -2654 y(the)k(input)f(line.)49 b(F)-8 b(or)34 b(y)m(our)f(con)m(v)m -(enience,)j(man)m(y)d(other)g(commands)f(ha)m(v)m(e)j(b)s(een)d(added)g -(in)h(addition)150 2764 y(to)j Fl(C-b)p Ft(,)f Fl(C-f)p -Ft(,)g Fl(C-d)p Ft(,)h(and)e Fs(DEL)p Ft(.)54 b(Here)35 -b(are)g(some)h(commands)e(for)h(mo)m(ving)h(more)f(rapidly)f(ab)s(out)h -(the)150 2873 y(line.)150 3035 y Fl(C-a)336 b Ft(Mo)m(v)m(e)32 -b(to)g(the)e(start)h(of)g(the)f(line.)150 3197 y Fl(C-e)336 -b Ft(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150 -3358 y Fl(M-f)336 b Ft(Mo)m(v)m(e)32 b(forw)m(ard)e(a)h(w)m(ord,)f -(where)g(a)h(w)m(ord)f(is)g(comp)s(osed)g(of)h(letters)h(and)d(digits.) -150 3519 y Fl(M-b)336 b Ft(Mo)m(v)m(e)32 b(bac)m(kw)m(ard)f(a)g(w)m -(ord.)150 3680 y Fl(C-l)336 b Ft(Clear)31 b(the)f(screen,)h(reprin)m -(ting)f(the)h(curren)m(t)f(line)h(at)g(the)f(top.)275 -3843 y(Notice)c(ho)m(w)f Fl(C-f)e Ft(mo)m(v)m(es)j(forw)m(ard)e(a)h(c)m -(haracter,)j(while)d Fl(M-f)e Ft(mo)m(v)m(es)j(forw)m(ard)e(a)h(w)m -(ord.)39 b(It)24 b(is)h(a)g(lo)s(ose)150 3952 y(con)m(v)m(en)m(tion)32 +(empt)m(y)630 1815 y(line.)150 1977 y(\(Dep)s(ending)c(on)g(y)m(our)g +(con\014guration,)h(the)f Fs(Backspace)d Ft(k)m(ey)k(migh)m(t)g(b)s(e)e +(set)i(to)g(delete)g(the)f(c)m(haracter)150 2087 y(to)h(the)f(left)h +(of)f(the)g(cursor)f(and)h(the)g Fs(DEL)f Ft(k)m(ey)i(set)g(to)f +(delete)i(the)e(c)m(haracter)h(underneath)e(the)h(cursor,)150 +2196 y(lik)m(e)i Fl(C-d)p Ft(,)d(rather)i(than)f(the)g(c)m(haracter)i +(to)f(the)g(left)g(of)g(the)f(cursor.\))150 2398 y Fi(1.2.2)63 +b(Readline)40 b(Mo)m(v)m(emen)m(t)h(Commands)150 2545 +y Ft(The)27 b(ab)s(o)m(v)m(e)i(table)g(describ)s(es)e(the)g(most)i +(basic)f(k)m(eystrok)m(es)h(that)f(y)m(ou)g(need)g(in)f(order)g(to)i +(do)e(editing)i(of)150 2654 y(the)k(input)f(line.)49 +b(F)-8 b(or)34 b(y)m(our)f(con)m(v)m(enience,)j(man)m(y)d(other)g +(commands)f(ha)m(v)m(e)j(b)s(een)d(added)g(in)h(addition)150 +2764 y(to)j Fl(C-b)p Ft(,)f Fl(C-f)p Ft(,)g Fl(C-d)p +Ft(,)h(and)e Fs(DEL)p Ft(.)54 b(Here)35 b(are)g(some)h(commands)e(for)h +(mo)m(ving)h(more)f(rapidly)f(ab)s(out)h(the)150 2873 +y(line.)150 3035 y Fl(C-a)336 b Ft(Mo)m(v)m(e)32 b(to)g(the)e(start)h +(of)g(the)f(line.)150 3197 y Fl(C-e)336 b Ft(Mo)m(v)m(e)32 +b(to)g(the)e(end)g(of)g(the)h(line.)150 3358 y Fl(M-f)336 +b Ft(Mo)m(v)m(e)32 b(forw)m(ard)e(a)h(w)m(ord,)f(where)g(a)h(w)m(ord)f +(is)g(comp)s(osed)g(of)h(letters)h(and)d(digits.)150 +3519 y Fl(M-b)336 b Ft(Mo)m(v)m(e)32 b(bac)m(kw)m(ard)f(a)g(w)m(ord.) +150 3680 y Fl(C-l)336 b Ft(Clear)31 b(the)f(screen,)h(reprin)m(ting)f +(the)h(curren)m(t)f(line)h(at)g(the)f(top.)275 3843 y(Notice)c(ho)m(w)f +Fl(C-f)e Ft(mo)m(v)m(es)j(forw)m(ard)e(a)h(c)m(haracter,)j(while)d +Fl(M-f)e Ft(mo)m(v)m(es)j(forw)m(ard)e(a)h(w)m(ord.)39 +b(It)24 b(is)h(a)g(lo)s(ose)150 3952 y(con)m(v)m(en)m(tion)32 b(that)f(con)m(trol)g(k)m(eystrok)m(es)h(op)s(erate)e(on)g(c)m (haracters)h(while)f(meta)h(k)m(eystrok)m(es)h(op)s(erate)e(on)150 4062 y(w)m(ords.)150 4263 y Fi(1.2.3)63 b(Readline)40 @@ -7051,14 +7052,14 @@ b(is)h(the)f(list)h(of)g(commands)f(for)g(killing)h(text.)150 (of)h(the)f(curren)m(t)g(w)m(ord,)h(or,)h(if)e(b)s(et)m(w)m(een)h(w)m (ords,)g(to)g(the)630 723 y(end)j(of)g(the)h(next)f(w)m(ord.)41 b(W)-8 b(ord)30 b(b)s(oundaries)f(are)i(the)g(same)f(as)h(those)g(used) -f(b)m(y)g Fl(M-f)p Ft(.)150 881 y Fl(M-DEL)240 b Ft(Kill)31 -b(from)f(the)h(cursor)f(the)g(start)h(of)g(the)g(curren)m(t)f(w)m(ord,) -h(or,)f(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)i(the)630 -991 y(start)39 b(of)f(the)h(previous)f(w)m(ord.)64 b(W)-8 -b(ord)39 b(b)s(oundaries)e(are)i(the)f(same)h(as)g(those)f(used)g(b)m -(y)630 1100 y Fl(M-b)p Ft(.)150 1258 y Fl(C-w)336 b Ft(Kill)35 -b(from)g(the)g(cursor)f(to)i(the)f(previous)g(whitespace.)55 -b(This)34 b(is)h(di\013eren)m(t)h(than)e Fl(M-DEL)630 +f(b)m(y)g Fl(M-f)p Ft(.)150 881 y Fl(M-DEL)240 b Ft(Kill)34 +b(from)f(the)g(cursor)g(to)h(the)g(start)g(of)g(the)f(curren)m(t)g(w)m +(ord,)h(or,)h(if)e(b)s(et)m(w)m(een)h(w)m(ords,)g(to)630 +991 y(the)28 b(start)g(of)g(the)g(previous)f(w)m(ord.)39 +b(W)-8 b(ord)28 b(b)s(oundaries)e(are)i(the)g(same)g(as)g(those)g(used) +f(b)m(y)630 1100 y Fl(M-b)p Ft(.)150 1258 y Fl(C-w)336 +b Ft(Kill)35 b(from)g(the)g(cursor)f(to)i(the)f(previous)g(whitespace.) +55 b(This)34 b(is)h(di\013eren)m(t)h(than)e Fl(M-DEL)630 1367 y Ft(b)s(ecause)c(the)h(w)m(ord)f(b)s(oundaries)f(di\013er.)275 1525 y(Here)42 b(is)f(ho)m(w)h(to)g Fj(y)m(ank)47 b Ft(the)42 b(text)g(bac)m(k)h(in)m(to)f(the)g(line.)74 b(Y)-8 b(anking)43 @@ -7156,9 +7157,9 @@ y Ft(Although)f(the)g(Readline)g(library)f(comes)i(with)e(a)h(set)h(of) f(Emacs-lik)m(e)h(k)m(eybindings)f(installed)g(b)m(y)150 1896 y(default,)26 b(it)g(is)e(p)s(ossible)h(to)g(use)f(a)i(di\013eren) m(t)f(set)g(of)g(k)m(eybindings.)38 b(An)m(y)25 b(user)f(can)h -(customize)h(programs)150 2005 y(that)45 b(use)f(Readline)h(b)m(y)f -(putting)g(commands)g(in)g(an)g Fj(inputrc)49 b Ft(\014le,)g(con)m(v)m -(en)m(tionally)e(in)d(his)g(home)150 2115 y(directory)-8 +(customize)h(programs)150 2005 y(that)39 b(use)g(Readline)g(b)m(y)f +(putting)h(commands)f(in)g(an)h Fj(inputrc)k Ft(\014le,)e(con)m(v)m(en) +m(tionally)h(in)c(their)h(home)150 2115 y(directory)-8 b(.)39 b(The)23 b(name)h(of)f(this)h(\014le)f(is)g(tak)m(en)i(from)e (the)g(v)-5 b(alue)24 b(of)g(the)f(en)m(vironmen)m(t)h(v)-5 b(ariable)25 b Fs(INPUTRC)p Ft(.)150 2224 y(If)30 b(that)g(v)-5 @@ -7178,7 +7179,7 @@ b(lines)h(are)150 3322 y(ignored.)72 b(Lines)41 b(b)s(eginning)f(with)h (a)g(`)p Fs(#)p Ft(')g(are)h(commen)m(ts.)73 b(Lines)41 b(b)s(eginning)f(with)g(a)i(`)p Fs($)p Ft(')f(indicate)150 3431 y(conditional)i(constructs)e(\(see)i(Section)f(1.3.2)h -([Conditional)f(Init)f(Constructs],)j(page)f(12\).)74 +([Conditional)f(Init)f(Constructs],)j(page)f(13\).)74 b(Other)150 3541 y(lines)31 b(denote)g(v)-5 b(ariable)31 b(settings)g(and)f(k)m(ey)h(bindings.)150 3722 y(V)-8 b(ariable)32 b(Settings)630 3832 y(Y)-8 b(ou)41 b(can)g(mo)s(dify)e @@ -7205,290 +7206,371 @@ b(1.)39 b(An)m(y)25 b(other)f(v)-5 b(alue)25 b(results)f(in)g(the)g(v) eop end %%Page: 5 9 TeXDict begin 5 8 bop 150 -116 a Ft(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2153 b(5)630 299 y Fs(bell-style)1110 -408 y Ft(Con)m(trols)44 b(what)g(happ)s(ens)e(when)h(Readline)i(w)m(an) -m(ts)f(to)h(ring)e(the)h(termi-)1110 518 y(nal)37 b(b)s(ell.)61 +b(Command)29 b(Line)i(Editing)2153 b(5)630 299 y Fs +(active-region-start-colo)o(r)1110 408 y Ft(A)27 b(string)f(v)-5 +b(ariable)27 b(that)g(con)m(trols)h(the)f(text)g(color)h(and)e(bac)m +(kground)g(when)1110 518 y(displa)m(ying)50 b(the)f(text)h(in)f(the)h +(activ)m(e)h(region)f(\(see)g(the)g(description)f(of)1110 +628 y Fs(enable-active-region)25 b Ft(b)s(elo)m(w\).)43 +b(This)30 b(string)h(m)m(ust)f(not)h(tak)m(e)i(up)d(an)m(y)1110 +737 y(ph)m(ysical)25 b(c)m(haracter)h(p)s(ositions)f(on)g(the)f(displa) +m(y)-8 b(,)27 b(so)e(it)g(should)f(consist)h(only)1110 +847 y(of)37 b(terminal)g(escap)s(e)g(sequences.)61 b(It)36 +b(is)h(output)g(to)g(the)g(terminal)g(b)s(efore)1110 +956 y(displa)m(ying)h(the)f(text)i(in)e(the)h(activ)m(e)h(region.)63 +b(This)37 b(v)-5 b(ariable)38 b(is)f(reset)h(to)1110 +1066 y(the)29 b(default)g(v)-5 b(alue)29 b(whenev)m(er)f(the)h +(terminal)g(t)m(yp)s(e)g(c)m(hanges.)41 b(The)28 b(default)1110 +1176 y(v)-5 b(alue)30 b(is)f(the)g(string)g(that)h(puts)e(the)i +(terminal)f(in)g(standout)g(mo)s(de,)g(as)h(ob-)1110 +1285 y(tained)40 b(from)f(the)h(terminal's)g(terminfo)g(description.)68 +b(A)40 b(sample)f(v)-5 b(alue)1110 1395 y(migh)m(t)31 +b(b)s(e)f(`)p Fs(\\e[01;33m)p Ft('.)630 1570 y Fs +(active-region-end-color)1110 1680 y Ft(A)48 b(string)g(v)-5 +b(ariable)48 b(that)h Fs(")p Ft(undo)s(es)p Fs(")d Ft(the)i(e\013ects)h +(of)f Fs(active-region-)1110 1789 y(start-color)36 b +Ft(and)i(restores)h Fs(")p Ft(normal)p Fs(")f Ft(terminal)h(displa)m(y) +g(app)s(earance)1110 1899 y(after)26 b(displa)m(ying)h(text)f(in)g(the) +g(activ)m(e)i(region.)40 b(This)25 b(string)h(m)m(ust)f(not)h(tak)m(e) +1110 2008 y(up)e(an)m(y)h(ph)m(ysical)h(c)m(haracter)h(p)s(ositions)d +(on)h(the)h(displa)m(y)-8 b(,)27 b(so)e(it)g(should)f(con-)1110 +2118 y(sist)29 b(only)h(of)f(terminal)h(escap)s(e)f(sequences.)41 +b(It)29 b(is)g(output)g(to)h(the)f(terminal)1110 2228 +y(after)36 b(displa)m(ying)g(the)g(text)h(in)e(the)h(activ)m(e)i +(region.)58 b(This)34 b(v)-5 b(ariable)37 b(is)f(re-)1110 +2337 y(set)e(to)g(the)g(default)g(v)-5 b(alue)34 b(whenev)m(er)f(the)h +(terminal)g(t)m(yp)s(e)f(c)m(hanges.)51 b(The)1110 2447 +y(default)38 b(v)-5 b(alue)39 b(is)f(the)h(string)f(that)h(restores)f +(the)h(terminal)f(from)g(stand-)1110 2556 y(out)30 b(mo)s(de,)f(as)g +(obtained)h(from)f(the)g(terminal's)h(terminfo)f(description.)41 +b(A)1110 2666 y(sample)31 b(v)-5 b(alue)30 b(migh)m(t)h(b)s(e)f(`)p +Fs(\\e[0m)p Ft('.)630 2841 y Fs(bell-style)1110 2951 +y Ft(Con)m(trols)44 b(what)g(happ)s(ens)e(when)h(Readline)i(w)m(an)m +(ts)f(to)h(ring)e(the)h(termi-)1110 3061 y(nal)37 b(b)s(ell.)61 b(If)37 b(set)h(to)g(`)p Fs(none)p Ft(',)g(Readline)g(nev)m(er)g(rings) -e(the)i(b)s(ell.)61 b(If)36 b(set)i(to)1110 628 y(`)p +e(the)i(b)s(ell.)61 b(If)36 b(set)i(to)1110 3170 y(`)p Fs(visible)p Ft(',)32 b(Readline)i(uses)f(a)g(visible)g(b)s(ell)g(if)g (one)g(is)g(a)m(v)-5 b(ailable.)51 b(If)33 b(set)g(to)1110 -737 y(`)p Fs(audible)p Ft(')j(\(the)i(default\),)i(Readline)e(attempts) -g(to)h(ring)e(the)g(terminal's)1110 847 y(b)s(ell.)630 -1005 y Fs(bind-tty-special-chars)1110 1115 y Ft(If)e(set)g(to)h(`)p +3280 y(`)p Fs(audible)p Ft(')j(\(the)i(default\),)i(Readline)e +(attempts)g(to)h(ring)e(the)g(terminal's)1110 3389 y(b)s(ell.)630 +3565 y Fs(bind-tty-special-chars)1110 3674 y Ft(If)e(set)g(to)h(`)p Fs(on)p Ft(')f(\(the)g(default\),)i(Readline)f(attempts)g(to)g(bind)d -(the)i(con)m(trol)1110 1224 y(c)m(haracters)30 b(treated)g(sp)s +(the)i(con)m(trol)1110 3784 y(c)m(haracters)30 b(treated)g(sp)s (ecially)g(b)m(y)f(the)g(k)m(ernel's)h(terminal)f(driv)m(er)g(to)h -(their)1110 1334 y(Readline)h(equiv)-5 b(alen)m(ts.)630 -1492 y Fs(blink-matching-paren)1110 1602 y Ft(If)36 b(set)g(to)h(`)p +(their)1110 3893 y(Readline)h(equiv)-5 b(alen)m(ts.)630 +4069 y Fs(blink-matching-paren)1110 4178 y Ft(If)36 b(set)g(to)h(`)p Fs(on)p Ft(',)h(Readline)f(attempts)g(to)g(brie\015y)e(mo)m(v)m(e)j -(the)f(cursor)e(to)i(an)1110 1711 y(op)s(ening)k(paren)m(thesis)h(when) +(the)f(cursor)e(to)i(an)1110 4288 y(op)s(ening)k(paren)m(thesis)h(when) f(a)h(closing)h(paren)m(thesis)e(is)h(inserted.)74 b(The)1110 -1821 y(default)31 b(is)f(`)p Fs(off)p Ft('.)630 1979 -y Fs(colored-completion-prefi)o(x)1110 2089 y Ft(If)f(set)h(to)g(`)p +4398 y(default)31 b(is)f(`)p Fs(off)p Ft('.)630 4573 +y Fs(colored-completion-prefi)o(x)1110 4682 y Ft(If)f(set)h(to)g(`)p Fs(on)p Ft(',)g(when)e(listing)i(completions,)h(Readline)f(displa)m(ys) -g(the)f(com-)1110 2198 y(mon)c(pre\014x)f(of)i(the)f(set)h(of)g(p)s +g(the)f(com-)1110 4792 y(mon)c(pre\014x)f(of)i(the)f(set)h(of)g(p)s (ossible)f(completions)h(using)f(a)h(di\013eren)m(t)g(color.)1110 -2308 y(The)39 b(color)i(de\014nitions)f(are)g(tak)m(en)h(from)f(the)g -(v)-5 b(alue)40 b(of)g(the)g Fs(LS_COLORS)1110 2418 y -Ft(en)m(vironmen)m(t)31 b(v)-5 b(ariable.)41 b(The)30 -b(default)h(is)f(`)p Fs(off)p Ft('.)630 2576 y Fs(colored-stats)1110 -2685 y Ft(If)c(set)h(to)g(`)p Fs(on)p Ft(',)h(Readline)f(displa)m(ys)g -(p)s(ossible)f(completions)h(using)f(di\013eren)m(t)1110 -2795 y(colors)40 b(to)g(indicate)g(their)f(\014le)h(t)m(yp)s(e.)67 +4902 y(The)f(color)h(de\014nitions)f(are)h(tak)m(en)g(from)f(the)g(v)-5 +b(alue)26 b(of)g(the)f Fs(LS_COLORS)e Ft(en-)1110 5011 +y(vironmen)m(t)34 b(v)-5 b(ariable.)50 b(If)33 b(there)h(is)g(a)f +(color)i(de\014nition)e(in)g Fs(LS_COLORS)e Ft(for)1110 +5121 y(the)22 b(custom)g(su\016x)f(`)p Fs(readline-colored-complet)o +(ion)o(-pre)o(fix)p Ft(',)c(Read-)1110 5230 y(line)24 +b(uses)e(this)i(color)g(for)f(the)h(common)f(pre\014x)f(instead)i(of)f +(its)h(default.)38 b(The)1110 5340 y(default)31 b(is)f(`)p +Fs(off)p Ft('.)p eop end +%%Page: 6 10 +TeXDict begin 6 9 bop 150 -116 a Ft(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2153 b(6)630 299 y Fs(colored-stats)1110 +408 y Ft(If)26 b(set)h(to)g(`)p Fs(on)p Ft(',)h(Readline)f(displa)m(ys) +g(p)s(ossible)f(completions)h(using)f(di\013eren)m(t)1110 +518 y(colors)40 b(to)g(indicate)g(their)f(\014le)h(t)m(yp)s(e.)67 b(The)38 b(color)j(de\014nitions)d(are)i(tak)m(en)1110 -2905 y(from)24 b(the)h(v)-5 b(alue)25 b(of)g(the)g Fs(LS_COLORS)d +628 y(from)24 b(the)h(v)-5 b(alue)25 b(of)g(the)g Fs(LS_COLORS)d Ft(en)m(vironmen)m(t)j(v)-5 b(ariable.)40 b(The)24 b(default)1110 -3014 y(is)30 b(`)p Fs(off)p Ft('.)630 3173 y Fs(comment-begin)1110 -3282 y Ft(The)62 b(string)g(to)h(insert)f(at)h(the)g(b)s(eginning)e(of) -h(the)h(line)f(when)g(the)1110 3392 y Fs(insert-comment)26 +737 y(is)30 b(`)p Fs(off)p Ft('.)630 925 y Fs(comment-begin)1110 +1035 y Ft(The)62 b(string)g(to)h(insert)f(at)h(the)g(b)s(eginning)e(of) +h(the)h(line)f(when)g(the)1110 1144 y Fs(insert-comment)26 b Ft(command)31 b(is)f(executed.)42 b(The)30 b(default)g(v)-5 -b(alue)31 b(is)f Fs("#")p Ft(.)630 3550 y Fs(completion-display-width) -1110 3660 y Ft(The)41 b(n)m(um)m(b)s(er)f(of)i(screen)g(columns)f(used) -g(to)h(displa)m(y)g(p)s(ossible)f(matc)m(hes)1110 3769 +b(alue)31 b(is)f Fs("#")p Ft(.)630 1332 y Fs(completion-display-width) +1110 1442 y Ft(The)41 b(n)m(um)m(b)s(er)f(of)i(screen)g(columns)f(used) +g(to)h(displa)m(y)g(p)s(ossible)f(matc)m(hes)1110 1551 y(when)28 b(p)s(erforming)g(completion.)41 b(The)29 b(v)-5 b(alue)29 b(is)g(ignored)g(if)g(it)h(is)f(less)g(than)1110 -3879 y(0)e(or)f(greater)h(than)f(the)g(terminal)h(screen)f(width.)39 +1661 y(0)e(or)f(greater)h(than)f(the)g(terminal)h(screen)f(width.)39 b(A)26 b(v)-5 b(alue)27 b(of)f(0)h(will)f(cause)1110 -3988 y(matc)m(hes)32 b(to)f(b)s(e)e(displa)m(y)m(ed)i(one)g(p)s(er)e +1771 y(matc)m(hes)32 b(to)f(b)s(e)e(displa)m(y)m(ed)i(one)g(p)s(er)e (line.)41 b(The)30 b(default)h(v)-5 b(alue)31 b(is)f(-1.)630 -4147 y Fs(completion-ignore-case)1110 4256 y Ft(If)d(set)h(to)g(`)p +1958 y Fs(completion-ignore-case)1110 2068 y Ft(If)d(set)h(to)g(`)p Fs(on)p Ft(',)g(Readline)g(p)s(erforms)e(\014lename)h(matc)m(hing)i -(and)e(completion)1110 4366 y(in)j(a)h(case-insensitiv)m(e)i(fashion.) +(and)e(completion)1110 2178 y(in)j(a)h(case-insensitiv)m(e)i(fashion.) 40 b(The)30 b(default)h(v)-5 b(alue)30 b(is)h(`)p Fs(off)p -Ft('.)630 4524 y Fs(completion-map-case)1110 4634 y Ft(If)22 +Ft('.)630 2365 y Fs(completion-map-case)1110 2475 y Ft(If)22 b(set)g(to)h(`)p Fs(on)p Ft(',)h(and)e Fj(completion-ignore-case)31 -b Ft(is)22 b(enabled,)i(Readline)f(treats)1110 4743 y(h)m(yphens)29 +b Ft(is)22 b(enabled,)i(Readline)f(treats)1110 2585 y(h)m(yphens)29 b(\(`)p Fs(-)p Ft('\))j(and)e(underscores)g(\(`)p Fs(_)p Ft('\))i(as)f(equiv)-5 b(alen)m(t)32 b(when)e(p)s(erforming)1110 -4853 y(case-insensitiv)m(e)47 b(\014lename)e(matc)m(hing)g(and)f -(completion.)85 b(The)44 b(default)1110 4963 y(v)-5 b(alue)31 -b(is)f(`)p Fs(off)p Ft('.)630 5121 y Fs(completion-prefix-displa)o -(y-le)o(ngth)1110 5230 y Ft(The)h(length)g(in)g(c)m(haracters)i(of)f +2694 y(case-insensitiv)m(e)47 b(\014lename)e(matc)m(hing)g(and)f +(completion.)85 b(The)44 b(default)1110 2804 y(v)-5 b(alue)31 +b(is)f(`)p Fs(off)p Ft('.)630 2992 y Fs(completion-prefix-displa)o +(y-le)o(ngth)1110 3101 y Ft(The)h(length)g(in)g(c)m(haracters)i(of)f (the)f(common)h(pre\014x)e(of)h(a)h(list)g(of)f(p)s(ossible)1110 -5340 y(completions)g(that)f(is)g(displa)m(y)m(ed)g(without)g(mo)s -(di\014cation.)41 b(When)29 b(set)h(to)h(a)p eop end -%%Page: 6 10 -TeXDict begin 6 9 bop 150 -116 a Ft(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2153 b(6)1110 299 y(v)-5 -b(alue)26 b(greater)h(than)e(zero,)j(common)e(pre\014xes)e(longer)j -(than)e(this)g(v)-5 b(alue)27 b(are)1110 408 y(replaced)k(with)f(an)g -(ellipsis)h(when)e(displa)m(ying)i(p)s(ossible)f(completions.)630 -565 y Fs(completion-query-items)1110 675 y Ft(The)c(n)m(um)m(b)s(er)f -(of)h(p)s(ossible)g(completions)h(that)g(determines)f(when)f(the)i -(user)1110 784 y(is)43 b(ask)m(ed)g(whether)f(the)g(list)h(of)g(p)s -(ossibilities)g(should)f(b)s(e)g(displa)m(y)m(ed.)77 -b(If)1110 894 y(the)29 b(n)m(um)m(b)s(er)f(of)h(p)s(ossible)g -(completions)h(is)f(greater)h(than)f(or)g(equal)g(to)h(this)1110 -1003 y(v)-5 b(alue,)45 b(Readline)e(will)f(ask)g(whether)f(or)h(not)g -(the)g(user)f(wishes)g(to)i(view)1110 1113 y(them;)33 -b(otherwise,)f(they)g(are)g(simply)g(listed.)45 b(This)31 -b(v)-5 b(ariable)33 b(m)m(ust)e(b)s(e)g(set)1110 1223 -y(to)39 b(an)f(in)m(teger)i(v)-5 b(alue)39 b(greater)g(than)f(or)h -(equal)g(to)g(0.)65 b(A)38 b(negativ)m(e)i(v)-5 b(alue)1110 -1332 y(means)30 b(Readline)h(should)f(nev)m(er)g(ask.)41 -b(The)30 b(default)h(limit)g(is)f Fs(100)p Ft(.)630 1489 -y Fs(convert-meta)1110 1598 y Ft(If)22 b(set)g(to)h(`)p -Fs(on)p Ft(',)h(Readline)f(will)f(con)m(v)m(ert)i(c)m(haracters)f(with) -f(the)g(eigh)m(th)h(bit)f(set)1110 1708 y(to)33 b(an)e -Fm(asci)r(i)h Ft(k)m(ey)h(sequence)f(b)m(y)g(stripping)f(the)h(eigh)m -(th)h(bit)f(and)f(pre\014xing)1110 1817 y(an)24 b Fs(ESC)g -Ft(c)m(haracter,)j(con)m(v)m(erting)f(them)f(to)g(a)g(meta-pre\014xed)f -(k)m(ey)h(sequence.)1110 1927 y(The)i(default)h(v)-5 -b(alue)28 b(is)f(`)p Fs(on)p Ft(',)i(but)d(will)i(b)s(e)f(set)h(to)g(`) -p Fs(off)p Ft(')g(if)f(the)h(lo)s(cale)h(is)f(one)1110 -2037 y(that)j(con)m(tains)h(eigh)m(t-bit)g(c)m(haracters.)630 -2193 y Fs(disable-completion)1110 2303 y Ft(If)k(set)h(to)h(`)p -Fs(On)p Ft(',)g(Readline)f(will)g(inhibit)f(w)m(ord)h(completion.)60 -b(Completion)1110 2412 y(c)m(haracters)28 b(will)e(b)s(e)f(inserted)h -(in)m(to)h(the)g(line)f(as)g(if)g(they)h(had)e(b)s(een)g(mapp)s(ed)1110 -2522 y(to)31 b Fs(self-insert)p Ft(.)38 b(The)30 b(default)g(is)h(`)p -Fs(off)p Ft('.)630 2679 y Fs(echo-control-characters)1110 -2788 y Ft(When)f(set)h(to)g(`)p Fs(on)p Ft(',)f(on)g(op)s(erating)h -(systems)f(that)h(indicate)g(they)g(supp)s(ort)1110 2898 -y(it,)i(readline)e(ec)m(ho)s(es)i(a)f(c)m(haracter)h(corresp)s(onding)d -(to)j(a)f(signal)g(generated)1110 3007 y(from)e(the)g(k)m(eyb)s(oard.) -41 b(The)30 b(default)g(is)h(`)p Fs(on)p Ft('.)630 3164 -y Fs(editing-mode)1110 3273 y Ft(The)d Fs(editing-mode)e +3211 y(completions)g(that)f(is)g(displa)m(y)m(ed)g(without)g(mo)s +(di\014cation.)41 b(When)29 b(set)h(to)h(a)1110 3320 +y(v)-5 b(alue)26 b(greater)h(than)e(zero,)j(common)e(pre\014xes)e +(longer)j(than)e(this)g(v)-5 b(alue)27 b(are)1110 3430 +y(replaced)k(with)f(an)g(ellipsis)h(when)e(displa)m(ying)i(p)s(ossible) +f(completions.)630 3618 y Fs(completion-query-items)1110 +3727 y Ft(The)c(n)m(um)m(b)s(er)f(of)h(p)s(ossible)g(completions)h +(that)g(determines)f(when)f(the)i(user)1110 3837 y(is)43 +b(ask)m(ed)g(whether)f(the)g(list)h(of)g(p)s(ossibilities)g(should)f(b) +s(e)g(displa)m(y)m(ed.)77 b(If)1110 3947 y(the)29 b(n)m(um)m(b)s(er)f +(of)h(p)s(ossible)g(completions)h(is)f(greater)h(than)f(or)g(equal)g +(to)h(this)1110 4056 y(v)-5 b(alue,)45 b(Readline)e(will)f(ask)g +(whether)f(or)h(not)g(the)g(user)f(wishes)g(to)i(view)1110 +4166 y(them;)33 b(otherwise,)f(they)g(are)g(simply)g(listed.)45 +b(This)31 b(v)-5 b(ariable)33 b(m)m(ust)e(b)s(e)g(set)1110 +4275 y(to)43 b(an)e(in)m(teger)j(v)-5 b(alue)42 b(greater)h(than)f(or)g +(equal)g(to)h(zero.)76 b(A)42 b(zero)g(v)-5 b(alue)1110 +4385 y(means)40 b(Readline)h(should)f(nev)m(er)g(ask;)46 +b(negativ)m(e)d(v)-5 b(alues)41 b(are)f(treated)i(as)1110 +4495 y(zero.)g(The)29 b(default)i(limit)g(is)g Fs(100)p +Ft(.)630 4682 y Fs(convert-meta)1110 4792 y Ft(If)22 +b(set)g(to)h(`)p Fs(on)p Ft(',)h(Readline)f(will)f(con)m(v)m(ert)i(c)m +(haracters)f(with)f(the)g(eigh)m(th)h(bit)f(set)1110 +4902 y(to)33 b(an)e Fm(asci)r(i)h Ft(k)m(ey)h(sequence)f(b)m(y)g +(stripping)f(the)h(eigh)m(th)h(bit)f(and)f(pre\014xing)1110 +5011 y(an)24 b Fs(ESC)g Ft(c)m(haracter,)j(con)m(v)m(erting)f(them)f +(to)g(a)g(meta-pre\014xed)f(k)m(ey)h(sequence.)1110 5121 +y(The)i(default)h(v)-5 b(alue)28 b(is)f(`)p Fs(on)p Ft(',)i(but)d(will) +i(b)s(e)f(set)h(to)g(`)p Fs(off)p Ft(')g(if)f(the)h(lo)s(cale)h(is)f +(one)1110 5230 y(that)21 b(con)m(tains)h(eigh)m(t-bit)h(c)m(haracters.) +39 b(This)20 b(v)-5 b(ariable)21 b(is)g(dep)s(enden)m(t)f(on)h(the)1110 +5340 y Fs(LC_CTYPE)26 b Ft(lo)s(cale)31 b(category)-8 +b(,)31 b(and)d(ma)m(y)h(c)m(hange)h(if)e(the)h(lo)s(cale)h(is)f(c)m +(hanged.)p eop end +%%Page: 7 11 +TeXDict begin 7 10 bop 150 -116 a Ft(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2153 b(7)630 299 y Fs(disable-completion) +1110 408 y Ft(If)36 b(set)h(to)h(`)p Fs(On)p Ft(',)g(Readline)f(will)g +(inhibit)f(w)m(ord)h(completion.)60 b(Completion)1110 +518 y(c)m(haracters)28 b(will)e(b)s(e)f(inserted)h(in)m(to)h(the)g +(line)f(as)g(if)g(they)h(had)e(b)s(een)g(mapp)s(ed)1110 +628 y(to)31 b Fs(self-insert)p Ft(.)38 b(The)30 b(default)g(is)h(`)p +Fs(off)p Ft('.)630 774 y Fs(echo-control-characters)1110 +883 y Ft(When)f(set)h(to)g(`)p Fs(on)p Ft(',)f(on)g(op)s(erating)h +(systems)f(that)h(indicate)g(they)g(supp)s(ort)1110 993 +y(it,)e(Readline)g(ec)m(ho)s(es)g(a)f(c)m(haracter)i(corresp)s(onding)d +(to)i(a)f(signal)h(generated)1110 1103 y(from)h(the)g(k)m(eyb)s(oard.) +41 b(The)30 b(default)g(is)h(`)p Fs(on)p Ft('.)630 1249 +y Fs(editing-mode)1110 1358 y Ft(The)d Fs(editing-mode)e Ft(v)-5 b(ariable)29 b(con)m(trols)h(whic)m(h)e(default)h(set)h(of)e(k) -m(ey)i(bind-)1110 3383 y(ings)25 b(is)g(used.)38 b(By)26 +m(ey)i(bind-)1110 1468 y(ings)25 b(is)g(used.)38 b(By)26 b(default,)g(Readline)g(starts)f(up)f(in)h(Emacs)g(editing)h(mo)s(de,) -1110 3493 y(where)j(the)g(k)m(eystrok)m(es)i(are)e(most)h(similar)f(to) +1110 1577 y(where)j(the)g(k)m(eystrok)m(es)i(are)e(most)h(similar)f(to) h(Emacs.)40 b(This)29 b(v)-5 b(ariable)30 b(can)1110 -3602 y(b)s(e)g(set)h(to)g(either)g(`)p Fs(emacs)p Ft(')e(or)h(`)p -Fs(vi)p Ft('.)630 3759 y Fs(emacs-mode-string)1110 3868 +1687 y(b)s(e)g(set)h(to)g(either)g(`)p Fs(emacs)p Ft(')e(or)h(`)p +Fs(vi)p Ft('.)630 1833 y Fs(emacs-mode-string)1110 1943 y Ft(If)j(the)h Fj(sho)m(w-mo)s(de-in-prompt)h Ft(v)-5 b(ariable)35 b(is)e(enabled,)i(this)f(string)f(is)h(dis-)1110 -3978 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f -(of)h(the)f(primary)f(prompt)g(when)1110 4088 y(emacs)g(editing)h(mo)s +2052 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f +(of)h(the)f(primary)f(prompt)g(when)1110 2162 y(emacs)g(editing)h(mo)s (de)e(is)h(activ)m(e.)40 b(The)21 b(v)-5 b(alue)22 b(is)g(expanded)f -(lik)m(e)h(a)h(k)m(ey)f(bind-)1110 4197 y(ing,)27 b(so)f(the)f +(lik)m(e)h(a)h(k)m(ey)f(bind-)1110 2271 y(ing,)27 b(so)f(the)f (standard)g(set)h(of)f(meta-)i(and)e(con)m(trol)i(pre\014xes)d(and)h -(bac)m(kslash)1110 4307 y(escap)s(e)f(sequences)h(is)e(a)m(v)-5 +(bac)m(kslash)1110 2381 y(escap)s(e)f(sequences)h(is)e(a)m(v)-5 b(ailable.)41 b(Use)25 b(the)f(`)p Fs(\\1)p Ft(')f(and)h(`)p -Fs(\\2)p Ft(')g(escap)s(es)g(to)g(b)s(egin)1110 4416 +Fs(\\2)p Ft(')g(escap)s(es)g(to)g(b)s(egin)1110 2491 y(and)37 b(end)g(sequences)h(of)f(non-prin)m(ting)h(c)m(haracters,)j -(whic)m(h)c(can)h(b)s(e)f(used)1110 4526 y(to)h(em)m(b)s(ed)f(a)g +(whic)m(h)c(can)h(b)s(e)f(used)1110 2600 y(to)h(em)m(b)s(ed)f(a)g (terminal)h(con)m(trol)h(sequence)f(in)m(to)g(the)f(mo)s(de)g(string.) -61 b(The)1110 4635 y(default)31 b(is)f(`)p Fs(@)p Ft('.)630 -4792 y Fs(enable-bracketed-paste)1110 4902 y Ft(When)24 -b(set)h(to)h(`)p Fs(On)p Ft(',)g(Readline)f(will)g(con\014gure)f(the)h -(terminal)g(in)f(a)h(w)m(a)m(y)g(that)1110 5011 y(will)k(enable)f(it)h -(to)g(insert)g(eac)m(h)g(paste)g(in)m(to)g(the)g(editing)g(bu\013er)e -(as)i(a)f(single)1110 5121 y(string)33 b(of)f(c)m(haracters,)j(instead) -e(of)g(treating)h(eac)m(h)g(c)m(haracter)g(as)f(if)f(it)i(had)1110 -5230 y(b)s(een)e(read)i(from)e(the)i(k)m(eyb)s(oard.)49 -b(This)32 b(can)h(prev)m(en)m(t)h(pasted)f(c)m(haracters)1110 -5340 y(from)d(b)s(eing)g(in)m(terpreted)h(as)f(editing)h(commands.)41 -b(The)29 b(default)i(is)f(`)p Fs(On)p Ft('.)p eop end -%%Page: 7 11 -TeXDict begin 7 10 bop 150 -116 a Ft(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2153 b(7)630 299 y Fs(enable-keypad)1110 -408 y Ft(When)23 b(set)h(to)g(`)p Fs(on)p Ft(',)h(Readline)f(will)g -(try)f(to)h(enable)g(the)f(application)i(k)m(eypad)1110 -518 y(when)h(it)h(is)f(called.)41 b(Some)27 b(systems)f(need)h(this)f -(to)h(enable)g(the)g(arro)m(w)g(k)m(eys.)1110 628 y(The)j(default)g(is) -h(`)p Fs(off)p Ft('.)630 784 y Fs(enable-meta-key)1110 -894 y Ft(When)40 b(set)g(to)g(`)p Fs(on)p Ft(',)j(Readline)d(will)g -(try)g(to)g(enable)g(an)m(y)g(meta)h(mo)s(di\014er)1110 -1003 y(k)m(ey)i(the)e(terminal)i(claims)f(to)h(supp)s(ort)d(when)h(it)h -(is)g(called.)76 b(On)41 b(man)m(y)1110 1113 y(terminals,)c(the)e(meta) -h(k)m(ey)g(is)f(used)g(to)h(send)e(eigh)m(t-bit)j(c)m(haracters.)56 -b(The)1110 1223 y(default)31 b(is)f(`)p Fs(on)p Ft('.)630 -1379 y Fs(expand-tilde)1110 1489 y Ft(If)d(set)h(to)h(`)p +61 b(The)1110 2710 y(default)31 b(is)f(`)p Fs(@)p Ft('.)630 +2856 y Fs(enable-active-region)1110 2966 y Ft(The)46 +b Fj(p)s(oin)m(t)j Ft(is)e(the)g(curren)m(t)f(cursor)g(p)s(osition,)52 +b(and)46 b Fj(mark)52 b Ft(refers)46 b(to)i(a)1110 3075 +y(sa)m(v)m(ed)37 b(cursor)f(p)s(osition)g(\(see)i(Section)f(1.4.1)h +([Commands)d(F)-8 b(or)37 b(Mo)m(ving],)1110 3185 y(page)25 +b(17\).)40 b(The)24 b(text)h(b)s(et)m(w)m(een)g(the)g(p)s(oin)m(t)f +(and)g(mark)g(is)g(referred)g(to)h(as)g(the)1110 3294 +y Fj(region)p Ft(.)62 b(When)37 b(this)g(v)-5 b(ariable)38 +b(is)f(set)h(to)g(`)p Fs(On)p Ft(',)h(Readline)f(allo)m(ws)g(certain) +1110 3404 y(commands)f(to)h(designate)h(the)e(region)h(as)g +Fj(activ)m(e)p Ft(.)64 b(When)37 b(the)h(region)g(is)1110 +3513 y(activ)m(e,)43 b(Readline)38 b(highligh)m(ts)h(the)g(text)g(in)e +(the)i(region)g(using)e(the)h(v)-5 b(alue)1110 3623 y(of)35 +b(the)g Fs(active-region-start-color)p Ft(,)30 b(whic)m(h)35 +b(defaults)g(to)h(the)f(string)1110 3733 y(that)23 b(enables)f(the)g +(terminal's)h(standout)e(mo)s(de.)38 b(The)21 b(activ)m(e)k(region)d +(sho)m(ws)1110 3842 y(the)32 b(text)h(inserted)f(b)m(y)g(brac)m(k)m +(eted-paste)i(and)e(an)m(y)g(matc)m(hing)h(text)g(found)1110 +3952 y(b)m(y)f(incremen)m(tal)i(and)e(non-incremen)m(tal)i(history)e +(searc)m(hes.)48 b(The)32 b(default)1110 4061 y(is)e(`)p +Fs(On)p Ft('.)630 4208 y Fs(enable-bracketed-paste)1110 +4317 y Ft(When)36 b(set)h(to)g(`)p Fs(On)p Ft(',)h(Readline)f +(con\014gures)f(the)h(terminal)f(to)i(insert)e(eac)m(h)1110 +4427 y(paste)27 b(in)m(to)g(the)f(editing)h(bu\013er)e(as)h(a)h(single) +g(string)f(of)g(c)m(haracters,)j(instead)1110 4536 y(of)d(treating)i +(eac)m(h)g(c)m(haracter)f(as)g(if)f(it)h(had)f(b)s(een)f(read)i(from)e +(the)i(k)m(eyb)s(oard.)1110 4646 y(This)36 b(is)h(called)h(putting)f +(the)h(terminal)f(in)m(to)h Fj(brac)m(k)m(eted)h(paste)e(mo)s(de)5 +b Ft(;)40 b(it)1110 4756 y(prev)m(en)m(ts)30 b(Readline)h(from)e +(executing)i(an)m(y)f(editing)h(commands)e(b)s(ound)f(to)1110 +4865 y(k)m(ey)j(sequences)g(app)s(earing)f(in)g(the)g(pasted)h(text.)42 +b(The)29 b(default)i(is)f(`)p Fs(On)p Ft('.)630 5011 +y Fs(enable-keypad)1110 5121 y Ft(When)23 b(set)h(to)g(`)p +Fs(on)p Ft(',)h(Readline)f(will)g(try)f(to)h(enable)g(the)f +(application)i(k)m(eypad)1110 5230 y(when)h(it)h(is)f(called.)41 +b(Some)27 b(systems)f(need)h(this)f(to)h(enable)g(the)g(arro)m(w)g(k)m +(eys.)1110 5340 y(The)j(default)g(is)h(`)p Fs(off)p Ft('.)p +eop end +%%Page: 8 12 +TeXDict begin 8 11 bop 150 -116 a Ft(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2153 b(8)630 299 y Fs(enable-meta-key) +1110 408 y Ft(When)40 b(set)g(to)g(`)p Fs(on)p Ft(',)j(Readline)d(will) +g(try)g(to)g(enable)g(an)m(y)g(meta)h(mo)s(di\014er)1110 +518 y(k)m(ey)i(the)e(terminal)i(claims)f(to)h(supp)s(ort)d(when)h(it)h +(is)g(called.)76 b(On)41 b(man)m(y)1110 628 y(terminals,)c(the)e(meta)h +(k)m(ey)g(is)f(used)g(to)h(send)e(eigh)m(t-bit)j(c)m(haracters.)56 +b(The)1110 737 y(default)31 b(is)f(`)p Fs(on)p Ft('.)630 +894 y Fs(expand-tilde)1110 1003 y Ft(If)d(set)h(to)h(`)p Fs(on)p Ft(',)f(tilde)g(expansion)g(is)f(p)s(erformed)f(when)h -(Readline)h(attempts)1110 1598 y(w)m(ord)i(completion.)42 -b(The)30 b(default)g(is)h(`)p Fs(off)p Ft('.)630 1755 -y Fs(history-preserve-point)1110 1864 y Ft(If)41 b(set)h(to)h(`)p +(Readline)h(attempts)1110 1113 y(w)m(ord)i(completion.)42 +b(The)30 b(default)g(is)h(`)p Fs(off)p Ft('.)630 1270 +y Fs(history-preserve-point)1110 1379 y Ft(If)41 b(set)h(to)h(`)p Fs(on)p Ft(',)i(the)c(history)h(co)s(de)g(attempts)h(to)f(place)h(the)f -(p)s(oin)m(t)f(\(the)1110 1974 y(curren)m(t)35 b(cursor)g(p)s +(p)s(oin)m(t)f(\(the)1110 1489 y(curren)m(t)35 b(cursor)g(p)s (osition\))g(at)h(the)g(same)f(lo)s(cation)i(on)e(eac)m(h)h(history)g -(line)1110 2084 y(retriev)m(ed)h(with)f Fs(previous-history)c +(line)1110 1598 y(retriev)m(ed)h(with)f Fs(previous-history)c Ft(or)37 b Fs(next-history)p Ft(.)55 b(The)36 b(default)1110 -2193 y(is)30 b(`)p Fs(off)p Ft('.)630 2350 y Fs(history-size)1110 -2459 y Ft(Set)39 b(the)g(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(history)g -(en)m(tries)h(sa)m(v)m(ed)g(in)f(the)g(history)1110 2569 +1708 y(is)30 b(`)p Fs(off)p Ft('.)630 1864 y Fs(history-size)1110 +1974 y Ft(Set)39 b(the)g(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(history)g +(en)m(tries)h(sa)m(v)m(ed)g(in)f(the)g(history)1110 2084 y(list.)51 b(If)34 b(set)g(to)h(zero,)g(an)m(y)f(existing)h(history)f -(en)m(tries)g(are)g(deleted)h(and)e(no)1110 2679 y(new)e(en)m(tries)i +(en)m(tries)g(are)g(deleted)h(and)e(no)1110 2193 y(new)e(en)m(tries)i (are)f(sa)m(v)m(ed.)46 b(If)31 b(set)h(to)h(a)f(v)-5 b(alue)32 b(less)g(than)f(zero,)i(the)f(n)m(um)m(b)s(er)1110 -2788 y(of)f(history)f(en)m(tries)h(is)g(not)g(limited.)42 +2303 y(of)f(history)f(en)m(tries)h(is)g(not)g(limited.)42 b(By)30 b(default,)h(the)g(n)m(um)m(b)s(er)e(of)i(history)1110 -2898 y(en)m(tries)j(is)f(not)g(limited.)49 b(If)32 b(an)h(attempt)h(is) -f(made)g(to)h(set)f Fj(history-size)39 b Ft(to)1110 3007 +2412 y(en)m(tries)j(is)f(not)g(limited.)49 b(If)32 b(an)h(attempt)h(is) +f(made)g(to)h(set)f Fj(history-size)39 b Ft(to)1110 2522 y(a)34 b(non-n)m(umeric)f(v)-5 b(alue,)34 b(the)g(maxim)m(um)f(n)m(um)m -(b)s(er)f(of)h(history)h(en)m(tries)g(will)1110 3117 -y(b)s(e)c(set)h(to)g(500.)630 3273 y Fs(horizontal-scroll-mode)1110 -3383 y Ft(This)k(v)-5 b(ariable)37 b(can)f(b)s(e)f(set)h(to)h(either)f +(b)s(er)f(of)h(history)h(en)m(tries)g(will)1110 2632 +y(b)s(e)c(set)h(to)g(500.)630 2788 y Fs(horizontal-scroll-mode)1110 +2898 y Ft(This)k(v)-5 b(ariable)37 b(can)f(b)s(e)f(set)h(to)h(either)f (`)p Fs(on)p Ft(')g(or)g(`)p Fs(off)p Ft('.)57 b(Setting)36 -b(it)g(to)h(`)p Fs(on)p Ft(')1110 3493 y(means)26 b(that)h(the)f(text)h +b(it)g(to)h(`)p Fs(on)p Ft(')1110 3007 y(means)26 b(that)h(the)f(text)h (of)g(the)f(lines)g(b)s(eing)g(edited)h(will)f(scroll)h(horizon)m -(tally)1110 3602 y(on)32 b(a)g(single)g(screen)g(line)g(when)e(they)i -(are)g(longer)h(than)e(the)h(width)f(of)h(the)1110 3712 +(tally)1110 3117 y(on)32 b(a)g(single)g(screen)g(line)g(when)e(they)i +(are)g(longer)h(than)e(the)h(width)f(of)h(the)1110 3226 y(screen,)c(instead)g(of)f(wrapping)f(on)m(to)i(a)g(new)e(screen)i -(line.)40 b(This)26 b(v)-5 b(ariable)28 b(is)1110 3821 +(line.)40 b(This)26 b(v)-5 b(ariable)28 b(is)1110 3336 y(automatically)k(set)e(to)g(`)p Fs(on)p Ft(')f(for)g(terminals)g(of)h -(heigh)m(t)g(1.)41 b(By)29 b(default,)h(this)1110 3931 +(heigh)m(t)g(1.)41 b(By)29 b(default,)h(this)1110 3446 y(v)-5 b(ariable)31 b(is)g(set)f(to)i(`)p Fs(off)p Ft('.)630 -4088 y Fs(input-meta)1110 4197 y Ft(If)f(set)g(to)h(`)p +3602 y Fs(input-meta)1110 3712 y Ft(If)f(set)g(to)h(`)p Fs(on)p Ft(',)g(Readline)g(will)f(enable)h(eigh)m(t-bit)h(input)d(\(it) -i(will)f(not)h(clear)1110 4307 y(the)40 b(eigh)m(th)g(bit)g(in)f(the)h +i(will)f(not)h(clear)1110 3821 y(the)40 b(eigh)m(th)g(bit)g(in)f(the)h (c)m(haracters)h(it)f(reads\),)j(regardless)c(of)h(what)g(the)1110 -4416 y(terminal)k(claims)h(it)f(can)g(supp)s(ort.)79 +3931 y(terminal)k(claims)h(it)f(can)g(supp)s(ort.)79 b(The)44 b(default)g(v)-5 b(alue)44 b(is)g(`)p Fs(off)p -Ft(',)j(but)1110 4526 y(Readline)24 b(will)h(set)f(it)g(to)h(`)p +Ft(',)j(but)1110 4041 y(Readline)24 b(will)h(set)f(it)g(to)h(`)p Fs(on)p Ft(')e(if)h(the)g(lo)s(cale)i(con)m(tains)f(eigh)m(t-bit)g(c)m -(haracters.)1110 4635 y(The)30 b(name)g Fs(meta-flag)e -Ft(is)j(a)f(synon)m(ym)g(for)g(this)h(v)-5 b(ariable.)630 -4792 y Fs(isearch-terminators)1110 4902 y Ft(The)51 b(string)h(of)g(c)m -(haracters)h(that)f(should)e(terminate)j(an)f(incremen)m(tal)1110 -5011 y(searc)m(h)25 b(without)g(subsequen)m(tly)g(executing)h(the)f(c)m -(haracter)h(as)f(a)g(command)1110 5121 y(\(see)45 b(Section)h(1.2.5)g -([Searc)m(hing],)j(page)d(3\).)84 b(If)44 b(this)g(v)-5 -b(ariable)45 b(has)g(not)1110 5230 y(b)s(een)35 b(giv)m(en)h(a)g(v)-5 -b(alue,)37 b(the)f(c)m(haracters)h Fs(ESC)d Ft(and)h -Fl(C-J)g Ft(will)h(terminate)g(an)1110 5340 y(incremen)m(tal)c(searc)m -(h.)p eop end -%%Page: 8 12 -TeXDict begin 8 11 bop 150 -116 a Ft(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2153 b(8)630 299 y Fs(keymap)192 +(haracters.)1110 4150 y(The)k(name)g Fs(meta-flag)e Ft(is)i(a)h(synon)m +(ym)f(for)g(this)g(v)-5 b(ariable.)42 b(This)28 b(v)-5 +b(ariable)1110 4260 y(is)35 b(dep)s(enden)m(t)f(on)h(the)g +Fs(LC_CTYPE)e Ft(lo)s(cale)k(category)-8 b(,)39 b(and)34 +b(ma)m(y)i(c)m(hange)g(if)1110 4369 y(the)31 b(lo)s(cale)h(is)e(c)m +(hanged.)630 4526 y Fs(isearch-terminators)1110 4635 +y Ft(The)51 b(string)h(of)g(c)m(haracters)h(that)f(should)e(terminate)j +(an)f(incremen)m(tal)1110 4745 y(searc)m(h)25 b(without)g(subsequen)m +(tly)g(executing)h(the)f(c)m(haracter)h(as)f(a)g(command)1110 +4855 y(\(see)45 b(Section)h(1.2.5)g([Searc)m(hing],)j(page)d(3\).)84 +b(If)44 b(this)g(v)-5 b(ariable)45 b(has)g(not)1110 4964 +y(b)s(een)35 b(giv)m(en)h(a)g(v)-5 b(alue,)37 b(the)f(c)m(haracters)h +Fs(ESC)d Ft(and)h Fl(C-J)g Ft(will)h(terminate)g(an)1110 +5074 y(incremen)m(tal)c(searc)m(h.)630 5230 y Fs(keymap)192 b Ft(Sets)64 b(Readline's)i(idea)f(of)f(the)h(curren)m(t)f(k)m(eymap)h -(for)f(k)m(ey)h(binding)1110 408 y(commands.)71 b(Built-in)41 +(for)f(k)m(ey)h(binding)1110 5340 y(commands.)71 b(Built-in)41 b Fs(keymap)e Ft(names)h(are)h Fs(emacs)p Ft(,)h Fs(emacs-standard)p -Ft(,)1110 518 y Fs(emacs-meta)p Ft(,)99 b Fs(emacs-ctlx)p -Ft(,)f Fs(vi)p Ft(,)j Fs(vi-move)p Ft(,)f Fs(vi-command)p -Ft(,)f(and)1110 628 y Fs(vi-insert)p Ft(.)81 b Fs(vi)44 -b Ft(is)h(equiv)-5 b(alen)m(t)46 b(to)g Fs(vi-command)c -Ft(\()p Fs(vi-move)h Ft(is)i(also)h(a)1110 737 y(synon)m(ym\);)41 -b Fs(emacs)c Ft(is)h(equiv)-5 b(alen)m(t)39 b(to)f Fs(emacs-standard)p -Ft(.)59 b(Applications)1110 847 y(ma)m(y)32 b(add)e(additional)i -(names.)43 b(The)30 b(default)h(v)-5 b(alue)32 b(is)f -Fs(emacs)p Ft(.)41 b(The)30 b(v)-5 b(alue)1110 956 y(of)31 -b(the)f Fs(editing-mode)d Ft(v)-5 b(ariable)31 b(also)h(a\013ects)f -(the)g(default)g(k)m(eymap.)630 1113 y Fs(keyseq-timeout)1110 -1223 y Ft(Sp)s(eci\014es)25 b(the)g(duration)g(Readline)h(will)g(w)m -(ait)g(for)g(a)f(c)m(haracter)i(when)e(read-)1110 1332 -y(ing)30 b(an)g(am)m(biguous)g(k)m(ey)h(sequence)f(\(one)g(that)h(can)f -(form)g(a)g(complete)h(k)m(ey)1110 1442 y(sequence)j(using)e(the)i -(input)e(read)h(so)g(far,)h(or)g(can)f(tak)m(e)i(additional)f(input) -1110 1551 y(to)g(complete)g(a)f(longer)h(k)m(ey)f(sequence\).)49 -b(If)33 b(no)f(input)g(is)h(receiv)m(ed)h(within)1110 -1661 y(the)43 b(timeout,)48 b(Readline)43 b(will)g(use)g(the)g(shorter) -g(but)f(complete)j(k)m(ey)e(se-)1110 1771 y(quence.)c(Readline)26 -b(uses)f(this)h(v)-5 b(alue)26 b(to)g(determine)g(whether)f(or)g(not)h -(input)1110 1880 y(is)31 b(a)m(v)-5 b(ailable)33 b(on)d(the)h(curren)m -(t)f(input)g(source)h(\()p Fs(rl_instream)d Ft(b)m(y)i(default\).)1110 -1990 y(The)25 b(v)-5 b(alue)26 b(is)f(sp)s(eci\014ed)f(in)h +Ft(,)p eop end +%%Page: 9 13 +TeXDict begin 9 12 bop 150 -116 a Ft(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2153 b(9)1110 299 y Fs(emacs-meta)p +Ft(,)99 b Fs(emacs-ctlx)p Ft(,)f Fs(vi)p Ft(,)j Fs(vi-move)p +Ft(,)f Fs(vi-command)p Ft(,)f(and)1110 408 y Fs(vi-insert)p +Ft(.)81 b Fs(vi)44 b Ft(is)h(equiv)-5 b(alen)m(t)46 b(to)g +Fs(vi-command)c Ft(\()p Fs(vi-move)h Ft(is)i(also)h(a)1110 +518 y(synon)m(ym\);)41 b Fs(emacs)c Ft(is)h(equiv)-5 +b(alen)m(t)39 b(to)f Fs(emacs-standard)p Ft(.)59 b(Applications)1110 +628 y(ma)m(y)32 b(add)e(additional)i(names.)43 b(The)30 +b(default)h(v)-5 b(alue)32 b(is)f Fs(emacs)p Ft(.)41 +b(The)30 b(v)-5 b(alue)1110 737 y(of)31 b(the)f Fs(editing-mode)d +Ft(v)-5 b(ariable)31 b(also)h(a\013ects)f(the)g(default)g(k)m(eymap.) +630 909 y Fs(keyseq-timeout)1110 1019 y Ft(Sp)s(eci\014es)25 +b(the)g(duration)g(Readline)h(will)g(w)m(ait)g(for)g(a)f(c)m(haracter)i +(when)e(read-)1110 1129 y(ing)30 b(an)g(am)m(biguous)g(k)m(ey)h +(sequence)f(\(one)g(that)h(can)f(form)g(a)g(complete)h(k)m(ey)1110 +1238 y(sequence)j(using)e(the)i(input)e(read)h(so)g(far,)h(or)g(can)f +(tak)m(e)i(additional)f(input)1110 1348 y(to)g(complete)g(a)f(longer)h +(k)m(ey)f(sequence\).)49 b(If)33 b(no)f(input)g(is)h(receiv)m(ed)h +(within)1110 1457 y(the)43 b(timeout,)48 b(Readline)43 +b(will)g(use)g(the)g(shorter)g(but)f(complete)j(k)m(ey)e(se-)1110 +1567 y(quence.)c(Readline)26 b(uses)f(this)h(v)-5 b(alue)26 +b(to)g(determine)g(whether)f(or)g(not)h(input)1110 1677 +y(is)31 b(a)m(v)-5 b(ailable)33 b(on)d(the)h(curren)m(t)f(input)g +(source)h(\()p Fs(rl_instream)d Ft(b)m(y)i(default\).)1110 +1786 y(The)25 b(v)-5 b(alue)26 b(is)f(sp)s(eci\014ed)f(in)h (milliseconds,)j(so)d(a)h(v)-5 b(alue)26 b(of)f(1000)i(means)e(that) -1110 2099 y(Readline)e(will)g(w)m(ait)g(one)g(second)f(for)g +1110 1896 y(Readline)e(will)g(w)m(ait)g(one)g(second)f(for)g (additional)i(input.)37 b(If)22 b(this)g(v)-5 b(ariable)23 -b(is)1110 2209 y(set)28 b(to)h(a)f(v)-5 b(alue)29 b(less)f(than)g(or)f +b(is)1110 2005 y(set)28 b(to)h(a)f(v)-5 b(alue)29 b(less)f(than)g(or)f (equal)i(to)f(zero,)i(or)e(to)g(a)h(non-n)m(umeric)e(v)-5 -b(alue,)1110 2318 y(Readline)30 b(will)f(w)m(ait)i(un)m(til)e(another)h +b(alue,)1110 2115 y(Readline)30 b(will)f(w)m(ait)i(un)m(til)e(another)h (k)m(ey)g(is)f(pressed)g(to)h(decide)f(whic)m(h)g(k)m(ey)1110 -2428 y(sequence)i(to)g(complete.)42 b(The)30 b(default)g(v)-5 -b(alue)31 b(is)g Fs(500)p Ft(.)630 2585 y Fs(mark-directories)1110 -2694 y Ft(If)38 b(set)g(to)h(`)p Fs(on)p Ft(',)i(completed)e(directory) +2225 y(sequence)i(to)g(complete.)42 b(The)30 b(default)g(v)-5 +b(alue)31 b(is)g Fs(500)p Ft(.)630 2397 y Fs(mark-directories)1110 +2506 y Ft(If)38 b(set)g(to)h(`)p Fs(on)p Ft(',)i(completed)e(directory) f(names)g(ha)m(v)m(e)i(a)e(slash)g(app)s(ended.)1110 -2804 y(The)30 b(default)g(is)h(`)p Fs(on)p Ft('.)630 -2960 y Fs(mark-modified-lines)1110 3070 y Ft(This)k(v)-5 +2616 y(The)30 b(default)g(is)h(`)p Fs(on)p Ft('.)630 +2788 y Fs(mark-modified-lines)1110 2898 y Ft(This)k(v)-5 b(ariable,)38 b(when)d(set)h(to)h(`)p Fs(on)p Ft(',)g(causes)g -(Readline)f(to)h(displa)m(y)f(an)f(as-)1110 3180 y(terisk)f(\(`)p +(Readline)f(to)h(displa)m(y)f(an)f(as-)1110 3007 y(terisk)f(\(`)p Fs(*)p Ft('\))h(at)f(the)g(start)g(of)g(history)g(lines)g(whic)m(h)f -(ha)m(v)m(e)i(b)s(een)e(mo)s(di\014ed.)1110 3289 y(This)d(v)-5 +(ha)m(v)m(e)i(b)s(een)e(mo)s(di\014ed.)1110 3117 y(This)d(v)-5 b(ariable)31 b(is)f(`)p Fs(off)p Ft(')g(b)m(y)g(default.)630 -3446 y Fs(mark-symlinked-directori)o(es)1110 3555 y Ft(If)59 +3289 y Fs(mark-symlinked-directori)o(es)1110 3399 y Ft(If)59 b(set)h(to)g(`)p Fs(on)p Ft(',)67 b(completed)60 b(names)f(whic)m(h)g -(are)h(sym)m(b)s(olic)g(links)f(to)1110 3665 y(directories)71 +(are)h(sym)m(b)s(olic)g(links)f(to)1110 3508 y(directories)71 b(ha)m(v)m(e)f(a)g(slash)f(app)s(ended)f(\(sub)5 b(ject)70 -b(to)g(the)g(v)-5 b(alue)70 b(of)1110 3774 y Fs(mark-directories)p +b(to)g(the)g(v)-5 b(alue)70 b(of)1110 3618 y Fs(mark-directories)p Ft(\).)37 b(The)30 b(default)g(is)g(`)p Fs(off)p Ft('.)630 -3931 y Fs(match-hidden-files)1110 4041 y Ft(This)21 b(v)-5 +3790 y Fs(match-hidden-files)1110 3900 y Ft(This)21 b(v)-5 b(ariable,)25 b(when)d(set)g(to)h(`)p Fs(on)p Ft(',)h(causes)f -(Readline)g(to)g(matc)m(h)g(\014les)f(whose)1110 4150 +(Readline)g(to)g(matc)m(h)g(\014les)f(whose)1110 4009 y(names)44 b(b)s(egin)g(with)g(a)g(`)p Fs(.)p Ft(')g(\(hidden)f -(\014les\))i(when)e(p)s(erforming)g(\014lename)1110 4260 +(\014les\))i(when)e(p)s(erforming)g(\014lename)1110 4119 y(completion.)75 b(If)41 b(set)g(to)h(`)p Fs(off)p Ft(',)i(the)e (leading)g(`)p Fs(.)p Ft(')f(m)m(ust)g(b)s(e)g(supplied)f(b)m(y)1110 -4369 y(the)34 b(user)g(in)g(the)g(\014lename)g(to)h(b)s(e)f(completed.) +4228 y(the)34 b(user)g(in)g(the)g(\014lename)g(to)h(b)s(e)f(completed.) 53 b(This)33 b(v)-5 b(ariable)35 b(is)f(`)p Fs(on)p Ft(')g(b)m(y)1110 -4479 y(default.)630 4635 y Fs(menu-complete-display-pr)o(efix)1110 -4745 y Ft(If)f(set)h(to)g(`)p Fs(on)p Ft(',)h(men)m(u)e(completion)i +4338 y(default.)630 4510 y Fs(menu-complete-display-pr)o(efix)1110 +4620 y Ft(If)f(set)h(to)g(`)p Fs(on)p Ft(',)h(men)m(u)e(completion)i (displa)m(ys)e(the)h(common)g(pre\014x)e(of)i(the)1110 -4855 y(list)k(of)g(p)s(ossible)f(completions)i(\(whic)m(h)e(ma)m(y)h(b) -s(e)f(empt)m(y\))i(b)s(efore)e(cycling)1110 4964 y(through)30 +4729 y(list)k(of)g(p)s(ossible)f(completions)i(\(whic)m(h)e(ma)m(y)h(b) +s(e)f(empt)m(y\))i(b)s(efore)e(cycling)1110 4839 y(through)30 b(the)g(list.)42 b(The)29 b(default)i(is)f(`)p Fs(off)p -Ft('.)630 5121 y Fs(output-meta)1110 5230 y Ft(If)35 +Ft('.)630 5011 y Fs(output-meta)1110 5121 y Ft(If)35 b(set)h(to)g(`)p Fs(on)p Ft(',)h(Readline)f(will)g(displa)m(y)f(c)m -(haracters)i(with)e(the)h(eigh)m(th)g(bit)1110 5340 y(set)h(directly)g +(haracters)i(with)e(the)h(eigh)m(th)g(bit)1110 5230 y(set)h(directly)g (rather)f(than)g(as)h(a)g(meta-pre\014xed)f(escap)s(e)h(sequence.)59 -b(The)p eop end -%%Page: 9 13 -TeXDict begin 9 12 bop 150 -116 a Ft(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2153 b(9)1110 299 y(default)26 -b(is)f(`)p Fs(off)p Ft(',)i(but)e(Readline)h(will)g(set)g(it)g(to)h(`)p -Fs(on)p Ft(')e(if)h(the)f(lo)s(cale)j(con)m(tains)1110 -408 y(eigh)m(t-bit)k(c)m(haracters.)630 581 y Fs(page-completions)1110 -690 y Ft(If)h(set)i(to)f(`)p Fs(on)p Ft(',)h(Readline)g(uses)e(an)h(in) +b(The)1110 5340 y(default)26 b(is)f(`)p Fs(off)p Ft(',)i(but)e +(Readline)h(will)g(set)g(it)g(to)h(`)p Fs(on)p Ft(')e(if)h(the)f(lo)s +(cale)j(con)m(tains)p eop end +%%Page: 10 14 +TeXDict begin 10 13 bop 150 -116 a Ft(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(10)1110 299 y(eigh)m(t-bit)38 +b(c)m(haracters.)61 b(This)36 b(v)-5 b(ariable)37 b(is)g(dep)s(enden)m +(t)e(on)h(the)h Fs(LC_CTYPE)1110 408 y Ft(lo)s(cale)32 +b(category)-8 b(,)33 b(and)d(ma)m(y)h(c)m(hange)g(if)g(the)f(lo)s(cale) +i(is)f(c)m(hanged.)630 581 y Fs(page-completions)1110 +690 y Ft(If)i(set)i(to)f(`)p Fs(on)p Ft(',)h(Readline)g(uses)e(an)h(in) m(ternal)h Fs(more)p Ft(-lik)m(e)f(pager)g(to)h(displa)m(y)1110 800 y(a)e(screenful)f(of)g(p)s(ossible)g(completions)i(at)f(a)g(time.) 47 b(This)31 b(v)-5 b(ariable)34 b(is)e(`)p Fs(on)p Ft(')1110 @@ -7503,9 +7585,9 @@ Fs(off)p Ft('.)630 1583 y Fs(revert-all-at-newline)1110 1802 y(returning)f(when)f Fs(accept-line)f Ft(is)j(executed.)41 b(By)29 b(default,)g(history)g(lines)1110 1911 y(ma)m(y)42 b(b)s(e)g(mo)s(di\014ed)e(and)h(retain)i(individual)e(undo)g(lists)h -(across)g(calls)h(to)1110 2021 y Fs(readline)p Ft(.)38 -b(The)30 b(default)h(is)f(`)p Fs(off)p Ft('.)630 2193 -y Fs(show-all-if-ambiguous)1110 2303 y Ft(This)f(alters)i(the)f +(across)g(calls)h(to)1110 2021 y Fs(readline\(\))p Ft(.)38 +b(The)30 b(default)g(is)h(`)p Fs(off)p Ft('.)630 2193 +y Fs(show-all-if-ambiguous)1110 2303 y Ft(This)e(alters)i(the)f (default)g(b)s(eha)m(vior)g(of)g(the)h(completion)g(functions.)40 b(If)29 b(set)1110 2412 y(to)f(`)p Fs(on)p Ft(',)g(w)m(ords)f(whic)m(h) g(ha)m(v)m(e)i(more)f(than)f(one)h(p)s(ossible)f(completion)h(cause) @@ -7535,8 +7617,8 @@ b(is)f(`)p Fs(off)p Ft('.)630 4244 y Fs(skip-completed-text)1110 (default)g(completion)h(b)s(eha)m(vior)f(when)f(in-)1110 4463 y(serting)d(a)h(single)g(matc)m(h)f(in)m(to)h(the)g(line.)40 b(It's)30 b(only)f(activ)m(e)i(when)d(p)s(erform-)1110 -4573 y(ing)35 b(completion)h(in)e(the)h(middle)f(of)h(a)f(w)m(ord.)53 -b(If)35 b(enabled,)g(readline)g(do)s(es)1110 4682 y(not)41 +4573 y(ing)k(completion)i(in)e(the)g(middle)g(of)g(a)h(w)m(ord.)46 +b(If)32 b(enabled,)g(Readline)h(do)s(es)1110 4682 y(not)41 b(insert)f(c)m(haracters)i(from)e(the)h(completion)h(that)f(matc)m(h)g (c)m(haracters)1110 4792 y(after)c(p)s(oin)m(t)g(in)g(the)g(w)m(ord)f (b)s(eing)g(completed,)k(so)d(p)s(ortions)f(of)h(the)g(w)m(ord)1110 @@ -7548,9 +7630,9 @@ Ft(')c(will)i(result)f(in)g(`)p Fs(Makefile)p Ft(')f(rather)h(than)h(`) p Fs(Makefilefile)p Ft(',)1110 5230 y(assuming)d(there)g(is)h(a)f (single)h(p)s(ossible)f(completion.)56 b(The)35 b(default)g(v)-5 b(alue)1110 5340 y(is)30 b(`)p Fs(off)p Ft('.)p eop end -%%Page: 10 14 -TeXDict begin 10 13 bop 150 -116 a Ft(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(10)630 299 y Fs +%%Page: 11 15 +TeXDict begin 11 14 bop 150 -116 a Ft(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(11)630 299 y Fs (vi-cmd-mode-string)1110 408 y Ft(If)33 b(the)h Fj(sho)m(w-mo)s (de-in-prompt)h Ft(v)-5 b(ariable)35 b(is)e(enabled,)i(this)f(string)f (is)h(dis-)1110 518 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g @@ -7605,27 +7687,26 @@ b(can)g(b)s(e)g(no)g(space)g(b)s(et)m(w)m(een)h(the)f(k)m(ey)h(name)g b(The)40 b(name)h(of)630 3778 y(the)35 b(k)m(ey)g(can)g(b)s(e)f (expressed)f(in)i(di\013eren)m(t)g(w)m(a)m(ys,)h(dep)s(ending)d(on)h (what)h(y)m(ou)g(\014nd)e(most)630 3888 y(comfortable.)630 -4025 y(In)i(addition)h(to)h(command)f(names,)i(readline)e(allo)m(ws)h -(k)m(eys)g(to)g(b)s(e)e(b)s(ound)f(to)j(a)f(string)630 -4134 y(that)31 b(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f(pressed)g -(\(a)h Fj(macro)5 b Ft(\).)630 4299 y Fj(k)m(eyname)g -Ft(:)42 b Fj(function-name)35 b Ft(or)c Fj(macro)1110 -4408 y(k)m(eyname)k Ft(is)29 b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s -(elled)e(out)h(in)g(English.)39 b(F)-8 b(or)30 b(example:)1350 -4545 y Fs(Control-u:)45 b(universal-argument)1350 4655 -y(Meta-Rubout:)f(backward-kill-word)1350 4765 y(Control-o:)h(">)i -(output")1110 4902 y Ft(In)94 b(the)g(example)h(ab)s(o)m(v)m(e,)112 -b Fl(C-u)94 b Ft(is)g(b)s(ound)f(to)i(the)f(function)1110 -5011 y Fs(universal-argument)p Ft(,)124 b Fl(M-DEL)107 -b Ft(is)i(b)s(ound)e(to)j(the)f(function)1110 5121 y -Fs(backward-kill-word)p Ft(,)75 b(and)69 b Fl(C-o)g Ft(is)h(b)s(ound)e -(to)j(run)d(the)i(macro)1110 5230 y(expressed)45 b(on)h(the)g(righ)m(t) -g(hand)e(side)i(\(that)h(is,)i(to)e(insert)e(the)h(text)h(`)p -Fs(>)1110 5340 y(output)p Ft(')29 b(in)m(to)i(the)g(line\).)p -eop end -%%Page: 11 15 -TeXDict begin 11 14 bop 150 -116 a Ft(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(11)1110 299 y(A)62 +4025 y(In)g(addition)h(to)g(command)g(names,)g(Readline)g(allo)m(ws)h +(k)m(eys)g(to)f(b)s(e)f(b)s(ound)f(to)i(a)g(string)630 +4134 y(that)d(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f(pressed)g(\(a) +h Fj(macro)5 b Ft(\).)630 4299 y Fj(k)m(eyname)g Ft(:)42 +b Fj(function-name)35 b Ft(or)c Fj(macro)1110 4408 y(k)m(eyname)k +Ft(is)29 b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s(elled)e(out)h(in)g +(English.)39 b(F)-8 b(or)30 b(example:)1350 4545 y Fs(Control-u:)45 +b(universal-argument)1350 4655 y(Meta-Rubout:)f(backward-kill-word)1350 +4765 y(Control-o:)h(">)i(output")1110 4902 y Ft(In)94 +b(the)g(example)h(ab)s(o)m(v)m(e,)112 b Fl(C-u)94 b Ft(is)g(b)s(ound)f +(to)i(the)f(function)1110 5011 y Fs(universal-argument)p +Ft(,)124 b Fl(M-DEL)107 b Ft(is)i(b)s(ound)e(to)j(the)f(function)1110 +5121 y Fs(backward-kill-word)p Ft(,)75 b(and)69 b Fl(C-o)g +Ft(is)h(b)s(ound)e(to)j(run)d(the)i(macro)1110 5230 y(expressed)45 +b(on)h(the)g(righ)m(t)g(hand)e(side)i(\(that)h(is,)i(to)e(insert)e(the) +h(text)h(`)p Fs(>)1110 5340 y(output)p Ft(')29 b(in)m(to)i(the)g +(line\).)p eop end +%%Page: 12 16 +TeXDict begin 12 15 bop 150 -116 a Ft(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(12)1110 299 y(A)62 b(n)m(um)m(b)s(er)e(of)i(sym)m(b)s(olic)h(c)m(haracter)g(names)f(are)g (recognized)h(while)1110 408 y(pro)s(cessing)40 b(this)f(k)m(ey)i (binding)e(syn)m(tax:)60 b Fj(DEL)p Ft(,)42 b Fj(ESC)p @@ -7676,9 +7757,9 @@ Fs(\\x)p Fl(HH)288 b Ft(the)38 b(eigh)m(t-bit)i(c)m(haracter)g(whose)e (v)-5 b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5 b(alue)39 b Fj(HH)1110 5340 y Ft(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\))p eop end -%%Page: 12 16 -TeXDict begin 12 15 bop 150 -116 a Ft(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(12)630 299 y(When)37 +%%Page: 13 17 +TeXDict begin 13 16 bop 150 -116 a Ft(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(13)630 299 y(When)37 b(en)m(tering)h(the)g(text)g(of)g(a)g(macro,)i(single)e(or)f(double)g (quotes)h(m)m(ust)f(b)s(e)g(used)f(to)630 408 y(indicate)23 b(a)e(macro)h(de\014nition.)38 b(Unquoted)21 b(text)i(is)e(assumed)g @@ -7755,9 +7836,9 @@ Ft(construct)e(is)g(used)f(to)i(include)f(application-sp)s(eci\014c)h (v)-5 b(alue.)39 b(This)22 b(could)h(b)s(e)g(used)f(to)1110 5340 y(bind)32 b(k)m(ey)h(sequences)g(to)h(functions)e(useful)g(for)h (a)g(sp)s(eci\014c)f(program.)48 b(F)-8 b(or)p eop end -%%Page: 13 17 -TeXDict begin 13 16 bop 150 -116 a Ft(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(13)1110 299 y(instance,)35 +%%Page: 14 18 +TeXDict begin 14 17 bop 150 -116 a Ft(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(14)1110 299 y(instance,)35 b(the)e(follo)m(wing)h(command)f(adds)f(a)i(k)m(ey)f(sequence)h(that)f (quotes)1110 408 y(the)e(curren)m(t)f(or)g(previous)g(w)m(ord)g(in)g (Bash:)1350 543 y Fs($if)47 b(Bash)1350 653 y(#)g(Quote)g(the)g @@ -7796,9 +7877,9 @@ b(/etc/inputrc)150 3183 y Fi(1.3.3)63 b(Sample)41 b(Init)g(File)150 Ft(\014le.)39 b(This)26 b(illustrates)h(k)m(ey)h(binding,)e(v)-5 b(ariable)27 b(assignmen)m(t,)i(and)150 3440 y(conditional)j(syn)m (tax.)p eop end -%%Page: 14 18 -TeXDict begin 14 17 bop 150 -116 a Ft(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(14)390 408 y Fs(#)47 +%%Page: 15 19 +TeXDict begin 15 18 bop 150 -116 a Ft(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(15)390 408 y Fs(#)47 b(This)g(file)g(controls)e(the)i(behaviour)e(of)j(line)e(input)h (editing)e(for)390 518 y(#)i(programs)f(that)h(use)g(the)f(GNU)h (Readline)f(library.)93 b(Existing)390 628 y(#)47 b(programs)f(include) @@ -7827,9 +7908,9 @@ h(function)f(name)g(is)h(ignored)p 3970 2401 42 76 v 4902 y(#)390 5011 y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(ANSI)g(mode) 390 5121 y(#)390 5230 y(#"\\M-\\C-[D":)331 b(backward-char)390 5340 y(#"\\M-\\C-[C":)g(forward-char)p eop end -%%Page: 15 19 -TeXDict begin 15 18 bop 150 -116 a Ft(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(15)390 299 y Fs(#"\\M-\\C-[A":)331 +%%Page: 16 20 +TeXDict begin 16 19 bop 150 -116 a Ft(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(16)390 299 y Fs(#"\\M-\\C-[A":)331 b(previous-history)390 408 y(#"\\M-\\C-[B":)g(next-history)390 628 y(C-q:)47 b(quoted-insert)390 847 y($endif)390 1066 y(#)g(An)h(old-style)d(binding.)93 b(This)47 b(happens)f(to)h(be)g(the) @@ -7862,9 +7943,9 @@ y($endif)390 3477 y(#)i(use)g(a)h(visible)e(bell)g(if)h(one)g(is)h g(for)i(a)g(word,)390 5121 y(#)g(ask)g(whether)f(or)h(not)g(the)g(user) g(wants)f(to)h(see)g(all)g(of)g(them)390 5230 y(set)g (completion-query-items)42 b(150)p eop end -%%Page: 16 20 -TeXDict begin 16 19 bop 150 -116 a Ft(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(16)390 299 y Fs(#)47 +%%Page: 17 21 +TeXDict begin 17 20 bop 150 -116 a Ft(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(17)390 299 y Fs(#)47 b(For)g(FTP)390 408 y($if)g(Ftp)390 518 y("\\C-xg":)f("get)g(\\M-?")390 628 y("\\C-xt":)g("put)g(\\M-?")390 737 y("\\M-.":)g(yank-last-arg)390 847 y($endif)150 1089 y Fr(1.4)68 b(Bindable)45 b(Readline)i(Commands) @@ -7915,9 +7996,9 @@ y(not)k(tak)m(e)i(up)e(more)g(than)g(one)g(ph)m(ysical)h(line)g(or)f (redra)m(w)630 5340 y(the)f(curren)m(t)f(line,)h(lea)m(ving)h(the)e (curren)m(t)h(line)f(at)h(the)g(top)g(of)f(the)h(screen.)p eop end -%%Page: 17 21 -TeXDict begin 17 20 bop 150 -116 a Ft(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(17)150 299 y Fs(clear-screen)27 +%%Page: 18 22 +TeXDict begin 18 21 bop 150 -116 a Ft(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(18)150 299 y Fs(clear-screen)27 b(\(C-l\))630 408 y Ft(Clear)35 b(the)f(screen,)i(then)e(redra)m(w)g (the)h(curren)m(t)f(line,)i(lea)m(ving)g(the)f(curren)m(t)f(line)h(at)g (the)630 518 y(top)c(of)f(the)h(screen.)150 665 y Fs @@ -7983,445 +8064,450 @@ y Ft(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h(history)g(for)g 5340 y(start)g(of)h(the)f(curren)m(t)f(line)i(and)e(the)h(p)s(oin)m(t.) 58 b(The)35 b(searc)m(h)i(string)e(m)m(ust)h(matc)m(h)h(at)g(the)p eop end -%%Page: 18 22 -TeXDict begin 18 21 bop 150 -116 a Ft(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(18)630 299 y(b)s(eginning)32 +%%Page: 19 23 +TeXDict begin 19 22 bop 150 -116 a Ft(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(19)630 299 y(b)s(eginning)32 b(of)g(a)h(history)g(line.)47 b(This)32 b(is)h(a)f(non-incremen)m(tal)i (searc)m(h.)48 b(By)33 b(default,)g(this)630 408 y(command)d(is)h(un)m -(b)s(ound.)150 581 y Fs(history-substring-search)o(-for)o(ward)24 -b(\(\))630 690 y Ft(Searc)m(h)42 b(forw)m(ard)f(through)f(the)i +(b)s(ound.)150 566 y Fs(history-substring-search)o(-for)o(ward)24 +b(\(\))630 676 y Ft(Searc)m(h)42 b(forw)m(ard)f(through)f(the)i (history)f(for)g(the)h(string)f(of)h(c)m(haracters)h(b)s(et)m(w)m(een)f -(the)630 800 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h(p) +(the)630 785 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h(p) s(oin)m(t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g(matc)m(h)h(an)m -(ywhere)630 910 y(in)i(a)h(history)g(line.)47 b(This)32 +(ywhere)630 895 y(in)i(a)h(history)g(line.)47 b(This)32 b(is)g(a)h(non-incremen)m(tal)h(searc)m(h.)47 b(By)33 -b(default,)h(this)e(command)630 1019 y(is)e(un)m(b)s(ound.)150 -1192 y Fs(history-substring-search)o(-bac)o(kwar)o(d)24 -b(\(\))630 1301 y Ft(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h +b(default,)h(this)e(command)630 1005 y(is)e(un)m(b)s(ound.)150 +1162 y Fs(history-substring-search)o(-bac)o(kwar)o(d)24 +b(\(\))630 1272 y Ft(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h (history)g(for)g(the)f(string)h(of)g(c)m(haracters)h(b)s(et)m(w)m(een)g -(the)630 1411 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h +(the)630 1381 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h (p)s(oin)m(t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g(matc)m(h)h -(an)m(ywhere)630 1520 y(in)i(a)h(history)g(line.)47 b(This)32 +(an)m(ywhere)630 1491 y(in)i(a)h(history)g(line.)47 b(This)32 b(is)g(a)h(non-incremen)m(tal)h(searc)m(h.)47 b(By)33 -b(default,)h(this)e(command)630 1630 y(is)e(un)m(b)s(ound.)150 -1802 y Fs(yank-nth-arg)d(\(M-C-y\))630 1912 y Ft(Insert)37 +b(default,)h(this)e(command)630 1601 y(is)e(un)m(b)s(ound.)150 +1758 y Fs(yank-nth-arg)d(\(M-C-y\))630 1868 y Ft(Insert)37 b(the)g(\014rst)f(argumen)m(t)i(to)f(the)h(previous)e(command)h -(\(usually)g(the)g(second)g(w)m(ord)630 2021 y(on)32 +(\(usually)g(the)g(second)g(w)m(ord)630 1978 y(on)32 b(the)g(previous)f(line\))i(at)f(p)s(oin)m(t.)46 b(With)32 b(an)g(argumen)m(t)g Fj(n)p Ft(,)g(insert)g(the)g Fj(n)p -Ft(th)f(w)m(ord)g(from)630 2131 y(the)k(previous)f(command)h(\(the)g(w) +Ft(th)f(w)m(ord)g(from)630 2087 y(the)k(previous)f(command)h(\(the)g(w) m(ords)g(in)f(the)h(previous)g(command)f(b)s(egin)h(with)f(w)m(ord)630 -2241 y(0\).)69 b(A)40 b(negativ)m(e)h(argumen)m(t)f(inserts)g(the)f +2197 y(0\).)69 b(A)40 b(negativ)m(e)h(argumen)m(t)f(inserts)g(the)f Fj(n)p Ft(th)g(w)m(ord)g(from)g(the)h(end)f(of)h(the)f(previous)630 -2350 y(command.)48 b(Once)33 b(the)g(argumen)m(t)h Fj(n)e +2306 y(command.)48 b(Once)33 b(the)g(argumen)m(t)h Fj(n)e Ft(is)h(computed,)h(the)f(argumen)m(t)g(is)g(extracted)i(as)e(if)630 -2460 y(the)e(`)p Fs(!)p Fl(n)p Ft(')f(history)g(expansion)g(had)g(b)s -(een)g(sp)s(eci\014ed.)150 2632 y Fs(yank-last-arg)d(\(M-.)i(or)h -(M-_\))630 2742 y Ft(Insert)k(last)i(argumen)m(t)g(to)g(the)f(previous) +2416 y(the)e(`)p Fs(!)p Fl(n)p Ft(')f(history)g(expansion)g(had)g(b)s +(een)g(sp)s(eci\014ed.)150 2574 y Fs(yank-last-arg)d(\(M-.)i(or)h +(M-_\))630 2683 y Ft(Insert)k(last)i(argumen)m(t)g(to)g(the)f(previous) f(command)h(\(the)h(last)f(w)m(ord)g(of)g(the)g(previous)630 -2851 y(history)e(en)m(try\).)51 b(With)34 b(a)g(n)m(umeric)g(argumen)m +2793 y(history)e(en)m(try\).)51 b(With)34 b(a)g(n)m(umeric)g(argumen)m (t,)h(b)s(eha)m(v)m(e)f(exactly)h(lik)m(e)g Fs(yank-nth-arg)p -Ft(.)630 2961 y(Successiv)m(e)26 b(calls)g(to)f Fs(yank-last-arg)c +Ft(.)630 2902 y(Successiv)m(e)26 b(calls)g(to)f Fs(yank-last-arg)c Ft(mo)m(v)m(e)27 b(bac)m(k)e(through)f(the)h(history)g(list,)i -(inserting)630 3070 y(the)c(last)g(w)m(ord)f(\(or)h(the)g(w)m(ord)f(sp) +(inserting)630 3012 y(the)c(last)g(w)m(ord)f(\(or)h(the)g(w)m(ord)f(sp) s(eci\014ed)g(b)m(y)g(the)h(argumen)m(t)g(to)g(the)g(\014rst)f(call\))i -(of)f(eac)m(h)h(line)630 3180 y(in)36 b(turn.)58 b(An)m(y)36 +(of)f(eac)m(h)h(line)630 3122 y(in)36 b(turn.)58 b(An)m(y)36 b(n)m(umeric)h(argumen)m(t)f(supplied)g(to)h(these)g(successiv)m(e)g -(calls)h(determines)630 3290 y(the)d(direction)g(to)h(mo)m(v)m(e)g +(calls)h(determines)630 3231 y(the)d(direction)g(to)h(mo)m(v)m(e)g (through)e(the)h(history)-8 b(.)54 b(A)35 b(negativ)m(e)i(argumen)m(t)e -(switc)m(hes)h(the)630 3399 y(direction)23 b(through)g(the)g(history)f +(switc)m(hes)h(the)630 3341 y(direction)23 b(through)g(the)g(history)f (\(bac)m(k)i(or)f(forw)m(ard\).)38 b(The)22 b(history)h(expansion)g -(facilities)630 3509 y(are)28 b(used)f(to)h(extract)h(the)f(last)g +(facilities)630 3450 y(are)28 b(used)f(to)h(extract)h(the)f(last)g (argumen)m(t,)h(as)e(if)h(the)g(`)p Fs(!$)p Ft(')f(history)g(expansion) -h(had)f(b)s(een)630 3618 y(sp)s(eci\014ed.)150 3791 y -Fs(operate-and-get-next)e(\(C-o\))630 3900 y Ft(Accept)30 +h(had)f(b)s(een)630 3560 y(sp)s(eci\014ed.)150 3718 y +Fs(operate-and-get-next)e(\(C-o\))630 3827 y Ft(Accept)30 b(the)g(curren)m(t)e(line)i(for)f(return)f(to)h(the)h(calling)g -(application)h(as)e(if)g(a)h(newline)f(had)630 4010 y(b)s(een)22 +(application)h(as)e(if)g(a)h(newline)f(had)630 3937 y(b)s(een)22 b(en)m(tered,)k(and)d(fetc)m(h)h(the)f(next)g(line)h(relativ)m(e)h(to)f -(the)f(curren)m(t)g(line)h(from)f(the)g(history)630 4120 +(the)f(curren)m(t)g(line)h(from)f(the)g(history)630 4046 y(for)31 b(editing.)43 b(A)31 b(n)m(umeric)f(argumen)m(t,)i(if)f (supplied,)f(sp)s(eci\014es)h(the)g(history)f(en)m(try)i(to)f(use)630 -4229 y(instead)g(of)f(the)h(curren)m(t)f(line.)150 4441 -y Fi(1.4.3)63 b(Commands)42 b(F)-10 b(or)41 b(Changing)g(T)-10 -b(ext)150 4620 y Fl(end-of-file)27 b Fs(\(usually)h(C-d\))630 -4729 y Ft(The)e(c)m(haracter)h(indicating)h(end-of-\014le)e(as)h(set,)g -(for)f(example,)i(b)m(y)e Fs(stty)p Ft(.)39 b(If)25 b(this)h(c)m -(harac-)630 4839 y(ter)c(is)g(read)g(when)e(there)i(are)h(no)e(c)m -(haracters)j(on)d(the)h(line,)i(and)d(p)s(oin)m(t)h(is)g(at)h(the)f(b)s -(eginning)630 4948 y(of)31 b(the)f(line,)h(Readline)g(in)m(terprets)g -(it)g(as)f(the)h(end)f(of)g(input)f(and)h(returns)f Fm(eof)p -Ft(.)150 5121 y Fs(delete-char)e(\(C-d\))630 5230 y Ft(Delete)35 -b(the)f(c)m(haracter)h(at)f(p)s(oin)m(t.)49 b(If)33 b(this)g(function)g -(is)g(b)s(ound)e(to)j(the)g(same)f(c)m(haracter)630 5340 -y(as)e(the)f(tt)m(y)i Fm(eof)d Ft(c)m(haracter,)j(as)f -Fl(C-d)e Ft(commonly)i(is,)g(see)g(ab)s(o)m(v)m(e)h(for)e(the)g -(e\013ects.)p eop end -%%Page: 19 23 -TeXDict begin 19 22 bop 150 -116 a Ft(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(19)150 299 y Fs -(backward-delete-char)25 b(\(Rubout\))630 408 y Ft(Delete)32 -b(the)f(c)m(haracter)g(b)s(ehind)e(the)h(cursor.)40 b(A)30 -b(n)m(umeric)g(argumen)m(t)h(means)f(to)h(kill)g(the)630 -518 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150 -669 y Fs(forward-backward-delete-)o(char)24 b(\(\))630 -779 y Ft(Delete)40 b(the)f(c)m(haracter)h(under)c(the)j(cursor,)h +4156 y(instead)g(of)f(the)h(curren)m(t)f(line.)150 4314 +y Fs(fetch-history)d(\(\))630 4423 y Ft(With)e(a)f(n)m(umeric)g +(argumen)m(t,)i(fetc)m(h)f(that)g(en)m(try)f(from)g(the)g(history)g +(list)h(and)e(mak)m(e)i(it)g(the)630 4533 y(curren)m(t)30 +b(line.)41 b(Without)30 b(an)g(argumen)m(t,)h(mo)m(v)m(e)g(bac)m(k)g +(to)f(the)g(\014rst)f(en)m(try)h(in)g(the)g(history)630 +4643 y(list.)150 4840 y Fi(1.4.3)63 b(Commands)42 b(F)-10 +b(or)41 b(Changing)g(T)-10 b(ext)150 5011 y Fl(end-of-file)27 +b Fs(\(usually)h(C-d\))630 5121 y Ft(The)e(c)m(haracter)h(indicating)h +(end-of-\014le)e(as)h(set,)g(for)f(example,)i(b)m(y)e +Fs(stty)p Ft(.)39 b(If)25 b(this)h(c)m(harac-)630 5230 +y(ter)c(is)g(read)g(when)e(there)i(are)h(no)e(c)m(haracters)j(on)d(the) +h(line,)i(and)d(p)s(oin)m(t)h(is)g(at)h(the)f(b)s(eginning)630 +5340 y(of)31 b(the)f(line,)h(Readline)g(in)m(terprets)g(it)g(as)f(the)h +(end)f(of)g(input)f(and)h(returns)f Fm(eof)p Ft(.)p eop +end +%%Page: 20 24 +TeXDict begin 20 23 bop 150 -116 a Ft(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(20)150 299 y Fs(delete-char)27 +b(\(C-d\))630 408 y Ft(Delete)35 b(the)f(c)m(haracter)h(at)f(p)s(oin)m +(t.)49 b(If)33 b(this)g(function)g(is)g(b)s(ound)e(to)j(the)g(same)f(c) +m(haracter)630 518 y(as)e(the)f(tt)m(y)i Fm(eof)d Ft(c)m(haracter,)j +(as)f Fl(C-d)e Ft(commonly)i(is,)g(see)g(ab)s(o)m(v)m(e)h(for)e(the)g +(e\013ects.)150 669 y Fs(backward-delete-char)25 b(\(Rubout\))630 +779 y Ft(Delete)32 b(the)f(c)m(haracter)g(b)s(ehind)e(the)h(cursor.)40 +b(A)30 b(n)m(umeric)g(argumen)m(t)h(means)f(to)h(kill)g(the)630 +889 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150 +1040 y Fs(forward-backward-delete-)o(char)24 b(\(\))630 +1149 y Ft(Delete)40 b(the)f(c)m(haracter)h(under)c(the)j(cursor,)h (unless)d(the)i(cursor)e(is)h(at)h(the)g(end)e(of)i(the)630 -889 y(line,)33 b(in)e(whic)m(h)g(case)i(the)f(c)m(haracter)h(b)s(ehind) -d(the)i(cursor)f(is)g(deleted.)46 b(By)32 b(default,)g(this)630 -998 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150 -1149 y Fs(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 1259 +1259 y(line,)33 b(in)e(whic)m(h)g(case)i(the)f(c)m(haracter)h(b)s +(ehind)d(the)i(cursor)f(is)g(deleted.)46 b(By)32 b(default,)g(this)630 +1369 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150 +1520 y Fs(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 1630 y Ft(Add)j(the)i(next)f(c)m(haracter)i(t)m(yp)s(ed)e(to)h(the)f(line)h (v)m(erbatim.)53 b(This)33 b(is)i(ho)m(w)f(to)h(insert)f(k)m(ey)630 -1369 y(sequences)d(lik)m(e)g Fl(C-q)p Ft(,)f(for)g(example.)150 -1520 y Fs(tab-insert)e(\(M-TAB\))630 1630 y Ft(Insert)i(a)h(tab)f(c)m -(haracter.)150 1781 y Fs(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o -(\))630 1891 y Ft(Insert)g(y)m(ourself.)150 2042 y Fs -(bracketed-paste-begin)25 b(\(\))630 2151 y Ft(This)f(function)h(is)f +1739 y(sequences)d(lik)m(e)g Fl(C-q)p Ft(,)f(for)g(example.)150 +1891 y Fs(tab-insert)e(\(M-TAB\))630 2000 y Ft(Insert)i(a)h(tab)f(c)m +(haracter.)150 2151 y Fs(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o +(\))630 2261 y Ft(Insert)g(y)m(ourself.)150 2412 y Fs +(bracketed-paste-begin)25 b(\(\))630 2522 y Ft(This)f(function)h(is)f (in)m(tended)h(to)h(b)s(e)e(b)s(ound)f(to)i(the)g Fs(")p Ft(brac)m(k)m(eted)h(paste)p Fs(")f Ft(escap)s(e)h(sequence)630 -2261 y(sen)m(t)38 b(b)m(y)f(some)h(terminals,)i(and)d(suc)m(h)g(a)h +2632 y(sen)m(t)38 b(b)m(y)f(some)h(terminals,)i(and)d(suc)m(h)g(a)h (binding)e(is)i(assigned)f(b)m(y)h(default.)62 b(It)38 -b(allo)m(ws)630 2371 y(Readline)33 b(to)g(insert)g(the)f(pasted)h(text) +b(allo)m(ws)630 2741 y(Readline)33 b(to)g(insert)g(the)f(pasted)h(text) g(as)g(a)g(single)g(unit)f(without)h(treating)h(eac)m(h)f(c)m(har-)630 -2480 y(acter)40 b(as)f(if)g(it)g(had)f(b)s(een)g(read)h(from)f(the)h(k) +2851 y(acter)40 b(as)f(if)g(it)g(had)f(b)s(een)g(read)h(from)f(the)h(k) m(eyb)s(oard.)66 b(The)39 b(c)m(haracters)h(are)f(inserted)630 -2590 y(as)44 b(if)g(eac)m(h)i(one)e(w)m(as)g(b)s(ound)e(to)j +2960 y(as)44 b(if)g(eac)m(h)i(one)e(w)m(as)g(b)s(ound)e(to)j Fs(self-insert)c Ft(instead)j(of)h(executing)g(an)m(y)f(editing)630 -2699 y(commands.)630 2830 y(Brac)m(k)m(eted)38 b(paste)f(sets)f(the)h +3070 y(commands.)630 3200 y(Brac)m(k)m(eted)38 b(paste)f(sets)f(the)h (region)f(\(the)h(c)m(haracters)g(b)s(et)m(w)m(een)g(p)s(oin)m(t)f(and) -g(the)g(mark\))630 2939 y(to)j(the)g(inserted)f(text.)65 +g(the)g(mark\))630 3310 y(to)j(the)g(inserted)f(text.)65 b(It)39 b(uses)f(the)g(concept)h(of)g(an)f Fk(active)i(mark)10 -b Ft(:)57 b(when)38 b(the)g(mark)630 3049 y(is)d(activ)m(e,)k(Readline) +b Ft(:)57 b(when)38 b(the)g(mark)630 3420 y(is)d(activ)m(e,)k(Readline) c(redispla)m(y)h(uses)e(the)h(terminal's)h(standout)f(mo)s(de)f(to)i -(denote)g(the)630 3159 y(region.)150 3310 y Fs(transpose-chars)26 -b(\(C-t\))630 3420 y Ft(Drag)33 b(the)f(c)m(haracter)h(b)s(efore)f(the) +(denote)g(the)630 3529 y(region.)150 3680 y Fs(transpose-chars)26 +b(\(C-t\))630 3790 y Ft(Drag)33 b(the)f(c)m(haracter)h(b)s(efore)f(the) g(cursor)f(forw)m(ard)h(o)m(v)m(er)h(the)f(c)m(haracter)i(at)e(the)g -(cursor,)630 3529 y(mo)m(ving)k(the)g(cursor)f(forw)m(ard)g(as)g(w)m +(cursor,)630 3900 y(mo)m(ving)k(the)g(cursor)f(forw)m(ard)g(as)g(w)m (ell.)57 b(If)35 b(the)h(insertion)g(p)s(oin)m(t)f(is)g(at)i(the)e(end) -g(of)h(the)630 3639 y(line,)24 b(then)e(this)g(transp)s(oses)f(the)h +g(of)h(the)630 4009 y(line,)24 b(then)e(this)g(transp)s(oses)f(the)h (last)h(t)m(w)m(o)g(c)m(haracters)g(of)f(the)h(line.)38 -b(Negativ)m(e)25 b(argumen)m(ts)630 3748 y(ha)m(v)m(e)32 -b(no)e(e\013ect.)150 3900 y Fs(transpose-words)c(\(M-t\))630 -4009 y Ft(Drag)33 b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(past)g +b(Negativ)m(e)25 b(argumen)m(ts)630 4119 y(ha)m(v)m(e)32 +b(no)e(e\013ect.)150 4270 y Fs(transpose-words)c(\(M-t\))630 +4380 y Ft(Drag)33 b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(past)g (the)h(w)m(ord)f(after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)s(oin)m(t)f(past) -g(that)630 4119 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27 +g(that)630 4489 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27 b(the)i(insertion)f(p)s(oin)m(t)h(is)f(at)h(the)g(end)e(of)i(the)f -(line,)i(this)e(transp)s(oses)g(the)630 4228 y(last)j(t)m(w)m(o)h(w)m -(ords)e(on)g(the)h(line.)150 4380 y Fs(upcase-word)c(\(M-u\))630 -4489 y Ft(Upp)s(ercase)32 b(the)g(curren)m(t)g(\(or)g(follo)m(wing\))i +(line,)i(this)e(transp)s(oses)g(the)630 4599 y(last)j(t)m(w)m(o)h(w)m +(ords)e(on)g(the)h(line.)150 4750 y Fs(upcase-word)c(\(M-u\))630 +4860 y Ft(Upp)s(ercase)32 b(the)g(curren)m(t)g(\(or)g(follo)m(wing\))i (w)m(ord.)45 b(With)32 b(a)g(negativ)m(e)j(argumen)m(t,)e(upp)s(er-)630 -4599 y(case)e(the)g(previous)f(w)m(ord,)g(but)g(do)g(not)h(mo)m(v)m(e)h -(the)e(cursor.)150 4750 y Fs(downcase-word)d(\(M-l\))630 -4860 y Ft(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m(wing\))i +4969 y(case)e(the)g(previous)f(w)m(ord,)g(but)g(do)g(not)h(mo)m(v)m(e)h +(the)e(cursor.)150 5121 y Fs(downcase-word)d(\(M-l\))630 +5230 y Ft(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m(wing\))i (w)m(ord.)37 b(With)22 b(a)g(negativ)m(e)i(argumen)m(t,)g(lo)m(w)m -(ercase)630 4969 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f(mo)m -(v)m(e)i(the)f(cursor.)150 5121 y Fs(capitalize-word)26 -b(\(M-c\))630 5230 y Ft(Capitalize)d(the)f(curren)m(t)f(\(or)g(follo)m +(ercase)630 5340 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f(mo)m +(v)m(e)i(the)f(cursor.)p eop end +%%Page: 21 25 +TeXDict begin 21 24 bop 150 -116 a Ft(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(21)150 299 y Fs(capitalize-word)26 +b(\(M-c\))630 408 y Ft(Capitalize)d(the)f(curren)m(t)f(\(or)g(follo)m (wing\))i(w)m(ord.)38 b(With)21 b(a)h(negativ)m(e)h(argumen)m(t,)h -(capitalize)630 5340 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f -(mo)m(v)m(e)i(the)f(cursor.)p eop end -%%Page: 20 24 -TeXDict begin 20 23 bop 150 -116 a Ft(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(20)150 299 y Fs(overwrite-mode)26 -b(\(\))630 408 y Ft(T)-8 b(oggle)35 b(o)m(v)m(erwrite)g(mo)s(de.)48 +(capitalize)630 518 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f +(mo)m(v)m(e)i(the)f(cursor.)150 678 y Fs(overwrite-mode)26 +b(\(\))630 788 y Ft(T)-8 b(oggle)35 b(o)m(v)m(erwrite)g(mo)s(de.)48 b(With)33 b(an)g(explicit)h(p)s(ositiv)m(e)g(n)m(umeric)f(argumen)m(t,) -h(switc)m(hes)630 518 y(to)22 b(o)m(v)m(erwrite)i(mo)s(de.)37 +h(switc)m(hes)630 897 y(to)22 b(o)m(v)m(erwrite)i(mo)s(de.)37 b(With)22 b(an)g(explicit)h(non-p)s(ositiv)m(e)f(n)m(umeric)g(argumen)m -(t,)i(switc)m(hes)e(to)630 628 y(insert)30 b(mo)s(de.)41 +(t,)i(switc)m(hes)e(to)630 1007 y(insert)30 b(mo)s(de.)41 b(This)30 b(command)h(a\013ects)h(only)e Fs(emacs)f Ft(mo)s(de;)i -Fs(vi)f Ft(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 737 +Fs(vi)f Ft(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 1116 y(di\013eren)m(tly)-8 b(.)42 b(Eac)m(h)31 b(call)h(to)f Fs(readline\(\))c Ft(starts)k(in)f(insert)g(mo)s(de.)630 -877 y(In)52 b(o)m(v)m(erwrite)h(mo)s(de,)58 b(c)m(haracters)c(b)s(ound) -c(to)j Fs(self-insert)c Ft(replace)k(the)g(text)g(at)630 -986 y(p)s(oin)m(t)59 b(rather)f(than)h(pushing)e(the)i(text)g(to)h(the) -f(righ)m(t.)126 b(Characters)59 b(b)s(ound)d(to)630 1096 -y Fs(backward-delete-char)25 b Ft(replace)31 b(the)g(c)m(haracter)h(b)s -(efore)e(p)s(oin)m(t)g(with)g(a)h(space.)630 1236 y(By)g(default,)f -(this)h(command)f(is)g(un)m(b)s(ound.)150 1445 y Fi(1.4.4)63 -b(Killing)42 b(And)e(Y)-10 b(anking)150 1622 y Fs(kill-line)28 -b(\(C-k\))630 1732 y Ft(Kill)k(the)f(text)i(from)d(p)s(oin)m(t)i(to)g -(the)f(end)g(of)g(the)h(line.)44 b(With)31 b(a)h(negativ)m(e)i(n)m -(umeric)d(argu-)630 1841 y(men)m(t,)g(kill)g(bac)m(kw)m(ard)g(from)f -(the)g(cursor)g(to)h(the)g(b)s(eginning)e(of)i(the)g(curren)m(t)f -(line.)150 2011 y Fs(backward-kill-line)25 b(\(C-x)30 -b(Rubout\))630 2120 y Ft(Kill)40 b(bac)m(kw)m(ard)h(from)e(the)h -(cursor)g(to)g(the)g(b)s(eginning)g(of)g(the)g(curren)m(t)f(line.)70 -b(With)41 b(a)630 2230 y(negativ)m(e)47 b(n)m(umeric)e(argumen)m(t,)50 +1251 y(In)52 b(o)m(v)m(erwrite)h(mo)s(de,)58 b(c)m(haracters)c(b)s +(ound)c(to)j Fs(self-insert)c Ft(replace)k(the)g(text)g(at)630 +1361 y(p)s(oin)m(t)59 b(rather)f(than)h(pushing)e(the)i(text)g(to)h +(the)f(righ)m(t.)126 b(Characters)59 b(b)s(ound)d(to)630 +1470 y Fs(backward-delete-char)25 b Ft(replace)31 b(the)g(c)m(haracter) +h(b)s(efore)e(p)s(oin)m(t)g(with)g(a)h(space.)630 1605 +y(By)g(default,)f(this)h(command)f(is)g(un)m(b)s(ound.)150 +1805 y Fi(1.4.4)63 b(Killing)42 b(And)e(Y)-10 b(anking)150 +1977 y Fs(kill-line)28 b(\(C-k\))630 2087 y Ft(Kill)k(the)f(text)i +(from)d(p)s(oin)m(t)i(to)g(the)f(end)g(of)g(the)h(line.)44 +b(With)31 b(a)h(negativ)m(e)i(n)m(umeric)d(argu-)630 +2197 y(men)m(t,)g(kill)g(bac)m(kw)m(ard)g(from)f(the)g(cursor)g(to)h +(the)g(b)s(eginning)e(of)i(the)g(curren)m(t)f(line.)150 +2357 y Fs(backward-kill-line)25 b(\(C-x)30 b(Rubout\))630 +2466 y Ft(Kill)40 b(bac)m(kw)m(ard)h(from)e(the)h(cursor)g(to)g(the)g +(b)s(eginning)g(of)g(the)g(curren)m(t)f(line.)70 b(With)41 +b(a)630 2576 y(negativ)m(e)47 b(n)m(umeric)e(argumen)m(t,)50 b(kill)c(forw)m(ard)e(from)h(the)g(cursor)g(to)h(the)f(end)f(of)i(the) -630 2339 y(curren)m(t)30 b(line.)150 2509 y Fs(unix-line-discard)c -(\(C-u\))630 2619 y Ft(Kill)31 b(bac)m(kw)m(ard)g(from)e(the)i(cursor)f +630 2685 y(curren)m(t)30 b(line.)150 2845 y Fs(unix-line-discard)c +(\(C-u\))630 2955 y Ft(Kill)31 b(bac)m(kw)m(ard)g(from)e(the)i(cursor)f (to)h(the)f(b)s(eginning)g(of)h(the)f(curren)m(t)g(line.)150 -2788 y Fs(kill-whole-line)c(\(\))630 2898 y Ft(Kill)37 +3115 y Fs(kill-whole-line)c(\(\))630 3225 y Ft(Kill)37 b(all)g(c)m(haracters)h(on)f(the)f(curren)m(t)h(line,)h(no)f(matter)g (where)f(p)s(oin)m(t)h(is.)59 b(By)36 b(default,)630 -3007 y(this)30 b(is)h(un)m(b)s(ound.)150 3177 y Fs(kill-word)d(\(M-d\)) -630 3287 y Ft(Kill)i(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f +3334 y(this)30 b(is)h(un)m(b)s(ound.)150 3494 y Fs(kill-word)d(\(M-d\)) +630 3604 y Ft(Kill)i(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f (curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)h -(the)g(end)630 3396 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8 +(the)g(end)630 3713 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8 b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f Fs(forward-word)p -Ft(.)150 3566 y Fs(backward-kill-word)25 b(\(M-DEL\))630 -3675 y Ft(Kill)k(the)g(w)m(ord)g(b)s(ehind)e(p)s(oin)m(t.)40 +Ft(.)150 3874 y Fs(backward-kill-word)25 b(\(M-DEL\))630 +3983 y Ft(Kill)k(the)g(w)m(ord)g(b)s(ehind)e(p)s(oin)m(t.)40 b(W)-8 b(ord)29 b(b)s(oundaries)f(are)h(the)g(same)g(as)g -Fs(backward-word)p Ft(.)150 3845 y Fs(shell-transpose-words)c -(\(M-C-t\))630 3955 y Ft(Drag)33 b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin) +Fs(backward-word)p Ft(.)150 4143 y Fs(shell-transpose-words)c +(\(M-C-t\))630 4253 y Ft(Drag)33 b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin) m(t)g(past)g(the)h(w)m(ord)f(after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)s -(oin)m(t)f(past)g(that)630 4064 y(w)m(ord)c(as)h(w)m(ell.)41 +(oin)m(t)f(past)g(that)630 4362 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27 b(the)i(insertion)f(p)s(oin)m(t)h(is)f(at)h(the)g(end)e(of)i -(the)f(line,)i(this)e(transp)s(oses)g(the)630 4174 y(last)j(t)m(w)m(o)h +(the)f(line,)i(this)e(transp)s(oses)g(the)630 4472 y(last)j(t)m(w)m(o)h (w)m(ords)d(on)i(the)f(line.)41 b(W)-8 b(ord)31 b(b)s(oundaries)e(are)h -(the)h(same)f(as)h Fs(shell-forward-)630 4283 y(word)e -Ft(and)h Fs(shell-backward-word)p Ft(.)150 4453 y Fs(unix-word-rubout)c -(\(C-w\))630 4562 y Ft(Kill)32 b(the)g(w)m(ord)f(b)s(ehind)f(p)s(oin)m +(the)h(same)f(as)h Fs(shell-forward-)630 4582 y(word)e +Ft(and)h Fs(shell-backward-word)p Ft(.)150 4742 y Fs(unix-word-rubout)c +(\(C-w\))630 4851 y Ft(Kill)32 b(the)g(w)m(ord)f(b)s(ehind)f(p)s(oin)m (t,)i(using)f(white)h(space)g(as)g(a)g(w)m(ord)f(b)s(oundary)-8 -b(.)43 b(The)31 b(killed)630 4672 y(text)g(is)g(sa)m(v)m(ed)g(on)g(the) -f(kill-ring.)150 4842 y Fs(unix-filename-rubout)25 b(\(\))630 -4951 y Ft(Kill)37 b(the)f(w)m(ord)g(b)s(ehind)f(p)s(oin)m(t,)j(using)e +b(.)43 b(The)31 b(killed)630 4961 y(text)g(is)g(sa)m(v)m(ed)g(on)g(the) +f(kill-ring.)150 5121 y Fs(unix-filename-rubout)25 b(\(\))630 +5230 y Ft(Kill)37 b(the)f(w)m(ord)g(b)s(ehind)f(p)s(oin)m(t,)j(using)e (white)g(space)h(and)f(the)g(slash)g(c)m(haracter)i(as)f(the)630 -5061 y(w)m(ord)30 b(b)s(oundaries.)39 b(The)30 b(killed)h(text)g(is)g -(sa)m(v)m(ed)g(on)g(the)f(kill-ring.)150 5230 y Fs -(delete-horizontal-space)24 b(\(\))630 5340 y Ft(Delete)33 +5340 y(w)m(ord)30 b(b)s(oundaries.)39 b(The)30 b(killed)h(text)g(is)g +(sa)m(v)m(ed)g(on)g(the)f(kill-ring.)p eop end +%%Page: 22 26 +TeXDict begin 22 25 bop 150 -116 a Ft(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(22)150 299 y Fs +(delete-horizontal-space)24 b(\(\))630 408 y Ft(Delete)33 b(all)e(spaces)g(and)e(tabs)i(around)e(p)s(oin)m(t.)41 -b(By)31 b(default,)f(this)h(is)f(un)m(b)s(ound.)p eop -end -%%Page: 21 25 -TeXDict begin 21 24 bop 150 -116 a Ft(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(21)150 299 y Fs(kill-region)27 -b(\(\))630 408 y Ft(Kill)k(the)f(text)i(in)e(the)g(curren)m(t)h -(region.)41 b(By)31 b(default,)f(this)h(command)f(is)g(un)m(b)s(ound.) -150 554 y Fs(copy-region-as-kill)25 b(\(\))630 663 y -Ft(Cop)m(y)34 b(the)g(text)h(in)f(the)g(region)g(to)h(the)f(kill)h -(bu\013er,)f(so)g(it)h(can)f(b)s(e)f(y)m(ank)m(ed)i(righ)m(t)f(a)m(w)m -(a)m(y)-8 b(.)630 773 y(By)31 b(default,)f(this)h(command)f(is)g(un)m -(b)s(ound.)150 918 y Fs(copy-backward-word)25 b(\(\))630 -1028 y Ft(Cop)m(y)38 b(the)h(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(to)i +b(By)31 b(default,)f(this)h(is)f(un)m(b)s(ound.)150 564 +y Fs(kill-region)d(\(\))630 673 y Ft(Kill)k(the)f(text)i(in)e(the)g +(curren)m(t)h(region.)41 b(By)31 b(default,)f(this)h(command)f(is)g(un) +m(b)s(ound.)150 829 y Fs(copy-region-as-kill)25 b(\(\))630 +938 y Ft(Cop)m(y)34 b(the)g(text)h(in)f(the)g(region)g(to)h(the)f(kill) +h(bu\013er,)f(so)g(it)h(can)f(b)s(e)f(y)m(ank)m(ed)i(righ)m(t)f(a)m(w)m +(a)m(y)-8 b(.)630 1048 y(By)31 b(default,)f(this)h(command)f(is)g(un)m +(b)s(ound.)150 1203 y Fs(copy-backward-word)25 b(\(\))630 +1313 y Ft(Cop)m(y)38 b(the)h(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(to)i (the)e(kill)h(bu\013er.)64 b(The)38 b(w)m(ord)g(b)s(oundaries)f(are)i -(the)630 1138 y(same)31 b(as)f Fs(backward-word)p Ft(.)38 +(the)630 1422 y(same)31 b(as)f Fs(backward-word)p Ft(.)38 b(By)30 b(default,)h(this)f(command)g(is)h(un)m(b)s(ound.)150 -1283 y Fs(copy-forward-word)26 b(\(\))630 1393 y Ft(Cop)m(y)31 +1578 y Fs(copy-forward-word)26 b(\(\))630 1687 y Ft(Cop)m(y)31 b(the)g(w)m(ord)g(follo)m(wing)h(p)s(oin)m(t)f(to)h(the)f(kill)h (bu\013er.)42 b(The)30 b(w)m(ord)h(b)s(oundaries)e(are)j(the)630 -1502 y(same)f(as)f Fs(forward-word)p Ft(.)38 b(By)30 +1797 y(same)f(as)f Fs(forward-word)p Ft(.)38 b(By)30 b(default,)h(this)g(command)f(is)g(un)m(b)s(ound.)150 -1647 y Fs(yank)f(\(C-y\))630 1757 y Ft(Y)-8 b(ank)31 +1952 y Fs(yank)f(\(C-y\))630 2062 y Ft(Y)-8 b(ank)31 b(the)f(top)h(of)g(the)f(kill)h(ring)f(in)m(to)i(the)e(bu\013er)g(at)h -(p)s(oin)m(t.)150 1902 y Fs(yank-pop)d(\(M-y\))630 2012 +(p)s(oin)m(t.)150 2217 y Fs(yank-pop)d(\(M-y\))630 2327 y Ft(Rotate)36 b(the)f(kill-ring,)i(and)d(y)m(ank)h(the)f(new)g(top.)54 b(Y)-8 b(ou)35 b(can)g(only)f(do)h(this)f(if)h(the)g(prior)630 -2122 y(command)30 b(is)h Fs(yank)e Ft(or)h Fs(yank-pop)p -Ft(.)150 2307 y Fi(1.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m -(ts)150 2472 y Fs(digit-argument)26 b(\()p Fl(M-0)p Fs(,)j -Fl(M-1)p Fs(,)h(...)f Fl(M--)p Fs(\))630 2581 y Ft(Add)d(this)h(digit)g +2436 y(command)30 b(is)h Fs(yank)e Ft(or)h Fs(yank-pop)p +Ft(.)150 2631 y Fi(1.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m +(ts)150 2801 y Fs(digit-argument)26 b(\()p Fl(M-0)p Fs(,)j +Fl(M-1)p Fs(,)h(...)f Fl(M--)p Fs(\))630 2911 y Ft(Add)d(this)h(digit)g (to)h(the)f(argumen)m(t)g(already)h(accum)m(ulating,)h(or)e(start)h(a)f -(new)f(argumen)m(t.)630 2691 y Fl(M--)j Ft(starts)i(a)g(negativ)m(e)i -(argumen)m(t.)150 2836 y Fs(universal-argument)25 b(\(\))630 -2946 y Ft(This)g(is)g(another)h(w)m(a)m(y)g(to)h(sp)s(ecify)e(an)g +(new)f(argumen)m(t.)630 3020 y Fl(M--)j Ft(starts)i(a)g(negativ)m(e)i +(argumen)m(t.)150 3176 y Fs(universal-argument)25 b(\(\))630 +3285 y Ft(This)g(is)g(another)h(w)m(a)m(y)g(to)h(sp)s(ecify)e(an)g (argumen)m(t.)40 b(If)25 b(this)g(command)h(is)f(follo)m(w)m(ed)i(b)m -(y)f(one)630 3055 y(or)k(more)f(digits,)i(optionally)g(with)e(a)h +(y)f(one)630 3395 y(or)k(more)f(digits,)i(optionally)g(with)e(a)h (leading)h(min)m(us)e(sign,)h(those)g(digits)g(de\014ne)f(the)h(ar-)630 -3165 y(gumen)m(t.)41 b(If)28 b(the)i(command)f(is)g(follo)m(w)m(ed)h(b) +3505 y(gumen)m(t.)41 b(If)28 b(the)i(command)f(is)g(follo)m(w)m(ed)h(b) m(y)f(digits,)i(executing)f Fs(universal-argument)630 -3275 y Ft(again)j(ends)e(the)h(n)m(umeric)f(argumen)m(t,)i(but)e(is)h +3614 y Ft(again)j(ends)e(the)h(n)m(umeric)f(argumen)m(t,)i(but)e(is)h (otherwise)g(ignored.)45 b(As)32 b(a)g(sp)s(ecial)h(case,)630 -3384 y(if)g(this)g(command)f(is)h(immediately)h(follo)m(w)m(ed)h(b)m(y) +3724 y(if)g(this)g(command)f(is)h(immediately)h(follo)m(w)m(ed)h(b)m(y) d(a)h(c)m(haracter)i(that)e(is)g(neither)g(a)g(digit)630 -3494 y(nor)41 b(min)m(us)f(sign,)k(the)e(argumen)m(t)f(coun)m(t)h(for)f +3833 y(nor)41 b(min)m(us)f(sign,)k(the)e(argumen)m(t)f(coun)m(t)h(for)f (the)h(next)f(command)g(is)g(m)m(ultiplied)h(b)m(y)630 -3603 y(four.)54 b(The)35 b(argumen)m(t)g(coun)m(t)h(is)f(initially)h +3943 y(four.)54 b(The)35 b(argumen)m(t)g(coun)m(t)h(is)f(initially)h (one,)h(so)e(executing)i(this)e(function)f(the)i(\014rst)630 -3713 y(time)29 b(mak)m(es)h(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)h +4053 y(time)29 b(mak)m(es)h(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)h (second)g(time)g(mak)m(es)h(the)e(argumen)m(t)h(coun)m(t)630 -3822 y(sixteen,)i(and)f(so)h(on.)40 b(By)31 b(default,)g(this)f(is)g -(not)h(b)s(ound)d(to)k(a)e(k)m(ey)-8 b(.)150 4008 y Fi(1.4.6)63 +4162 y(sixteen,)i(and)f(so)h(on.)40 b(By)31 b(default,)g(this)f(is)g +(not)h(b)s(ound)d(to)k(a)e(k)m(ey)-8 b(.)150 4357 y Fi(1.4.6)63 b(Letting)40 b(Readline)h(T)m(yp)s(e)g(F)-10 b(or)42 -b(Y)-10 b(ou)150 4173 y Fs(complete)28 b(\(TAB\))630 -4282 y Ft(A)m(ttempt)c(to)f(p)s(erform)e(completion)j(on)f(the)g(text)g +b(Y)-10 b(ou)150 4527 y Fs(complete)28 b(\(TAB\))630 +4637 y Ft(A)m(ttempt)c(to)f(p)s(erform)e(completion)j(on)f(the)g(text)g (b)s(efore)f(p)s(oin)m(t.)39 b(The)22 b(actual)i(completion)630 -4392 y(p)s(erformed)29 b(is)h(application-sp)s(eci\014c.)42 +4746 y(p)s(erformed)29 b(is)h(application-sp)s(eci\014c.)42 b(The)30 b(default)h(is)f(\014lename)h(completion.)150 -4537 y Fs(possible-completions)25 b(\(M-?\))630 4647 +4902 y Fs(possible-completions)25 b(\(M-?\))630 5011 y Ft(List)35 b(the)g(p)s(ossible)f(completions)i(of)e(the)h(text)h(b)s (efore)e(p)s(oin)m(t.)54 b(When)34 b(displa)m(ying)h(com-)630 -4756 y(pletions,)f(Readline)f(sets)f(the)h(n)m(um)m(b)s(er)e(of)i +5121 y(pletions,)f(Readline)f(sets)f(the)h(n)m(um)m(b)s(er)e(of)i (columns)f(used)f(for)i(displa)m(y)f(to)h(the)g(v)-5 -b(alue)33 b(of)630 4866 y Fs(completion-display-width)o +b(alue)33 b(of)630 5230 y Fs(completion-display-width)o Ft(,)g(the)j(v)-5 b(alue)37 b(of)g(the)f(en)m(vironmen)m(t)h(v)-5 -b(ariable)38 b Fs(COLUMNS)p Ft(,)630 4975 y(or)30 b(the)h(screen)f -(width,)g(in)g(that)h(order.)150 5121 y Fs(insert-completions)25 -b(\(M-*\))630 5230 y Ft(Insert)30 b(all)h(completions)h(of)f(the)g -(text)g(b)s(efore)f(p)s(oin)m(t)h(that)g(w)m(ould)f(ha)m(v)m(e)i(b)s -(een)e(generated)630 5340 y(b)m(y)g Fs(possible-completions)p -Ft(.)p eop end -%%Page: 22 26 -TeXDict begin 22 25 bop 150 -116 a Ft(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(22)150 299 y Fs(menu-complete)27 -b(\(\))630 408 y Ft(Similar)d(to)g Fs(complete)p Ft(,)f(but)h(replaces) -g(the)g(w)m(ord)g(to)g(b)s(e)f(completed)i(with)e(a)i(single)f(matc)m -(h)630 518 y(from)37 b(the)h(list)h(of)f(p)s(ossible)f(completions.)64 +b(ariable)38 b Fs(COLUMNS)p Ft(,)630 5340 y(or)30 b(the)h(screen)f +(width,)g(in)g(that)h(order.)p eop end +%%Page: 23 27 +TeXDict begin 23 26 bop 150 -116 a Ft(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(23)150 299 y Fs +(insert-completions)25 b(\(M-*\))630 408 y Ft(Insert)30 +b(all)h(completions)h(of)f(the)g(text)g(b)s(efore)f(p)s(oin)m(t)h(that) +g(w)m(ould)f(ha)m(v)m(e)i(b)s(een)e(generated)630 518 +y(b)m(y)g Fs(possible-completions)p Ft(.)150 673 y Fs(menu-complete)d +(\(\))630 783 y Ft(Similar)d(to)g Fs(complete)p Ft(,)f(but)h(replaces)g +(the)g(w)m(ord)g(to)g(b)s(e)f(completed)i(with)e(a)i(single)f(matc)m(h) +630 893 y(from)37 b(the)h(list)h(of)f(p)s(ossible)f(completions.)64 b(Rep)s(eated)39 b(execution)g(of)f Fs(menu-complete)630 -628 y Ft(steps)i(through)g(the)g(list)h(of)f(p)s(ossible)g +1002 y Ft(steps)i(through)g(the)g(list)h(of)f(p)s(ossible)g (completions,)k(inserting)c(eac)m(h)i(matc)m(h)f(in)f(turn.)630 -737 y(A)m(t)e(the)f(end)f(of)h(the)g(list)g(of)g(completions,)i(the)e +1112 y(A)m(t)e(the)f(end)f(of)h(the)g(list)g(of)g(completions,)i(the)e (b)s(ell)g(is)g(rung)f(\(sub)5 b(ject)36 b(to)i(the)f(setting)630 -847 y(of)f Fs(bell-style)p Ft(\))e(and)h(the)h(original)i(text)f(is)f +1221 y(of)f Fs(bell-style)p Ft(\))e(and)h(the)h(original)i(text)f(is)f (restored.)57 b(An)36 b(argumen)m(t)h(of)f Fj(n)f Ft(mo)m(v)m(es)i -Fj(n)630 956 y Ft(p)s(ositions)e(forw)m(ard)f(in)g(the)h(list)h(of)e +Fj(n)630 1331 y Ft(p)s(ositions)e(forw)m(ard)f(in)g(the)h(list)h(of)e (matc)m(hes;)39 b(a)c(negativ)m(e)i(argumen)m(t)e(ma)m(y)g(b)s(e)f -(used)g(to)630 1066 y(mo)m(v)m(e)40 b(bac)m(kw)m(ard)e(through)g(the)g +(used)g(to)630 1441 y(mo)m(v)m(e)40 b(bac)m(kw)m(ard)e(through)g(the)g (list.)65 b(This)38 b(command)g(is)g(in)m(tended)g(to)h(b)s(e)f(b)s -(ound)e(to)630 1176 y Fs(TAB)p Ft(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m -(y)i(default.)150 1331 y Fs(menu-complete-backward)24 -b(\(\))630 1441 y Ft(Iden)m(tical)36 b(to)g Fs(menu-complete)p +(ound)e(to)630 1550 y Fs(TAB)p Ft(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m +(y)i(default.)150 1705 y Fs(menu-complete-backward)24 +b(\(\))630 1815 y Ft(Iden)m(tical)36 b(to)g Fs(menu-complete)p Ft(,)d(but)h(mo)m(v)m(es)j(bac)m(kw)m(ard)e(through)f(the)i(list)f(of)g -(p)s(ossible)630 1550 y(completions,)d(as)e(if)h Fs(menu-complete)26 +(p)s(ossible)630 1925 y(completions,)d(as)e(if)h Fs(menu-complete)26 b Ft(had)k(b)s(een)g(giv)m(en)h(a)g(negativ)m(e)i(argumen)m(t.)150 -1705 y Fs(delete-char-or-list)25 b(\(\))630 1815 y Ft(Deletes)41 +2080 y Fs(delete-char-or-list)25 b(\(\))630 2190 y Ft(Deletes)41 b(the)e(c)m(haracter)h(under)e(the)h(cursor)f(if)h(not)g(at)g(the)h(b)s -(eginning)e(or)h(end)f(of)h(the)630 1925 y(line)50 b(\(lik)m(e)h +(eginning)e(or)h(end)f(of)h(the)630 2299 y(line)50 b(\(lik)m(e)h Fs(delete-char)p Ft(\).)96 b(If)49 b(at)h(the)g(end)f(of)h(the)f(line,) -55 b(b)s(eha)m(v)m(es)c(iden)m(tically)g(to)630 2034 +55 b(b)s(eha)m(v)m(es)c(iden)m(tically)g(to)630 2409 y Fs(possible-completions)p Ft(.)35 b(This)30 b(command)g(is)g(un)m(b)s -(ound)e(b)m(y)i(default.)150 2229 y Fi(1.4.7)63 b(Keyb)s(oard)41 -b(Macros)150 2399 y Fs(start-kbd-macro)26 b(\(C-x)j(\(\))630 -2509 y Ft(Begin)i(sa)m(ving)h(the)e(c)m(haracters)i(t)m(yp)s(ed)e(in)m +(ound)e(b)m(y)i(default.)150 2604 y Fi(1.4.7)63 b(Keyb)s(oard)41 +b(Macros)150 2774 y Fs(start-kbd-macro)26 b(\(C-x)j(\(\))630 +2883 y Ft(Begin)i(sa)m(ving)h(the)e(c)m(haracters)i(t)m(yp)s(ed)e(in)m (to)h(the)g(curren)m(t)f(k)m(eyb)s(oard)g(macro.)150 -2664 y Fs(end-kbd-macro)d(\(C-x)i(\)\))630 2774 y Ft(Stop)e(sa)m(ving)h +3039 y Fs(end-kbd-macro)d(\(C-x)i(\)\))630 3148 y Ft(Stop)e(sa)m(ving)h (the)g(c)m(haracters)g(t)m(yp)s(ed)f(in)m(to)i(the)e(curren)m(t)g(k)m -(eyb)s(oard)g(macro)h(and)f(sa)m(v)m(e)i(the)630 2883 -y(de\014nition.)150 3039 y Fs(call-last-kbd-macro)c(\(C-x)k(e\))630 -3148 y Ft(Re-execute)37 b(the)e(last)h(k)m(eyb)s(oard)f(macro)h +(eyb)s(oard)g(macro)h(and)f(sa)m(v)m(e)i(the)630 3258 +y(de\014nition.)150 3413 y Fs(call-last-kbd-macro)c(\(C-x)k(e\))630 +3523 y Ft(Re-execute)37 b(the)e(last)h(k)m(eyb)s(oard)f(macro)h (de\014ned,)f(b)m(y)h(making)f(the)g(c)m(haracters)i(in)e(the)630 -3258 y(macro)c(app)s(ear)f(as)g(if)h(t)m(yp)s(ed)f(at)h(the)f(k)m(eyb)s -(oard.)150 3413 y Fs(print-last-kbd-macro)25 b(\(\))630 -3523 y Ft(Prin)m(t)30 b(the)h(last)g(k)m(eb)s(oard)f(macro)h(de\014ned) -e(in)i(a)f(format)h(suitable)g(for)f(the)h Fj(inputrc)k -Ft(\014le.)150 3718 y Fi(1.4.8)63 b(Some)41 b(Miscellaneous)i(Commands) -150 3888 y Fs(re-read-init-file)26 b(\(C-x)j(C-r\))630 -3997 y Ft(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)f(the)g -Fj(inputrc)27 b Ft(\014le,)d(and)d(incorp)s(orate)h(an)m(y)h(bindings)d -(or)i(v)-5 b(ariable)630 4107 y(assignmen)m(ts)31 b(found)e(there.)150 -4262 y Fs(abort)g(\(C-g\))630 4372 y Ft(Ab)s(ort)d(the)h(curren)m(t)f -(editing)h(command)f(and)g(ring)h(the)f(terminal's)h(b)s(ell)g(\(sub)5 -b(ject)26 b(to)i(the)630 4481 y(setting)j(of)g Fs(bell-style)p -Ft(\).)150 4637 y Fs(do-lowercase-version)25 b(\(M-A,)k(M-B,)g(M-)p -Fl(x)p Fs(,)g(...)o(\))630 4746 y Ft(If)35 b(the)g(meta\014ed)g(c)m -(haracter)i Fj(x)k Ft(is)35 b(upp)s(er)e(case,)k(run)d(the)h(command)g -(that)g(is)g(b)s(ound)e(to)630 4856 y(the)g(corresp)s(onding)f -(meta\014ed)h(lo)m(w)m(er)i(case)f(c)m(haracter.)50 b(The)32 -b(b)s(eha)m(vior)h(is)g(unde\014ned)e(if)630 4965 y Fj(x)37 -b Ft(is)30 b(already)h(lo)m(w)m(er)h(case.)150 5121 y -Fs(prefix-meta)27 b(\(ESC\))630 5230 y Ft(Metafy)39 b(the)e(next)h(c)m -(haracter)h(t)m(yp)s(ed.)62 b(This)37 b(is)g(for)h(k)m(eyb)s(oards)f -(without)g(a)h(meta)g(k)m(ey)-8 b(.)630 5340 y(T)m(yping)30 -b(`)p Fs(ESC)g(f)p Ft(')g(is)h(equiv)-5 b(alen)m(t)31 -b(to)g(t)m(yping)g Fl(M-f)p Ft(.)p eop end -%%Page: 23 27 -TeXDict begin 23 26 bop 150 -116 a Ft(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(23)150 299 y Fs(undo)29 -b(\(C-_)g(or)h(C-x)g(C-u\))630 408 y Ft(Incremen)m(tal)h(undo,)f -(separately)h(remem)m(b)s(ered)f(for)g(eac)m(h)i(line.)150 -584 y Fs(revert-line)27 b(\(M-r\))630 693 y Ft(Undo)33 -b(all)h(c)m(hanges)g(made)f(to)h(this)f(line.)49 b(This)32 -b(is)h(lik)m(e)i(executing)f(the)f Fs(undo)f Ft(command)630 -803 y(enough)e(times)h(to)g(get)h(bac)m(k)f(to)g(the)f(b)s(eginning.) -150 978 y Fs(tilde-expand)d(\(M-~\))630 1088 y Ft(P)m(erform)j(tilde)h -(expansion)g(on)f(the)g(curren)m(t)h(w)m(ord.)150 1263 -y Fs(set-mark)d(\(C-@\))630 1373 y Ft(Set)33 b(the)g(mark)f(to)i(the)f -(p)s(oin)m(t.)48 b(If)32 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g -(supplied,)f(the)h(mark)g(is)f(set)630 1482 y(to)f(that)g(p)s(osition.) -150 1658 y Fs(exchange-point-and-mark)24 b(\(C-x)29 b(C-x\))630 -1767 y Ft(Sw)m(ap)i(the)g(p)s(oin)m(t)g(with)g(the)g(mark.)43 -b(The)31 b(curren)m(t)g(cursor)f(p)s(osition)i(is)f(set)h(to)f(the)h -(sa)m(v)m(ed)630 1877 y(p)s(osition,)f(and)e(the)i(old)g(cursor)e(p)s -(osition)i(is)f(sa)m(v)m(ed)i(as)e(the)h(mark.)150 2052 -y Fs(character-search)26 b(\(C-]\))630 2162 y Ft(A)f(c)m(haracter)h(is) -f(read)g(and)f(p)s(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)g(the)f(next)g(o)s -(ccurrence)g(of)g(that)g(c)m(haracter.)630 2271 y(A)30 -b(negativ)m(e)j(coun)m(t)e(searc)m(hes)g(for)f(previous)g(o)s -(ccurrences.)150 2447 y Fs(character-search-backwar)o(d)24 -b(\(M-C-]\))630 2556 y Ft(A)45 b(c)m(haracter)h(is)f(read)g(and)f(p)s +3632 y(macro)c(app)s(ear)f(as)g(if)h(t)m(yp)s(ed)f(at)h(the)f(k)m(eyb)s +(oard.)150 3788 y Fs(print-last-kbd-macro)25 b(\(\))630 +3897 y Ft(Prin)m(t)30 b(the)g(last)h(k)m(eyb)s(oard)f(macro)h +(de\014ned)e(in)h(a)g(format)h(suitable)g(for)f(the)g +Fj(inputrc)35 b Ft(\014le.)150 4092 y Fi(1.4.8)63 b(Some)41 +b(Miscellaneous)i(Commands)150 4262 y Fs(re-read-init-file)26 +b(\(C-x)j(C-r\))630 4372 y Ft(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of) +f(the)g Fj(inputrc)27 b Ft(\014le,)d(and)d(incorp)s(orate)h(an)m(y)h +(bindings)d(or)i(v)-5 b(ariable)630 4481 y(assignmen)m(ts)31 +b(found)e(there.)150 4637 y Fs(abort)g(\(C-g\))630 4746 +y Ft(Ab)s(ort)d(the)h(curren)m(t)f(editing)h(command)f(and)g(ring)h +(the)f(terminal's)h(b)s(ell)g(\(sub)5 b(ject)26 b(to)i(the)630 +4856 y(setting)j(of)g Fs(bell-style)p Ft(\).)150 5011 +y Fs(do-lowercase-version)25 b(\(M-A,)k(M-B,)g(M-)p Fl(x)p +Fs(,)g(...)o(\))630 5121 y Ft(If)35 b(the)g(meta\014ed)g(c)m(haracter)i +Fj(x)k Ft(is)35 b(upp)s(er)e(case,)k(run)d(the)h(command)g(that)g(is)g +(b)s(ound)e(to)630 5230 y(the)g(corresp)s(onding)f(meta\014ed)h(lo)m(w) +m(er)i(case)f(c)m(haracter.)50 b(The)32 b(b)s(eha)m(vior)h(is)g +(unde\014ned)e(if)630 5340 y Fj(x)37 b Ft(is)30 b(already)h(lo)m(w)m +(er)h(case.)p eop end +%%Page: 24 28 +TeXDict begin 24 27 bop 150 -116 a Ft(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(24)150 299 y Fs(prefix-meta)27 +b(\(ESC\))630 408 y Ft(Metafy)39 b(the)e(next)h(c)m(haracter)h(t)m(yp)s +(ed.)62 b(This)37 b(is)g(for)h(k)m(eyb)s(oards)f(without)g(a)h(meta)g +(k)m(ey)-8 b(.)630 518 y(T)m(yping)30 b(`)p Fs(ESC)g(f)p +Ft(')g(is)h(equiv)-5 b(alen)m(t)31 b(to)g(t)m(yping)g +Fl(M-f)p Ft(.)150 704 y Fs(undo)e(\(C-_)g(or)h(C-x)g(C-u\))630 +814 y Ft(Incremen)m(tal)h(undo,)f(separately)h(remem)m(b)s(ered)f(for)g +(eac)m(h)i(line.)150 1000 y Fs(revert-line)27 b(\(M-r\))630 +1110 y Ft(Undo)33 b(all)h(c)m(hanges)g(made)f(to)h(this)f(line.)49 +b(This)32 b(is)h(lik)m(e)i(executing)f(the)f Fs(undo)f +Ft(command)630 1219 y(enough)e(times)h(to)g(get)h(bac)m(k)f(to)g(the)f +(b)s(eginning.)150 1406 y Fs(tilde-expand)d(\(M-~\))630 +1515 y Ft(P)m(erform)j(tilde)h(expansion)g(on)f(the)g(curren)m(t)h(w)m +(ord.)150 1702 y Fs(set-mark)d(\(C-@\))630 1811 y Ft(Set)33 +b(the)g(mark)f(to)i(the)f(p)s(oin)m(t.)48 b(If)32 b(a)h(n)m(umeric)g +(argumen)m(t)g(is)g(supplied,)f(the)h(mark)g(is)f(set)630 +1921 y(to)f(that)g(p)s(osition.)150 2107 y Fs(exchange-point-and-mark) +24 b(\(C-x)29 b(C-x\))630 2217 y Ft(Sw)m(ap)i(the)g(p)s(oin)m(t)g(with) +g(the)g(mark.)43 b(The)31 b(curren)m(t)g(cursor)f(p)s(osition)i(is)f +(set)h(to)f(the)h(sa)m(v)m(ed)630 2326 y(p)s(osition,)f(and)e(the)i +(old)g(cursor)e(p)s(osition)i(is)f(sa)m(v)m(ed)i(as)e(the)h(mark.)150 +2513 y Fs(character-search)26 b(\(C-]\))630 2622 y Ft(A)f(c)m(haracter) +h(is)f(read)g(and)f(p)s(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)g(the)f(next)g +(o)s(ccurrence)g(of)g(that)g(c)m(haracter.)630 2732 y(A)30 +b(negativ)m(e)j(argumen)m(t)e(searc)m(hes)g(for)f(previous)g(o)s +(ccurrences.)150 2918 y Fs(character-search-backwar)o(d)24 +b(\(M-C-]\))630 3028 y Ft(A)45 b(c)m(haracter)h(is)f(read)g(and)f(p)s (oin)m(t)h(is)g(mo)m(v)m(ed)h(to)f(the)g(previous)f(o)s(ccurrence)h(of) -g(that)630 2666 y(c)m(haracter.)d(A)31 b(negativ)m(e)h(coun)m(t)f -(searc)m(hes)h(for)e(subsequen)m(t)f(o)s(ccurrences.)150 -2841 y Fs(skip-csi-sequence)d(\(\))630 2951 y Ft(Read)i(enough)f(c)m +g(that)630 3137 y(c)m(haracter.)d(A)31 b(negativ)m(e)h(argumen)m(t)f +(searc)m(hes)g(for)g(subsequen)m(t)e(o)s(ccurrences.)150 +3324 y Fs(skip-csi-sequence)d(\(\))630 3433 y Ft(Read)i(enough)f(c)m (haracters)h(to)g(consume)f(a)h(m)m(ulti-k)m(ey)h(sequence)f(suc)m(h)f -(as)g(those)h(de\014ned)630 3061 y(for)37 b(k)m(eys)h(lik)m(e)g(Home)g +(as)g(those)h(de\014ned)630 3543 y(for)37 b(k)m(eys)h(lik)m(e)g(Home)g (and)f(End.)60 b(Suc)m(h)37 b(sequences)g(b)s(egin)g(with)g(a)h(Con)m -(trol)g(Sequence)630 3170 y(Indicator)f(\(CSI\),)f(usually)h(ESC-[.)59 +(trol)g(Sequence)630 3652 y(Indicator)f(\(CSI\),)f(usually)h(ESC-[.)59 b(If)36 b(this)g(sequence)h(is)g(b)s(ound)d(to)k Fs("\\)p -Ft(e[)p Fs(")p Ft(,)g(k)m(eys)f(pro-)630 3280 y(ducing)31 -b(suc)m(h)h(sequences)g(will)h(ha)m(v)m(e)g(no)f(e\013ect)h(unless)e -(explicitly)j(b)s(ound)c(to)i(a)h(readline)630 3389 y(command,)f +Ft(e[)p Fs(")p Ft(,)g(k)m(eys)f(pro-)630 3762 y(ducing)29 +b(suc)m(h)g(sequences)g(will)h(ha)m(v)m(e)h(no)e(e\013ect)i(unless)d +(explicitly)j(b)s(ound)d(to)i(a)f(Readline)630 3871 y(command,)j (instead)g(of)g(inserting)g(stra)m(y)h(c)m(haracters)g(in)m(to)g(the)f -(editing)h(bu\013er.)44 b(This)31 b(is)630 3499 y(un)m(b)s(ound)d(b)m +(editing)h(bu\013er.)44 b(This)31 b(is)630 3981 y(un)m(b)s(ound)d(b)m (y)i(default,)h(but)f(usually)g(b)s(ound)e(to)j(ESC-[.)150 -3674 y Fs(insert-comment)26 b(\(M-#\))630 3784 y Ft(Without)36 +4167 y Fs(insert-comment)26 b(\(M-#\))630 4277 y Ft(Without)36 b(a)g(n)m(umeric)g(argumen)m(t,)h(the)f(v)-5 b(alue)36 b(of)g(the)g Fs(comment-begin)c Ft(v)-5 b(ariable)36 -b(is)g(in-)630 3893 y(serted)c(at)g(the)g(b)s(eginning)f(of)h(the)f +b(is)g(in-)630 4387 y(serted)c(at)g(the)g(b)s(eginning)f(of)h(the)f (curren)m(t)h(line.)45 b(If)31 b(a)h(n)m(umeric)f(argumen)m(t)h(is)g -(supplied,)630 4003 y(this)k(command)h(acts)g(as)g(a)g(toggle:)55 +(supplied,)630 4496 y(this)k(command)h(acts)g(as)g(a)g(toggle:)55 b(if)37 b(the)f(c)m(haracters)i(at)g(the)e(b)s(eginning)g(of)h(the)g -(line)630 4113 y(do)30 b(not)h(matc)m(h)h(the)f(v)-5 +(line)630 4606 y(do)30 b(not)h(matc)m(h)h(the)f(v)-5 b(alue)31 b(of)f Fs(comment-begin)p Ft(,)e(the)i(v)-5 -b(alue)31 b(is)g(inserted,)g(otherwise)g(the)630 4222 +b(alue)31 b(is)g(inserted,)g(otherwise)g(the)630 4715 y(c)m(haracters)42 b(in)d Fs(comment-begin)e Ft(are)j(deleted)h(from)f -(the)g(b)s(eginning)g(of)g(the)g(line.)71 b(In)630 4332 +(the)g(b)s(eginning)g(of)g(the)g(line.)71 b(In)630 4825 y(either)31 b(case,)h(the)e(line)h(is)f(accepted)i(as)f(if)f(a)h -(newline)f(had)g(b)s(een)f(t)m(yp)s(ed.)150 4507 y Fs(dump-functions)d -(\(\))630 4617 y Ft(Prin)m(t)g(all)i(of)e(the)h(functions)f(and)g +(newline)f(had)g(b)s(een)f(t)m(yp)s(ed.)150 5011 y Fs(dump-functions)d +(\(\))630 5121 y Ft(Prin)m(t)g(all)i(of)e(the)h(functions)f(and)g (their)g(k)m(ey)h(bindings)e(to)j(the)e(Readline)h(output)f(stream.)630 -4726 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h +5230 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h (output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a)m(y)g(that)630 -4836 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fj(inputrc)k +5340 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fj(inputrc)k Ft(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c(b)m(y)k -(default.)150 5011 y Fs(dump-variables)26 b(\(\))630 -5121 y Ft(Prin)m(t)21 b(all)h(of)g(the)f(settable)i(v)-5 +(default.)p eop end +%%Page: 25 29 +TeXDict begin 25 28 bop 150 -116 a Ft(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(25)150 299 y Fs(dump-variables)26 +b(\(\))630 408 y Ft(Prin)m(t)21 b(all)h(of)g(the)f(settable)i(v)-5 b(ariables)22 b(and)f(their)g(v)-5 b(alues)22 b(to)g(the)f(Readline)h -(output)f(stream.)630 5230 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is) -g(supplied,)f(the)h(output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a) -m(y)g(that)630 5340 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h +(output)f(stream.)630 518 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g +(supplied,)f(the)h(output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a)m +(y)g(that)630 628 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fj(inputrc)k Ft(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c -(b)m(y)k(default.)p eop end -%%Page: 24 28 -TeXDict begin 24 27 bop 150 -116 a Ft(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(24)150 299 y Fs(dump-macros)27 -b(\(\))630 408 y Ft(Prin)m(t)34 b(all)g(of)g(the)g(Readline)g(k)m(ey)h -(sequences)f(b)s(ound)e(to)i(macros)g(and)f(the)h(strings)g(they)630 -518 y(output.)53 b(If)35 b(a)g(n)m(umeric)f(argumen)m(t)i(is)e +(b)m(y)k(default.)150 787 y Fs(dump-macros)c(\(\))630 +897 y Ft(Prin)m(t)34 b(all)g(of)g(the)g(Readline)g(k)m(ey)h(sequences)f +(b)s(ound)e(to)i(macros)g(and)f(the)h(strings)g(they)630 +1006 y(output.)53 b(If)35 b(a)g(n)m(umeric)f(argumen)m(t)i(is)e (supplied,)h(the)g(output)g(is)f(formatted)i(in)e(suc)m(h)h(a)630 -628 y(w)m(a)m(y)c(that)g(it)f(can)g(b)s(e)g(made)g(part)f(of)i(an)e +1116 y(w)m(a)m(y)c(that)g(it)f(can)g(b)s(e)g(made)g(part)f(of)i(an)e Fj(inputrc)35 b Ft(\014le.)41 b(This)29 b(command)h(is)g(un)m(b)s(ound) -d(b)m(y)630 737 y(default.)150 897 y Fs(emacs-editing-mode)e(\(C-e\)) -630 1006 y Ft(When)30 b(in)g Fs(vi)g Ft(command)g(mo)s(de,)g(this)h +d(b)m(y)630 1225 y(default.)150 1385 y Fs(emacs-editing-mode)e(\(C-e\)) +630 1494 y Ft(When)30 b(in)g Fs(vi)g Ft(command)g(mo)s(de,)g(this)h (causes)f(a)h(switc)m(h)g(to)g Fs(emacs)e Ft(editing)i(mo)s(de.)150 -1166 y Fs(vi-editing-mode)26 b(\(M-C-j\))630 1275 y Ft(When)k(in)g +1654 y Fs(vi-editing-mode)26 b(\(M-C-j\))630 1763 y Ft(When)k(in)g Fs(emacs)f Ft(editing)i(mo)s(de,)f(this)h(causes)f(a)h(switc)m(h)g(to)g -Fs(vi)f Ft(editing)h(mo)s(de.)150 1516 y Fr(1.5)68 b(Readline)47 -b(vi)e(Mo)t(de)150 1675 y Ft(While)32 b(the)g(Readline)g(library)f(do)s +Fs(vi)f Ft(editing)h(mo)s(de.)150 2004 y Fr(1.5)68 b(Readline)47 +b(vi)e(Mo)t(de)150 2164 y Ft(While)32 b(the)g(Readline)g(library)f(do)s (es)g(not)h(ha)m(v)m(e)h(a)f(full)f(set)h(of)g Fs(vi)f Ft(editing)h(functions,)f(it)h(do)s(es)g(con)m(tain)150 -1785 y(enough)i(to)h(allo)m(w)g(simple)f(editing)h(of)f(the)g(line.)52 +2273 y(enough)i(to)h(allo)m(w)g(simple)f(editing)h(of)f(the)g(line.)52 b(The)34 b(Readline)g Fs(vi)g Ft(mo)s(de)f(b)s(eha)m(v)m(es)i(as)f(sp)s -(eci\014ed)f(in)150 1895 y(the)e Fm(posix)e Ft(standard.)275 -2029 y(In)f(order)g(to)i(switc)m(h)g(in)m(teractiv)m(ely)i(b)s(et)m(w)m +(eci\014ed)f(in)150 2383 y(the)e Fm(posix)e Ft(standard.)275 +2517 y(In)f(order)g(to)i(switc)m(h)g(in)m(teractiv)m(ely)i(b)s(et)m(w)m (een)d Fs(emacs)f Ft(and)g Fs(vi)h Ft(editing)g(mo)s(des,)g(use)g(the)g -(command)150 2139 y Fl(M-C-j)36 b Ft(\(b)s(ound)h(to)h +(command)150 2627 y Fl(M-C-j)36 b Ft(\(b)s(ound)h(to)h (emacs-editing-mo)s(de)i(when)d(in)g Fs(vi)h Ft(mo)s(de)f(and)g(to)i -(vi-editing-mo)s(de)g(in)e Fs(emacs)150 2248 y Ft(mo)s(de\).)k(The)30 +(vi-editing-mo)s(de)g(in)e Fs(emacs)150 2736 y Ft(mo)s(de\).)k(The)30 b(Readline)h(default)f(is)g Fs(emacs)f Ft(mo)s(de.)275 -2383 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f(in)g Fs(vi)f +2871 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f(in)g Fs(vi)f Ft(mo)s(de,)h(y)m(ou)h(are)f(already)h(placed)f(in)g(`insertion')g(mo)s -(de,)g(as)h(if)f(y)m(ou)150 2492 y(had)f(t)m(yp)s(ed)g(an)g(`)p +(de,)g(as)h(if)f(y)m(ou)150 2980 y(had)f(t)m(yp)s(ed)g(an)g(`)p Fs(i)p Ft('.)41 b(Pressing)29 b Fs(ESC)f Ft(switc)m(hes)i(y)m(ou)g(in)m (to)h(`command')e(mo)s(de,)h(where)e(y)m(ou)i(can)g(edit)g(the)150 -2602 y(text)35 b(of)f(the)g(line)g(with)f(the)h(standard)f +3090 y(text)35 b(of)f(the)g(line)g(with)f(the)h(standard)f Fs(vi)g Ft(mo)m(v)m(emen)m(t)j(k)m(eys,)g(mo)m(v)m(e)f(to)f(previous)g -(history)f(lines)h(with)150 2711 y(`)p Fs(k)p Ft(')d(and)e(subsequen)m +(history)f(lines)h(with)150 3200 y(`)p Fs(k)p Ft(')d(and)e(subsequen)m (t)h(lines)h(with)f(`)p Fs(j)p Ft(',)g(and)g(so)h(forth.)p eop end -%%Page: 25 29 -TeXDict begin 25 28 bop 3659 -116 a Ft(25)150 299 y Fp(2)80 +%%Page: 26 30 +TeXDict begin 26 29 bop 3659 -116 a Ft(26)150 299 y Fp(2)80 b(Programming)54 b(with)f(GNU)h(Readline)150 543 y Ft(This)24 b(c)m(hapter)i(describ)s(es)e(the)h(in)m(terface)h(b)s(et)m(w)m(een)g (the)f Fm(gnu)f Ft(Readline)i(Library)e(and)g(other)h(programs.)150 @@ -8463,7 +8549,7 @@ b(the)f(line)h(is)f(ended)g(just)g(as)g(if)h(a)f(newline)h(had)150 b(p)s(erforms)e(some)j(expansion)e(on)h(the)g Fj(prompt)h Ft(b)s(efore)f(it)g(is)g(displa)m(y)m(ed)h(on)f(the)g(screen.)38 b(See)150 3336 y(the)27 b(description)g(of)h Fs(rl_expand_prompt)22 -b Ft(\(see)28 b(Section)g(2.4.6)h([Redispla)m(y],)g(page)f(38\))g(for)f +b Ft(\(see)28 b(Section)g(2.4.6)h([Redispla)m(y],)g(page)f(40\))g(for)f (additional)150 3446 y(details,)41 b(esp)s(ecially)f(if)e Fj(prompt)i Ft(will)e(con)m(tain)i(c)m(haracters)f(that)g(do)f(not)h (consume)f(ph)m(ysical)h(screen)150 3556 y(space)31 b(when)e(displa)m @@ -8487,9 +8573,9 @@ b(of)d(no)g(static)i(bu\013er)e(to)h(o)m(v)m(er\015o)m(w:)390 4902 y(/*)g(Read)g(a)g(string,)f(and)h(return)f(a)i(pointer)d(to)j(it.) 533 5011 y(Returns)e(NULL)h(on)g(EOF.)f(*/)390 5121 y(char)h(*)390 5230 y(rl_gets)f(\(\))390 5340 y({)p eop end -%%Page: 26 30 -TeXDict begin 26 29 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(26)485 +%%Page: 27 31 +TeXDict begin 27 30 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(27)485 299 y Fs(/*)48 b(If)f(the)g(buffer)f(has)h(already)f(been)g(allocated,) 629 408 y(return)g(the)h(memory)f(to)h(the)g(free)f(pool.)h(*/)485 518 y(if)h(\(line_read\))581 628 y({)676 737 y(free)f(\(line_read\);) @@ -8526,7 +8612,7 @@ g(func-)150 3663 y(tion)33 b(called)h Fs(initialize_readline\(\))27 b Ft(whic)m(h)33 b(p)s(erforms)e(this)h(and)h(other)g(desired)f (initializations,)150 3773 y(suc)m(h)e(as)h(installing)g(custom)g (completers)g(\(see)g(Section)h(2.6)f([Custom)f(Completers],)h(page)g -(51\).)150 4023 y Fr(2.2)68 b(Custom)45 b(F)-11 b(unctions)150 +(53\).)150 4023 y Fr(2.2)68 b(Custom)45 b(F)-11 b(unctions)150 4182 y Ft(Readline)28 b(pro)m(vides)f(man)m(y)g(functions)g(for)g (manipulating)h(the)f(text)h(of)g(the)f(line,)i(but)d(it)i(isn't)f(p)s (ossible)150 4292 y(to)37 b(an)m(ticipate)i(the)e(needs)f(of)h(all)g @@ -8549,9 +8635,9 @@ g(v)-5 b(ariable)31 b(that)g(should)f(b)s(e)g(treated)h(as)g(an)g(in)m (teger,)h Fs(RL_)150 5340 y(READLINE_VERSION)p Ft(,)20 b(whic)m(h)h(ma)m(y)i(b)s(e)f(used)f(to)i(conditionally)h(compile)f (application)g(co)s(de)f(dep)s(ending)p eop end -%%Page: 27 31 -TeXDict begin 27 30 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(27)150 +%%Page: 28 32 +TeXDict begin 28 31 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(28)150 299 y(on)35 b(the)g(installed)h(Readline)f(v)m(ersion.)56 b(The)34 b(v)-5 b(alue)35 b(is)h(a)f(hexadecimal)h(enco)s(ding)f(of)g (the)h(ma)5 b(jor)35 b(and)150 408 y(minor)f(v)m(ersion)g(n)m(um)m(b)s @@ -8611,2200 +8697,2274 @@ y(of)h(the)f(line)h(read)f(so)h(far.)275 5196 y(The)e(calling)j (sequence)f(for)f(a)h(command)f Fs(foo)g Ft(lo)s(oks)g(lik)m(e)390 5340 y Fs(int)47 b(foo)g(\(int)f(count,)h(int)f(key\))p eop end -%%Page: 28 32 -TeXDict begin 28 31 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(28)150 +%%Page: 29 33 +TeXDict begin 29 32 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(29)150 299 y(where)35 b Fj(coun)m(t)k Ft(is)d(the)g(n)m(umeric)g(argumen)m(t)g (\(or)g(1)g(if)g(defaulted\))h(and)e Fj(k)m(ey)44 b Ft(is)36 b(the)g(k)m(ey)h(that)f(in)m(v)m(ok)m(ed)150 408 y(this)30 -b(function.)275 551 y(It)23 b(is)g(completely)h(up)e(to)i(the)f +b(function.)275 541 y(It)23 b(is)g(completely)h(up)e(to)i(the)f (function)g(as)g(to)h(what)f(should)f(b)s(e)h(done)f(with)h(the)g(n)m -(umeric)g(argumen)m(t.)150 661 y(Some)40 b(functions)g(use)f(it)i(as)f +(umeric)g(argumen)m(t.)150 650 y(Some)40 b(functions)g(use)f(it)i(as)f (a)g(rep)s(eat)h(coun)m(t,)i(some)d(as)h(a)f(\015ag,)j(and)c(others)h -(to)h(c)m(ho)s(ose)g(alternate)150 770 y(b)s(eha)m(vior)i(\(refreshing) +(to)h(c)m(ho)s(ose)g(alternate)150 760 y(b)s(eha)m(vior)i(\(refreshing) g(the)h(curren)m(t)f(line)h(as)f(opp)s(osed)g(to)h(refreshing)e(the)i -(screen,)j(for)c(example\).)150 880 y(Some)33 b(c)m(ho)s(ose)h(to)g +(screen,)j(for)c(example\).)150 870 y(Some)33 b(c)m(ho)s(ose)h(to)g (ignore)g(it.)50 b(In)32 b(general,)j(if)f(a)f(function)g(uses)g(the)g -(n)m(umeric)g(argumen)m(t)h(as)f(a)h(rep)s(eat)150 989 +(n)m(umeric)g(argumen)m(t)h(as)f(a)h(rep)s(eat)150 979 y(coun)m(t,)29 b(it)g(should)e(b)s(e)g(able)h(to)h(do)f(something)g (useful)f(with)h(b)s(oth)f(negativ)m(e)j(and)d(p)s(ositiv)m(e)i -(argumen)m(ts.)150 1099 y(A)m(t)i(the)g(v)m(ery)g(least,)h(it)e(should) +(argumen)m(ts.)150 1089 y(A)m(t)i(the)g(v)m(ery)g(least,)h(it)e(should) g(b)s(e)g(a)m(w)m(are)h(that)g(it)g(can)g(b)s(e)f(passed)g(a)g(negativ) -m(e)j(argumen)m(t.)275 1242 y(A)38 b(command)f(function)h(should)f +m(e)j(argumen)m(t.)275 1221 y(A)38 b(command)f(function)h(should)f (return)g(0)h(if)g(its)h(action)g(completes)g(successfully)-8 -b(,)41 b(and)c(a)h(v)-5 b(alue)150 1351 y(greater)34 +b(,)41 b(and)c(a)h(v)-5 b(alue)150 1331 y(greater)34 b(than)f(zero)g(if)g(some)h(error)e(o)s(ccurs.)48 b(This)32 b(is)h(the)g(con)m(v)m(en)m(tion)i(ob)s(ey)m(ed)f(b)m(y)e(all)i(of)f -(the)g(builtin)150 1461 y(Readline)e(bindable)f(command)g(functions.) -150 1714 y Fr(2.3)68 b(Readline)47 b(V)-11 b(ariables)150 -1873 y Ft(These)30 b(v)-5 b(ariables)31 b(are)g(a)m(v)-5 -b(ailable)33 b(to)e(function)f(writers.)3371 2074 y([V)-8 +(the)g(builtin)150 1440 y(Readline)e(bindable)f(command)g(functions.) +150 1677 y Fr(2.3)68 b(Readline)47 b(V)-11 b(ariables)150 +1836 y Ft(These)30 b(v)-5 b(ariables)31 b(are)g(a)m(v)-5 +b(ailable)33 b(to)e(function)f(writers.)3371 2014 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e(rl_line_buffer)390 -2183 y Ft(This)30 b(is)i(the)f(line)g(gathered)h(so)f(far.)43 +2123 y Ft(This)30 b(is)i(the)f(line)g(gathered)h(so)f(far.)43 b(Y)-8 b(ou)32 b(are)f(w)m(elcome)i(to)f(mo)s(dify)f(the)g(con)m(ten)m -(ts)i(of)e(the)g(line,)390 2293 y(but)k(see)h(Section)g(2.4.5)h([Allo)m -(wing)h(Undoing],)f(page)f(37.)57 b(The)35 b(function)g -Fs(rl_extend_line_)390 2402 y(buffer)29 b Ft(is)h(a)m(v)-5 +(ts)i(of)e(the)g(line,)390 2233 y(but)k(see)h(Section)g(2.4.5)h([Allo)m +(wing)h(Undoing],)f(page)f(39.)57 b(The)35 b(function)g +Fs(rl_extend_line_)390 2342 y(buffer)29 b Ft(is)h(a)m(v)-5 b(ailable)33 b(to)e(increase)g(the)g(memory)f(allo)s(cated)i(to)f -Fs(rl_line_buffer)p Ft(.)3371 2603 y([V)-8 b(ariable])-3598 -b Fh(int)53 b(rl_point)390 2712 y Ft(The)30 b(o\013set)h(of)g(the)f +Fs(rl_line_buffer)p Ft(.)3371 2520 y([V)-8 b(ariable])-3598 +b Fh(int)53 b(rl_point)390 2630 y Ft(The)30 b(o\013set)h(of)g(the)f (curren)m(t)h(cursor)e(p)s(osition)i(in)f Fs(rl_line_buffer)c -Ft(\(the)31 b Fk(p)-5 b(oint)9 b Ft(\).)3371 2913 y([V)-8 -b(ariable])-3598 b Fh(int)53 b(rl_end)390 3022 y Ft(The)27 +Ft(\(the)31 b Fk(p)-5 b(oint)9 b Ft(\).)3371 2808 y([V)-8 +b(ariable])-3598 b Fh(int)53 b(rl_end)390 2917 y Ft(The)27 b(n)m(um)m(b)s(er)g(of)h(c)m(haracters)h(presen)m(t)f(in)g Fs(rl_line_buffer)p Ft(.)36 b(When)27 b Fs(rl_point)f -Ft(is)i(at)h(the)f(end)390 3132 y(of)j(the)f(line,)h +Ft(is)i(at)h(the)f(end)390 3027 y(of)j(the)f(line,)h Fs(rl_point)d Ft(and)i Fs(rl_end)f Ft(are)h(equal.)3371 -3333 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_mark)390 -3442 y Ft(The)36 b Fj(mark)42 b Ft(\(sa)m(v)m(ed)d(p)s(osition\))e(in)g +3204 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_mark)390 +3314 y Ft(The)36 b Fj(mark)42 b Ft(\(sa)m(v)m(ed)d(p)s(osition\))e(in)g (the)g(curren)m(t)f(line.)61 b(If)36 b(set,)k(the)d(mark)f(and)h(p)s -(oin)m(t)f(de\014ne)h(a)390 3552 y Fk(r)-5 b(e)g(gion)p -Ft(.)3371 3752 y([V)d(ariable])-3598 b Fh(int)53 b(rl_done)390 -3862 y Ft(Setting)22 b(this)g(to)g(a)g(non-zero)g(v)-5 +(oin)m(t)f(de\014ne)h(a)390 3424 y Fk(r)-5 b(e)g(gion)p +Ft(.)3371 3601 y([V)d(ariable])-3598 b Fh(int)53 b(rl_done)390 +3711 y Ft(Setting)22 b(this)g(to)g(a)g(non-zero)g(v)-5 b(alue)23 b(causes)f(Readline)g(to)g(return)f(the)h(curren)m(t)f(line)h -(immediately)-8 b(.)3371 4062 y([V)g(ariable])-3598 b -Fh(int)53 b(rl_num_chars_to_read)390 4172 y Ft(Setting)34 +(immediately)-8 b(.)390 3820 y(Readline)26 b(will)f(set)h(this)f(v)-5 +b(ariable)26 b(when)e(it)i(has)f(read)g(a)g(k)m(ey)h(sequence)g(b)s +(ound)d(to)j Fs(accept-line)390 3930 y Ft(and)k(is)g(ab)s(out)g(to)h +(return)f(the)g(line)h(to)g(the)g(caller.)3371 4108 y([V)-8 +b(ariable])-3598 b Fh(int)53 b(rl_eof_found)390 4217 +y Ft(Readline)28 b(will)g(set)g(this)f(v)-5 b(ariable)28 +b(when)e(it)i(has)f(read)g(an)h(EOF)f(c)m(haracter)i(\(e.g.,)h(the)d +(stt)m(y)h(`)p Fs(EOF)p Ft(')390 4327 y(c)m(haracter\))42 +b(on)e(an)f(empt)m(y)i(line)f(or)g(encoun)m(tered)g(a)g(read)g(error)f +(and)h(is)g(ab)s(out)f(to)i(return)e(a)390 4437 y(NULL)30 +b(line)h(to)g(the)g(caller.)3371 4614 y([V)-8 b(ariable])-3598 +b Fh(int)53 b(rl_num_chars_to_read)390 4724 y Ft(Setting)34 b(this)e(to)i(a)f(p)s(ositiv)m(e)h(v)-5 b(alue)34 b(b)s(efore)e (calling)i Fs(readline\(\))d Ft(causes)i(Readline)g(to)h(return)390 -4281 y(after)i(accepting)h(that)g(man)m(y)e(c)m(haracters,)k(rather)d +4833 y(after)i(accepting)h(that)g(man)m(y)e(c)m(haracters,)k(rather)d (than)f(reading)h(up)e(to)j(a)f(c)m(haracter)h(b)s(ound)390 -4391 y(to)31 b Fs(accept-line)p Ft(.)3371 4592 y([V)-8 -b(ariable])-3598 b Fh(int)53 b(rl_pending_input)390 4701 +4943 y(to)31 b Fs(accept-line)p Ft(.)3371 5121 y([V)-8 +b(ariable])-3598 b Fh(int)53 b(rl_pending_input)390 5230 y Ft(Setting)26 b(this)f(to)h(a)f(v)-5 b(alue)26 b(mak)m(es)g(it)g(the) f(next)g(k)m(eystrok)m(e)i(read.)39 b(This)24 b(is)i(a)f(w)m(a)m(y)h -(to)g(stu\013)f(a)g(single)390 4811 y(c)m(haracter)32 -b(in)m(to)f(the)g(input)e(stream.)3371 5011 y([V)-8 b(ariable])-3598 -b Fh(int)53 b(rl_dispatching)390 5121 y Ft(Set)24 b(to)h(a)g(non-zero)g -(v)-5 b(alue)24 b(if)h(a)f(function)g(is)g(b)s(eing)g(called)i(from)d -(a)i(k)m(ey)g(binding;)g(zero)g(otherwise.)390 5230 y(Application)37 +(to)g(stu\013)f(a)g(single)390 5340 y(c)m(haracter)32 +b(in)m(to)f(the)g(input)e(stream.)p eop end +%%Page: 30 34 +TeXDict begin 30 33 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(30)3371 +299 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_dispatching)390 +408 y Ft(Set)24 b(to)h(a)g(non-zero)g(v)-5 b(alue)24 +b(if)h(a)f(function)g(is)g(b)s(eing)g(called)i(from)d(a)i(k)m(ey)g +(binding;)g(zero)g(otherwise.)390 518 y(Application)37 b(functions)e(can)h(test)h(this)e(to)i(disco)m(v)m(er)g(whether)e(they) -h(w)m(ere)g(called)h(directly)f(or)390 5340 y(b)m(y)30 -b(Readline's)h(dispatc)m(hing)g(mec)m(hanism.)p eop end -%%Page: 29 33 -TeXDict begin 29 32 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(29)3371 -299 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_erase_empty_line)390 -408 y Ft(Setting)47 b(this)e(to)i(a)f(non-zero)h(v)-5 +h(w)m(ere)g(called)h(directly)f(or)390 628 y(b)m(y)30 +b(Readline's)h(dispatc)m(hing)g(mec)m(hanism.)3371 835 +y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_erase_empty_line)390 +944 y Ft(Setting)47 b(this)e(to)i(a)f(non-zero)h(v)-5 b(alue)46 b(causes)h(Readline)f(to)h(completely)g(erase)g(the)f(curren) -m(t)390 518 y(line,)f(including)c(an)m(y)g(prompt,)j(an)m(y)d(time)h(a) -g(newline)f(is)h(t)m(yp)s(ed)f(as)g(the)h(only)f(c)m(haracter)i(on)390 -628 y(an)36 b(otherwise-empt)m(y)i(line.)58 b(The)36 +m(t)390 1054 y(line,)f(including)c(an)m(y)g(prompt,)j(an)m(y)d(time)h +(a)g(newline)f(is)h(t)m(yp)s(ed)f(as)g(the)h(only)f(c)m(haracter)i(on) +390 1163 y(an)36 b(otherwise-empt)m(y)i(line.)58 b(The)36 b(cursor)g(is)g(mo)m(v)m(ed)h(to)g(the)g(b)s(eginning)e(of)i(the)f -(newly-blank)390 737 y(line.)3371 913 y([V)-8 b(ariable])-3598 -b Fh(char)54 b(*)e(rl_prompt)390 1022 y Ft(The)26 b(prompt)f(Readline)i +(newly-blank)390 1273 y(line.)3371 1480 y([V)-8 b(ariable])-3598 +b Fh(char)54 b(*)e(rl_prompt)390 1590 y Ft(The)26 b(prompt)f(Readline)i (uses.)38 b(This)26 b(is)g(set)h(from)e(the)i(argumen)m(t)f(to)h -Fs(readline\(\))p Ft(,)d(and)i(should)390 1132 y(not)h(b)s(e)f +Fs(readline\(\))p Ft(,)d(and)i(should)390 1699 y(not)h(b)s(e)f (assigned)h(to)h(directly)-8 b(.)41 b(The)26 b Fs(rl_set_prompt\(\))d -Ft(function)j(\(see)i(Section)g(2.4.6)h([Redis-)390 1241 -y(pla)m(y],)i(page)h(38\))f(ma)m(y)g(b)s(e)f(used)f(to)j(mo)s(dify)d +Ft(function)j(\(see)i(Section)g(2.4.6)h([Redis-)390 1809 +y(pla)m(y],)i(page)h(40\))f(ma)m(y)g(b)s(e)f(used)f(to)j(mo)s(dify)d (the)i(prompt)e(string)h(after)h(calling)h Fs(readline\(\))p -Ft(.)3371 1417 y([V)-8 b(ariable])-3598 b Fh(char)54 -b(*)e(rl_display_prompt)390 1526 y Ft(The)31 b(string)h(displa)m(y)m +Ft(.)3371 2016 y([V)-8 b(ariable])-3598 b Fh(char)54 +b(*)e(rl_display_prompt)390 2125 y Ft(The)31 b(string)h(displa)m(y)m (ed)g(as)g(the)g(prompt.)44 b(This)31 b(is)h(usually)f(iden)m(tical)j -(to)e Fj(rl)p 3031 1526 28 4 v 40 w(prompt)p Ft(,)f(but)g(ma)m(y)390 -1636 y(b)s(e)j(c)m(hanged)g(temp)s(orarily)h(b)m(y)f(functions)g(that)g +(to)e Fj(rl)p 3031 2125 28 4 v 40 w(prompt)p Ft(,)f(but)g(ma)m(y)390 +2235 y(b)s(e)j(c)m(hanged)g(temp)s(orarily)h(b)m(y)f(functions)g(that)g (use)g(the)h(prompt)e(string)h(as)h(a)f(message)i(area,)390 -1745 y(suc)m(h)30 b(as)h(incremen)m(tal)g(searc)m(h.)3371 -1921 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_already_prompted)390 -2030 y Ft(If)36 b(an)g(application)i(wishes)d(to)i(displa)m(y)g(the)f +2345 y(suc)m(h)30 b(as)h(incremen)m(tal)g(searc)m(h.)3371 +2552 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_already_prompted)390 +2661 y Ft(If)36 b(an)g(application)i(wishes)d(to)i(displa)m(y)g(the)f (prompt)g(itself,)i(rather)f(than)f(ha)m(v)m(e)h(Readline)g(do)390 -2140 y(it)c(the)g(\014rst)f(time)i Fs(readline\(\))c +2771 y(it)c(the)g(\014rst)f(time)i Fs(readline\(\))c Ft(is)i(called,)j(it)e(should)f(set)h(this)g(v)-5 b(ariable)34 -b(to)f(a)g(non-zero)g(v)-5 b(alue)390 2250 y(after)38 +b(to)f(a)g(non-zero)g(v)-5 b(alue)390 2880 y(after)38 b(displa)m(ying)h(the)f(prompt.)63 b(The)37 b(prompt)g(m)m(ust)h(also)h -(b)s(e)e(passed)g(as)i(the)f(argumen)m(t)g(to)390 2359 +(b)s(e)e(passed)g(as)i(the)f(argumen)m(t)g(to)390 2990 y Fs(readline\(\))30 b Ft(so)j(the)h(redispla)m(y)f(functions)f(can)i (up)s(date)e(the)h(displa)m(y)g(prop)s(erly)-8 b(.)48 -b(The)32 b(calling)390 2469 y(application)g(is)e(resp)s(onsible)g(for)g +b(The)32 b(calling)390 3099 y(application)g(is)e(resp)s(onsible)g(for)g (managing)h(the)f(v)-5 b(alue;)31 b(Readline)g(nev)m(er)g(sets)g(it.) -3371 2644 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g -(rl_library_version)390 2754 y Ft(The)30 b(v)m(ersion)h(n)m(um)m(b)s +3371 3306 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g +(rl_library_version)390 3416 y Ft(The)30 b(v)m(ersion)h(n)m(um)m(b)s (er)e(of)h(this)h(revision)f(of)h(the)f(library)-8 b(.)3371 -2929 y([V)g(ariable])-3598 b Fh(int)53 b(rl_readline_version)390 -3039 y Ft(An)34 b(in)m(teger)h(enco)s(ding)f(the)g(curren)m(t)g(v)m +3623 y([V)g(ariable])-3598 b Fh(int)53 b(rl_readline_version)390 +3733 y Ft(An)34 b(in)m(teger)h(enco)s(ding)f(the)g(curren)m(t)g(v)m (ersion)h(of)f(the)g(library)-8 b(.)52 b(The)34 b(enco)s(ding)g(is)g -(of)g(the)g(form)390 3148 y(0x)p Fj(MMmm)p Ft(,)39 b(where)d +(of)g(the)g(form)390 3842 y(0x)p Fj(MMmm)p Ft(,)39 b(where)d Fj(MM)47 b Ft(is)36 b(the)h(t)m(w)m(o-digit)i(ma)5 b(jor)36 b(v)m(ersion)h(n)m(um)m(b)s(er,)g(and)f Fj(mm)g Ft(is)h(the)f(t)m(w)m -(o-)390 3258 y(digit)i(minor)f(v)m(ersion)h(n)m(um)m(b)s(er.)60 +(o-)390 3952 y(digit)i(minor)f(v)m(ersion)h(n)m(um)m(b)s(er.)60 b(F)-8 b(or)38 b(example,)i(for)d(Readline-4.2,)k Fs -(rl_readline_version)390 3367 y Ft(w)m(ould)30 b(ha)m(v)m(e)i(the)e(v) --5 b(alue)31 b(0x0402.)3371 3543 y([V)-8 b(ariable])-3598 -b Fh(int)53 b(rl_gnu_readline_p)390 3652 y Ft(Alw)m(a)m(ys)32 +(rl_readline_version)390 4061 y Ft(w)m(ould)30 b(ha)m(v)m(e)i(the)e(v) +-5 b(alue)31 b(0x0402.)3371 4268 y([V)-8 b(ariable])-3598 +b Fh(int)53 b(rl_gnu_readline_p)390 4378 y Ft(Alw)m(a)m(ys)32 b(set)f(to)g(1,)g(denoting)f(that)h(this)g(is)f Fm(gnu)g -Ft(readline)h(rather)f(than)g(some)h(em)m(ulation.)3371 -3828 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g -(rl_terminal_name)390 3937 y Ft(The)28 b(terminal)g(t)m(yp)s(e,)h(used) +Ft(Readline)h(rather)f(than)h(some)f(em)m(ulation.)3371 +4585 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g +(rl_terminal_name)390 4695 y Ft(The)28 b(terminal)g(t)m(yp)s(e,)h(used) e(for)h(initialization.)43 b(If)28 b(not)g(set)h(b)m(y)e(the)i -(application,)h(Readline)f(sets)390 4047 y(this)h(to)h(the)g(v)-5 +(application,)h(Readline)f(sets)390 4804 y(this)h(to)h(the)g(v)-5 b(alue)31 b(of)f(the)h Fs(TERM)e Ft(en)m(vironmen)m(t)i(v)-5 b(ariable)31 b(the)g(\014rst)e(time)j(it)e(is)h(called.)3371 -4222 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g -(rl_readline_name)390 4332 y Ft(This)30 b(v)-5 b(ariable)32 +5011 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g +(rl_readline_name)390 5121 y Ft(This)30 b(v)-5 b(ariable)32 b(is)g(set)f(to)h(a)g(unique)e(name)h(b)m(y)g(eac)m(h)i(application)f -(using)f(Readline.)44 b(The)30 b(v)-5 b(alue)390 4441 +(using)f(Readline.)44 b(The)30 b(v)-5 b(alue)390 5230 y(allo)m(ws)29 b(conditional)h(parsing)d(of)h(the)h(inputrc)e(\014le)h (\(see)h(Section)g(1.3.2)g([Conditional)g(Init)f(Con-)390 -4551 y(structs],)j(page)g(12\).)3371 4726 y([V)-8 b(ariable])-3598 -b Fh(FILE)54 b(*)e(rl_instream)390 4836 y Ft(The)40 b(stdio)i(stream)f -(from)g(whic)m(h)f(Readline)i(reads)f(input.)71 b(If)41 -b Fs(NULL)p Ft(,)i(Readline)e(defaults)g(to)390 4945 -y Fj(stdin)p Ft(.)3371 5121 y([V)-8 b(ariable])-3598 -b Fh(FILE)54 b(*)e(rl_outstream)390 5230 y Ft(The)34 -b(stdio)h(stream)f(to)i(whic)m(h)e(Readline)h(p)s(erforms)e(output.)52 +5340 y(structs],)j(page)g(13\).)p eop end +%%Page: 31 35 +TeXDict begin 31 34 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(31)3371 +299 y([V)-8 b(ariable])-3598 b Fh(FILE)54 b(*)e(rl_instream)390 +408 y Ft(The)40 b(stdio)i(stream)f(from)g(whic)m(h)f(Readline)i(reads)f +(input.)71 b(If)41 b Fs(NULL)p Ft(,)i(Readline)e(defaults)g(to)390 +518 y Fj(stdin)p Ft(.)3371 704 y([V)-8 b(ariable])-3598 +b Fh(FILE)54 b(*)e(rl_outstream)390 814 y Ft(The)34 b(stdio)h(stream)f +(to)i(whic)m(h)e(Readline)h(p)s(erforms)e(output.)52 b(If)34 b Fs(NULL)p Ft(,)h(Readline)g(defaults)f(to)390 -5340 y Fj(stdout)p Ft(.)p eop end -%%Page: 30 34 -TeXDict begin 30 33 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(30)3371 -299 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_prefer_env_winsize)390 -408 y Ft(If)28 b(non-zero,)h(Readline)g(giv)m(es)h(v)-5 -b(alues)29 b(found)e(in)h(the)g Fs(LINES)f Ft(and)h Fs(COLUMNS)e -Ft(en)m(vironmen)m(t)j(v)-5 b(ari-)390 518 y(ables)41 -b(greater)h(precedence)g(than)e(v)-5 b(alues)41 b(fetc)m(hed)h(from)e -(the)h(k)m(ernel)h(when)e(computing)h(the)390 628 y(screen)30 -b(dimensions.)3371 847 y([V)-8 b(ariable])-3598 b Fh(rl_command_func_t) -57 b(*)c(rl_last_func)390 956 y Ft(The)34 b(address)g(of)h(the)g(last)h -(command)e(function)g(Readline)i(executed.)55 b(Ma)m(y)35 -b(b)s(e)g(used)f(to)h(test)390 1066 y(whether)30 b(or)g(not)h(a)f -(function)h(is)f(b)s(eing)g(executed)h(t)m(wice)h(in)e(succession,)h -(for)f(example.)3371 1285 y([V)-8 b(ariable])-3598 b -Fh(rl_hook_func_t)57 b(*)52 b(rl_startup_hook)390 1395 -y Ft(If)34 b(non-zero,)i(this)e(is)h(the)f(address)f(of)i(a)g(function) -f(to)h(call)g(just)f(b)s(efore)g Fs(readline)e Ft(prin)m(ts)i(the)390 -1504 y(\014rst)c(prompt.)3371 1724 y([V)-8 b(ariable])-3598 -b Fh(rl_hook_func_t)57 b(*)52 b(rl_pre_input_hook)390 -1833 y Ft(If)35 b(non-zero,)j(this)d(is)g(the)h(address)f(of)g(a)h -(function)f(to)i(call)f(after)g(the)g(\014rst)f(prompt)f(has)i(b)s(een) -390 1943 y(prin)m(ted)30 b(and)g(just)f(b)s(efore)h Fs(readline)f -Ft(starts)h(reading)h(input)e(c)m(haracters.)3371 2162 +924 y Fj(stdout)p Ft(.)3371 1110 y([V)-8 b(ariable])-3598 +b Fh(int)53 b(rl_prefer_env_winsize)390 1219 y Ft(If)28 +b(non-zero,)h(Readline)g(giv)m(es)h(v)-5 b(alues)29 b(found)e(in)h(the) +g Fs(LINES)f Ft(and)h Fs(COLUMNS)e Ft(en)m(vironmen)m(t)j(v)-5 +b(ari-)390 1329 y(ables)41 b(greater)h(precedence)g(than)e(v)-5 +b(alues)41 b(fetc)m(hed)h(from)e(the)h(k)m(ernel)h(when)e(computing)h +(the)390 1439 y(screen)30 b(dimensions.)3371 1625 y([V)-8 +b(ariable])-3598 b Fh(rl_command_func_t)57 b(*)c(rl_last_func)390 +1734 y Ft(The)34 b(address)g(of)h(the)g(last)h(command)e(function)g +(Readline)i(executed.)55 b(Ma)m(y)35 b(b)s(e)g(used)f(to)h(test)390 +1844 y(whether)30 b(or)g(not)h(a)f(function)h(is)f(b)s(eing)g(executed) +h(t)m(wice)h(in)e(succession,)h(for)f(example.)3371 2030 y([V)-8 b(ariable])-3598 b Fh(rl_hook_func_t)57 b(*)52 -b(rl_event_hook)390 2271 y Ft(If)40 b(non-zero,)k(this)d(is)f(the)h -(address)f(of)h(a)g(function)f(to)h(call)h(p)s(erio)s(dically)f(when)f -(Readline)h(is)390 2381 y(w)m(aiting)30 b(for)f(terminal)h(input.)39 -b(By)30 b(default,)g(this)f(will)g(b)s(e)g(called)h(at)g(most)f(ten)h -(times)f(a)h(second)390 2491 y(if)g(there)h(is)f(no)h(k)m(eyb)s(oard)f -(input.)3371 2710 y([V)-8 b(ariable])-3598 b Fh(rl_getc_func_t)57 -b(*)52 b(rl_getc_function)390 2819 y Ft(If)30 b(non-zero,)h(Readline)g +b(rl_startup_hook)390 2140 y Ft(If)34 b(non-zero,)i(this)e(is)h(the)f +(address)f(of)i(a)g(function)f(to)h(call)g(just)f(b)s(efore)g +Fs(readline)e Ft(prin)m(ts)i(the)390 2250 y(\014rst)c(prompt.)3371 +2436 y([V)-8 b(ariable])-3598 b Fh(rl_hook_func_t)57 +b(*)52 b(rl_pre_input_hook)390 2545 y Ft(If)35 b(non-zero,)j(this)d(is) +g(the)h(address)f(of)g(a)h(function)f(to)i(call)f(after)g(the)g +(\014rst)f(prompt)f(has)i(b)s(een)390 2655 y(prin)m(ted)30 +b(and)g(just)f(b)s(efore)h Fs(readline)f Ft(starts)h(reading)h(input)e +(c)m(haracters.)3371 2841 y([V)-8 b(ariable])-3598 b +Fh(rl_hook_func_t)57 b(*)52 b(rl_event_hook)390 2951 +y Ft(If)40 b(non-zero,)k(this)d(is)f(the)h(address)f(of)h(a)g(function) +f(to)h(call)h(p)s(erio)s(dically)f(when)f(Readline)h(is)390 +3061 y(w)m(aiting)30 b(for)f(terminal)h(input.)39 b(By)30 +b(default,)g(this)f(will)g(b)s(e)g(called)h(at)g(most)f(ten)h(times)f +(a)h(second)390 3170 y(if)g(there)h(is)f(no)h(k)m(eyb)s(oard)f(input.) +3371 3356 y([V)-8 b(ariable])-3598 b Fh(rl_getc_func_t)57 +b(*)52 b(rl_getc_function)390 3466 y Ft(If)30 b(non-zero,)h(Readline)g (will)g(call)h(indirectly)e(through)g(this)h(p)s(oin)m(ter)f(to)h(get)h -(a)e(c)m(haracter)i(from)390 2929 y(the)21 b(input)g(stream.)38 +(a)e(c)m(haracter)i(from)390 3576 y(the)21 b(input)g(stream.)38 b(By)21 b(default,)j(it)e(is)f(set)h(to)g Fs(rl_getc)p Ft(,)f(the)h(default)f(Readline)h(c)m(haracter)h(input)390 -3039 y(function)f(\(see)i(Section)g(2.4.8)g([Character)g(Input],)f -(page)h(40\).)39 b(In)22 b(general,)k(an)c(application)i(that)390 -3148 y(sets)31 b Fj(rl)p 635 3148 28 4 v 40 w(getc)p -835 3148 V 41 w(function)f Ft(should)g(consider)g(setting)h -Fj(rl)p 2234 3148 V 40 w(input)p 2487 3148 V 39 w(a)m(v)-5 -b(ailable)p 2867 3148 V 43 w(ho)s(ok)36 b Ft(as)30 b(w)m(ell.)3371 -3367 y([V)-8 b(ariable])-3598 b Fh(rl_hook_func_t)57 -b(*)52 b(rl_signal_event_hook)390 3477 y Ft(If)27 b(non-zero,)h(this)f +3685 y(function)f(\(see)i(Section)g(2.4.8)g([Character)g(Input],)f +(page)h(42\).)39 b(In)22 b(general,)k(an)c(application)i(that)390 +3795 y(sets)31 b Fj(rl)p 635 3795 28 4 v 40 w(getc)p +835 3795 V 41 w(function)f Ft(should)g(consider)g(setting)h +Fj(rl)p 2234 3795 V 40 w(input)p 2487 3795 V 39 w(a)m(v)-5 +b(ailable)p 2867 3795 V 43 w(ho)s(ok)36 b Ft(as)30 b(w)m(ell.)3371 +3981 y([V)-8 b(ariable])-3598 b Fh(rl_hook_func_t)57 +b(*)52 b(rl_signal_event_hook)390 4091 y Ft(If)27 b(non-zero,)h(this)f (is)g(the)g(address)f(of)i(a)f(function)g(to)g(call)i(if)e(a)g(read)g -(system)g(call)h(is)g(in)m(terrupted)390 3587 y(when)h(Readline)i(is)g -(reading)f(terminal)h(input.)3371 3806 y([V)-8 b(ariable])-3598 +(system)g(call)h(is)g(in)m(terrupted)390 4200 y(when)h(Readline)i(is)g +(reading)f(terminal)h(input.)3371 4387 y([V)-8 b(ariable])-3598 +b Fh(rl_hook_func_t)57 b(*)52 b(rl_timeout_event_hook)390 +4496 y Ft(If)25 b(non-zero,)i(this)e(is)g(the)h(address)e(of)h(a)h +(function)f(to)h(call)g(if)g(Readline)f(times)h(out)g(while)f(reading) +390 4606 y(input.)3371 4792 y([V)-8 b(ariable])-3598 b Fh(rl_hook_func_t)57 b(*)52 b(rl_input_available_ho)q(ok)390 -3915 y Ft(If)28 b(non-zero,)j(Readline)e(will)g(use)g(this)g +4902 y Ft(If)28 b(non-zero,)j(Readline)e(will)g(use)g(this)g (function's)g(return)f(v)-5 b(alue)29 b(when)f(it)i(needs)e(to)i -(determine)390 4025 y(whether)42 b(or)g(not)h(there)f(is)h(a)m(v)-5 +(determine)390 5011 y(whether)42 b(or)g(not)h(there)f(is)h(a)m(v)-5 b(ailable)45 b(input)c(on)i(the)f(curren)m(t)g(input)g(source.)77 -b(The)42 b(default)390 4134 y(ho)s(ok)25 b(c)m(hec)m(ks)i +b(The)42 b(default)390 5121 y(ho)s(ok)25 b(c)m(hec)m(ks)i Fs(rl_instream)p Ft(;)d(if)i(an)f(application)i(is)e(using)g(a)h -(di\013eren)m(t)g(input)e(source,)j(it)f(should)390 4244 +(di\013eren)m(t)g(input)e(source,)j(it)f(should)390 5230 y(set)34 b(the)f(ho)s(ok)h(appropriately)-8 b(.)50 b(Readline)34 b(queries)f(for)h(a)m(v)-5 b(ailable)35 b(input)e(when)f(implemen)m -(ting)390 4354 y(in)m(tra-k)m(ey-sequence)f(timeouts)e(during)e(input)g -(and)h(incremen)m(tal)h(searc)m(hes.)41 b(This)27 b(ma)m(y)i(use)f(an) -390 4463 y(application-sp)s(eci\014c)22 b(timeout)g(b)s(efore)f -(returning)f(a)h(v)-5 b(alue;)25 b(Readline)c(uses)f(the)i(v)-5 -b(alue)21 b(passed)f(to)390 4573 y Fs(rl_set_keyboard_input_ti)o(meou)o -(t\(\))e Ft(or)24 b(the)g(v)-5 b(alue)25 b(of)g(the)f(user-settable)i -Fj(k)m(eyseq-timeout)390 4682 y Ft(v)-5 b(ariable.)48 +(ting)390 5340 y(in)m(tra-k)m(ey-sequence)f(timeouts)e(during)e(input)g +(and)h(incremen)m(tal)h(searc)m(hes.)41 b(This)27 b(ma)m(y)i(use)f(an)p +eop end +%%Page: 32 36 +TeXDict begin 32 35 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(32)390 +299 y(application-sp)s(eci\014c)22 b(timeout)g(b)s(efore)f(returning)f +(a)h(v)-5 b(alue;)25 b(Readline)c(uses)f(the)i(v)-5 b(alue)21 +b(passed)f(to)390 408 y Fs(rl_set_keyboard_input_ti)o(meou)o(t\(\))e +Ft(or)24 b(the)g(v)-5 b(alue)25 b(of)g(the)f(user-settable)i +Fj(k)m(eyseq-timeout)390 518 y Ft(v)-5 b(ariable.)48 b(This)31 b(is)i(designed)f(for)g(use)g(b)m(y)g(applications)i(using)e -(Readline's)h(callbac)m(k)h(in)m(terface)390 4792 y(\(see)d(Section)f -(2.4.12)i([Alternate)f(In)m(terface],)h(page)e(44\),)i(whic)m(h)d(ma)m -(y)h(not)g(use)g(the)g(traditional)390 4902 y Fs(read\(2\))39 +(Readline's)h(callbac)m(k)h(in)m(terface)390 628 y(\(see)d(Section)f +(2.4.12)i([Alternate)f(In)m(terface],)h(page)e(46\),)i(whic)m(h)d(ma)m +(y)h(not)g(use)g(the)g(traditional)390 737 y Fs(read\(2\))39 b Ft(and)g(\014le)i(descriptor)f(in)m(terface,)45 b(or)c(other)f (applications)i(using)e(a)h(di\013eren)m(t)g(input)390 -5011 y(mec)m(hanism.)k(If)31 b(an)g(application)i(uses)e(an)h(input)e +847 y(mec)m(hanism.)k(If)31 b(an)g(application)i(uses)e(an)h(input)e (mec)m(hanism)i(or)g(ho)s(ok)f(that)h(can)g(p)s(oten)m(tially)390 -5121 y(exceed)38 b(the)e(v)-5 b(alue)37 b(of)g Fj(k)m(eyseq-timeout)p +956 y(exceed)38 b(the)e(v)-5 b(alue)37 b(of)g Fj(k)m(eyseq-timeout)p Ft(,)k(it)c(should)e(increase)j(the)e(timeout)i(or)f(set)g(this)f(ho)s -(ok)390 5230 y(appropriately)d(ev)m(en)g(when)e(not)h(using)g(the)h +(ok)390 1066 y(appropriately)d(ev)m(en)g(when)e(not)h(using)g(the)h (callbac)m(k)h(in)m(terface.)48 b(In)31 b(general,)j(an)f(application) -390 5340 y(that)e(sets)g Fj(rl)p 832 5340 V 40 w(getc)p -1032 5340 V 41 w(function)f Ft(should)g(consider)g(setting)h -Fj(rl)p 2431 5340 V 40 w(input)p 2684 5340 V 39 w(a)m(v)-5 -b(ailable)p 3064 5340 V 43 w(ho)s(ok)36 b Ft(as)30 b(w)m(ell.)p -eop end -%%Page: 31 35 -TeXDict begin 31 34 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(31)3371 -299 y([V)-8 b(ariable])-3598 b Fh(rl_voidfunc_t)56 b(*)d -(rl_redisplay_function)390 408 y Ft(If)36 b(non-zero,)i(Readline)e +390 1176 y(that)e(sets)g Fj(rl)p 832 1176 28 4 v 40 w(getc)p +1032 1176 V 41 w(function)f Ft(should)g(consider)g(setting)h +Fj(rl)p 2431 1176 V 40 w(input)p 2684 1176 V 39 w(a)m(v)-5 +b(ailable)p 3064 1176 V 43 w(ho)s(ok)36 b Ft(as)30 b(w)m(ell.)3371 +1362 y([V)-8 b(ariable])-3598 b Fh(rl_voidfunc_t)56 b(*)d +(rl_redisplay_function)390 1471 y Ft(If)36 b(non-zero,)i(Readline)e (will)h(call)g(indirectly)f(through)g(this)g(p)s(oin)m(ter)g(to)g(up)s -(date)g(the)g(displa)m(y)390 518 y(with)27 b(the)g(curren)m(t)g(con)m +(date)g(the)g(displa)m(y)390 1581 y(with)27 b(the)g(curren)m(t)g(con)m (ten)m(ts)h(of)f(the)h(editing)f(bu\013er.)39 b(By)27 b(default,)h(it)g(is)f(set)g(to)h Fs(rl_redisplay)p Ft(,)390 -628 y(the)j(default)f(Readline)h(redispla)m(y)g(function)f(\(see)h -(Section)g(2.4.6)h([Redispla)m(y],)g(page)f(38\).)3371 -817 y([V)-8 b(ariable])-3598 b Fh(rl_vintfunc_t)56 b(*)d -(rl_prep_term_function)390 927 y Ft(If)24 b(non-zero,)i(Readline)e +1691 y(the)j(default)f(Readline)h(redispla)m(y)g(function)f(\(see)h +(Section)g(2.4.6)h([Redispla)m(y],)g(page)f(40\).)3371 +1877 y([V)-8 b(ariable])-3598 b Fh(rl_vintfunc_t)56 b(*)d +(rl_prep_term_function)390 1987 y Ft(If)24 b(non-zero,)i(Readline)e (will)h(call)g(indirectly)g(through)e(this)h(p)s(oin)m(ter)g(to)h -(initialize)h(the)e(terminal.)390 1036 y(The)37 b(function)f(tak)m(es)j +(initialize)h(the)e(terminal.)390 2096 y(The)37 b(function)f(tak)m(es)j (a)e(single)h(argumen)m(t,)i(an)d Fs(int)f Ft(\015ag)h(that)h(sa)m(ys)g -(whether)e(or)h(not)g(to)h(use)390 1146 y(eigh)m(t-bit)e(c)m +(whether)e(or)h(not)g(to)h(use)390 2206 y(eigh)m(t-bit)e(c)m (haracters.)53 b(By)35 b(default,)g(this)f(is)g(set)h(to)g Fs(rl_prep_terminal)29 b Ft(\(see)35 b(Section)g(2.4.9)390 -1255 y([T)-8 b(erminal)31 b(Managemen)m(t],)i(page)e(41\).)3371 -1445 y([V)-8 b(ariable])-3598 b Fh(rl_voidfunc_t)56 b(*)d -(rl_deprep_term_functio)q(n)390 1554 y Ft(If)36 b(non-zero,)j(Readline) +2315 y([T)-8 b(erminal)31 b(Managemen)m(t],)i(page)e(43\).)3371 +2502 y([V)-8 b(ariable])-3598 b Fh(rl_voidfunc_t)56 b(*)d +(rl_deprep_term_functio)q(n)390 2611 y Ft(If)36 b(non-zero,)j(Readline) e(will)g(call)h(indirectly)f(through)f(this)g(p)s(oin)m(ter)h(to)g -(reset)g(the)g(terminal.)390 1664 y(This)d(function)h(should)f(undo)g +(reset)g(the)g(terminal.)390 2721 y(This)d(function)h(should)f(undo)g (the)h(e\013ects)h(of)f Fs(rl_prep_term_function)p Ft(.)49 -b(By)35 b(default,)i(this)390 1774 y(is)30 b(set)h(to)g +b(By)35 b(default,)i(this)390 2830 y(is)30 b(set)h(to)g Fs(rl_deprep_terminal)26 b Ft(\(see)31 b(Section)g(2.4.9)i([T)-8 -b(erminal)30 b(Managemen)m(t],)j(page)e(41\).)3371 1963 +b(erminal)30 b(Managemen)m(t],)j(page)e(43\).)3371 3017 y([V)-8 b(ariable])-3598 b Fh(Keymap)54 b(rl_executing_keymap)390 -2073 y Ft(This)35 b(v)-5 b(ariable)37 b(is)f(set)g(to)h(the)f(k)m -(eymap)h(\(see)g(Section)f(2.4.2)i([Keymaps],)g(page)e(34\))i(in)d -(whic)m(h)390 2182 y(the)c(curren)m(tly)f(executing)i(readline)e -(function)g(w)m(as)h(found.)3371 2372 y([V)-8 b(ariable])-3598 -b Fh(Keymap)54 b(rl_binding_keymap)390 2481 y Ft(This)35 +3126 y Ft(This)35 b(v)-5 b(ariable)37 b(is)f(set)g(to)h(the)f(k)m +(eymap)h(\(see)g(Section)f(2.4.2)i([Keymaps],)g(page)e(35\))i(in)d +(whic)m(h)390 3236 y(the)c(curren)m(tly)f(executing)i(Readline)f +(function)f(w)m(as)g(found.)3371 3422 y([V)-8 b(ariable])-3598 +b Fh(Keymap)54 b(rl_binding_keymap)390 3532 y Ft(This)35 b(v)-5 b(ariable)37 b(is)f(set)g(to)h(the)f(k)m(eymap)h(\(see)g -(Section)f(2.4.2)i([Keymaps],)g(page)e(34\))i(in)d(whic)m(h)390 -2591 y(the)c(last)g(k)m(ey)g(binding)e(o)s(ccurred.)3371 -2780 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e(rl_executing_macro)390 -2890 y Ft(This)30 b(v)-5 b(ariable)31 b(is)f(set)h(to)g(the)g(text)g -(of)g(an)m(y)f(curren)m(tly-executing)i(macro.)3371 3079 +(Section)f(2.4.2)i([Keymaps],)g(page)e(35\))i(in)d(whic)m(h)390 +3641 y(the)c(last)g(k)m(ey)g(binding)e(o)s(ccurred.)3371 +3828 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e(rl_executing_macro)390 +3937 y Ft(This)30 b(v)-5 b(ariable)31 b(is)f(set)h(to)g(the)g(text)g +(of)g(an)m(y)f(curren)m(tly-executing)i(macro.)3371 4124 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_executing_key)390 -3189 y Ft(The)30 b(k)m(ey)h(that)g(caused)f(the)h(dispatc)m(h)g(to)g +4233 y Ft(The)30 b(k)m(ey)h(that)g(caused)f(the)h(dispatc)m(h)g(to)g (the)f(curren)m(tly-executing)i(Readline)f(function.)3371 -3378 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e(rl_executing_keyseq) -390 3488 y Ft(The)35 b(full)g(k)m(ey)h(sequence)g(that)g(caused)g(the)g +4419 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e(rl_executing_keyseq) +390 4529 y Ft(The)35 b(full)g(k)m(ey)h(sequence)g(that)g(caused)g(the)g (dispatc)m(h)f(to)i(the)e(curren)m(tly-executing)i(Readline)390 -3597 y(function.)3371 3787 y([V)-8 b(ariable])-3598 b -Fh(int)53 b(rl_key_sequence_lengt)q(h)390 3896 y Ft(The)30 +4639 y(function.)3371 4825 y([V)-8 b(ariable])-3598 b +Fh(int)53 b(rl_key_sequence_lengt)q(h)390 4934 y Ft(The)30 b(n)m(um)m(b)s(er)f(of)h(c)m(haracters)i(in)e Fj(rl)p -1617 3896 28 4 v 40 w(executing)p 2032 3896 V 41 w(k)m(eyseq)p -Ft(.)3371 4086 y([V)-8 b(ariable])-3598 b Fh(int)53 b -(rl_readline_state)390 4195 y Ft(A)35 b(v)-5 b(ariable)35 +1617 4934 V 40 w(executing)p 2032 4934 V 41 w(k)m(eyseq)p +Ft(.)3371 5121 y([V)-8 b(ariable])-3598 b Fh(int)53 b +(rl_readline_state)390 5230 y Ft(A)35 b(v)-5 b(ariable)35 b(with)f(bit)g(v)-5 b(alues)35 b(that)g(encapsulate)h(the)e(curren)m(t) -h(Readline)g(state.)54 b(A)34 b(bit)h(is)f(set)390 4305 +h(Readline)g(state.)54 b(A)34 b(bit)h(is)f(set)390 5340 y(with)k(the)g Fs(RL_SETSTATE)c Ft(macro,)41 b(and)c(unset)h(with)f -(the)h Fs(RL_UNSETSTATE)d Ft(macro.)63 b(Use)39 b(the)390 -4414 y Fs(RL_ISSTATE)34 b Ft(macro)k(to)g(test)g(whether)f(a)h +(the)h Fs(RL_UNSETSTATE)d Ft(macro.)63 b(Use)39 b(the)p +eop end +%%Page: 33 37 +TeXDict begin 33 36 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(33)390 +299 y Fs(RL_ISSTATE)34 b Ft(macro)k(to)g(test)g(whether)f(a)h (particular)f(state)i(bit)e(is)g(set.)62 b(Curren)m(t)36 -b(state)j(bits)390 4524 y(include:)390 4687 y Fs(RL_STATE_NONE)870 -4797 y Ft(Readline)31 b(has)f(not)h(y)m(et)g(b)s(een)f(called,)i(nor)e -(has)g(it)h(b)s(egun)e(to)i(initialize.)390 4959 y Fs -(RL_STATE_INITIALIZING)870 5068 y Ft(Readline)g(is)f(initializing)j -(its)e(in)m(ternal)g(data)g(structures.)390 5230 y Fs -(RL_STATE_INITIALIZED)870 5340 y Ft(Readline)g(has)f(completed)h(its)g -(initialization.)p eop end -%%Page: 32 36 -TeXDict begin 32 35 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(32)390 -299 y Fs(RL_STATE_TERMPREPPED)870 408 y Ft(Readline)29 -b(has)g(mo)s(di\014ed)e(the)i(terminal)g(mo)s(des)f(to)i(do)e(its)i(o)m -(wn)e(input)g(and)g(redis-)870 518 y(pla)m(y)-8 b(.)390 -679 y Fs(RL_STATE_READCMD)870 789 y Ft(Readline)31 b(is)f(reading)h(a)g -(command)f(from)g(the)g(k)m(eyb)s(oard.)390 950 y Fs(RL_STATE_METANEXT) -870 1060 y Ft(Readline)h(is)f(reading)h(more)f(input)g(after)h(reading) -f(the)h(meta-pre\014x)f(c)m(haracter.)390 1221 y Fs -(RL_STATE_DISPATCHING)870 1330 y Ft(Readline)h(is)f(dispatc)m(hing)h -(to)g(a)g(command.)390 1491 y Fs(RL_STATE_MOREINPUT)870 -1601 y Ft(Readline)g(is)f(reading)h(more)f(input)g(while)g(executing)i -(an)e(editing)h(command.)390 1762 y Fs(RL_STATE_ISEARCH)870 -1872 y Ft(Readline)g(is)f(p)s(erforming)g(an)g(incremen)m(tal)i -(history)e(searc)m(h.)390 2033 y Fs(RL_STATE_NSEARCH)870 -2143 y Ft(Readline)h(is)f(p)s(erforming)g(a)g(non-incremen)m(tal)i -(history)e(searc)m(h.)390 2304 y Fs(RL_STATE_SEARCH)870 -2413 y Ft(Readline)21 b(is)f(searc)m(hing)i(bac)m(kw)m(ard)e(or)h(forw) +b(state)j(bits)390 408 y(include:)390 561 y Fs(RL_STATE_NONE)870 +670 y Ft(Readline)31 b(has)f(not)h(y)m(et)g(b)s(een)f(called,)i(nor)e +(has)g(it)h(b)s(egun)e(to)i(initialize.)390 822 y Fs +(RL_STATE_INITIALIZING)870 932 y Ft(Readline)g(is)f(initializing)j(its) +e(in)m(ternal)g(data)g(structures.)390 1084 y Fs(RL_STATE_INITIALIZED) +870 1194 y Ft(Readline)g(has)f(completed)h(its)g(initialization.)390 +1346 y Fs(RL_STATE_TERMPREPPED)870 1456 y Ft(Readline)e(has)g(mo)s +(di\014ed)e(the)i(terminal)g(mo)s(des)f(to)i(do)e(its)i(o)m(wn)e(input) +g(and)g(redis-)870 1565 y(pla)m(y)-8 b(.)390 1717 y Fs +(RL_STATE_READCMD)870 1827 y Ft(Readline)31 b(is)f(reading)h(a)g +(command)f(from)g(the)g(k)m(eyb)s(oard.)390 1979 y Fs +(RL_STATE_METANEXT)870 2089 y Ft(Readline)h(is)f(reading)h(more)f +(input)g(after)h(reading)f(the)h(meta-pre\014x)f(c)m(haracter.)390 +2241 y Fs(RL_STATE_DISPATCHING)870 2351 y Ft(Readline)h(is)f(dispatc)m +(hing)h(to)g(a)g(command.)390 2503 y Fs(RL_STATE_MOREINPUT)870 +2612 y Ft(Readline)g(is)f(reading)h(more)f(input)g(while)g(executing)i +(an)e(editing)h(command.)390 2765 y Fs(RL_STATE_ISEARCH)870 +2874 y Ft(Readline)g(is)f(p)s(erforming)g(an)g(incremen)m(tal)i +(history)e(searc)m(h.)390 3026 y Fs(RL_STATE_NSEARCH)870 +3136 y Ft(Readline)h(is)f(p)s(erforming)g(a)g(non-incremen)m(tal)i +(history)e(searc)m(h.)390 3288 y Fs(RL_STATE_SEARCH)870 +3398 y Ft(Readline)21 b(is)f(searc)m(hing)i(bac)m(kw)m(ard)e(or)h(forw) m(ard)e(through)h(the)h(history)f(for)g(a)h(string.)390 -2574 y Fs(RL_STATE_NUMERICARG)870 2684 y Ft(Readline)31 -b(is)f(reading)h(a)g(n)m(umeric)f(argumen)m(t.)390 2845 -y Fs(RL_STATE_MACROINPUT)870 2955 y Ft(Readline)25 b(is)f(curren)m(tly) +3550 y Fs(RL_STATE_NUMERICARG)870 3660 y Ft(Readline)31 +b(is)f(reading)h(a)g(n)m(umeric)f(argumen)m(t.)390 3812 +y Fs(RL_STATE_MACROINPUT)870 3921 y Ft(Readline)25 b(is)f(curren)m(tly) g(getting)i(its)f(input)e(from)h(a)g(previously-de\014ned)f(k)m(eyb)s -(oard)870 3064 y(macro.)390 3226 y Fs(RL_STATE_MACRODEF)870 -3335 y Ft(Readline)31 b(is)f(curren)m(tly)h(reading)f(c)m(haracters)i -(de\014ning)e(a)g(k)m(eyb)s(oard)h(macro.)390 3496 y -Fs(RL_STATE_OVERWRITE)870 3606 y Ft(Readline)g(is)f(in)g(o)m(v)m -(erwrite)i(mo)s(de.)390 3767 y Fs(RL_STATE_COMPLETING)870 -3877 y Ft(Readline)f(is)f(p)s(erforming)g(w)m(ord)g(completion.)390 -4038 y Fs(RL_STATE_SIGHANDLER)870 4147 y Ft(Readline)h(is)f(curren)m +(oard)870 4031 y(macro.)390 4183 y Fs(RL_STATE_MACRODEF)870 +4293 y Ft(Readline)31 b(is)f(curren)m(tly)h(reading)f(c)m(haracters)i +(de\014ning)e(a)g(k)m(eyb)s(oard)h(macro.)390 4445 y +Fs(RL_STATE_OVERWRITE)870 4555 y Ft(Readline)g(is)f(in)g(o)m(v)m +(erwrite)i(mo)s(de.)390 4707 y Fs(RL_STATE_COMPLETING)870 +4816 y Ft(Readline)f(is)f(p)s(erforming)g(w)m(ord)g(completion.)390 +4969 y Fs(RL_STATE_SIGHANDLER)870 5078 y Ft(Readline)h(is)f(curren)m (tly)h(executing)g(the)g(readline)g(signal)g(handler.)390 -4309 y Fs(RL_STATE_UNDOING)870 4418 y Ft(Readline)g(is)f(p)s(erforming) -g(an)g(undo.)390 4579 y Fs(RL_STATE_INPUTPENDING)870 -4689 y Ft(Readline)h(has)f(input)g(p)s(ending)f(due)g(to)i(a)g(call)h -(to)f Fs(rl_execute_next\(\))p Ft(.)390 4850 y Fs(RL_STATE_TTYCSAVED) -870 4960 y Ft(Readline)g(has)f(sa)m(v)m(ed)i(the)e(v)-5 -b(alues)31 b(of)f(the)h(terminal's)g(sp)s(ecial)g(c)m(haracters.)390 -5121 y Fs(RL_STATE_CALLBACK)870 5230 y Ft(Readline)44 -b(is)f(curren)m(tly)g(using)f(the)h(alternate)i(\(callbac)m(k\))h(in)m -(terface)e(\(see)g(Sec-)870 5340 y(tion)31 b(2.4.12)h([Alternate)h(In)m -(terface],)f(page)f(44\).)p eop end -%%Page: 33 37 -TeXDict begin 33 36 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(33)390 -299 y Fs(RL_STATE_VIMOTION)870 408 y Ft(Readline)31 b(is)f(reading)h -(the)f(argumen)m(t)h(to)g(a)g(vi-mo)s(de)g Fs(")p Ft(motion)p -Fs(")f Ft(command.)390 589 y Fs(RL_STATE_MULTIKEY)870 -699 y Ft(Readline)h(is)f(reading)h(a)g(m)m(ultiple-k)m(eystrok)m(e)i -(command.)390 879 y Fs(RL_STATE_VICMDONCE)870 989 y Ft(Readline)40 -b(has)f(en)m(tered)g(vi)g(command)g(\(mo)m(v)m(emen)m(t\))j(mo)s(de)d -(at)h(least)g(one)f(time)870 1098 y(during)29 b(the)i(curren)m(t)f -(call)i(to)f Fs(readline\(\))p Ft(.)390 1279 y Fs(RL_STATE_DONE)870 -1389 y Ft(Readline)d(has)g(read)f(a)i(k)m(ey)f(sequence)g(b)s(ound)e -(to)i Fs(accept-line)d Ft(and)i(is)h(ab)s(out)f(to)870 -1498 y(return)i(the)i(line)g(to)g(the)f(caller.)3371 -1725 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_explicit_arg)390 -1834 y Ft(Set)39 b(to)g(a)h(non-zero)f(v)-5 b(alue)39 +5230 y Fs(RL_STATE_UNDOING)870 5340 y Ft(Readline)g(is)f(p)s(erforming) +g(an)g(undo.)p eop end +%%Page: 34 38 +TeXDict begin 34 37 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(34)390 +299 y Fs(RL_STATE_INPUTPENDING)870 408 y Ft(Readline)31 +b(has)f(input)g(p)s(ending)f(due)g(to)i(a)g(call)h(to)f +Fs(rl_execute_next\(\))p Ft(.)390 557 y Fs(RL_STATE_TTYCSAVED)870 +666 y Ft(Readline)g(has)f(sa)m(v)m(ed)i(the)e(v)-5 b(alues)31 +b(of)f(the)h(terminal's)g(sp)s(ecial)g(c)m(haracters.)390 +814 y Fs(RL_STATE_CALLBACK)870 924 y Ft(Readline)44 b(is)f(curren)m +(tly)g(using)f(the)h(alternate)i(\(callbac)m(k\))h(in)m(terface)e +(\(see)g(Sec-)870 1033 y(tion)31 b(2.4.12)h([Alternate)h(In)m +(terface],)f(page)f(46\).)390 1182 y Fs(RL_STATE_VIMOTION)870 +1291 y Ft(Readline)g(is)f(reading)h(the)f(argumen)m(t)h(to)g(a)g(vi-mo) +s(de)g Fs(")p Ft(motion)p Fs(")f Ft(command.)390 1439 +y Fs(RL_STATE_MULTIKEY)870 1549 y Ft(Readline)h(is)f(reading)h(a)g(m)m +(ultiple-k)m(eystrok)m(e)i(command.)390 1697 y Fs(RL_STATE_VICMDONCE) +870 1807 y Ft(Readline)40 b(has)f(en)m(tered)g(vi)g(command)g(\(mo)m(v) +m(emen)m(t\))j(mo)s(de)d(at)h(least)g(one)f(time)870 +1916 y(during)29 b(the)i(curren)m(t)f(call)i(to)f Fs(readline\(\))p +Ft(.)390 2064 y Fs(RL_STATE_DONE)870 2174 y Ft(Readline)d(has)g(read)f +(a)i(k)m(ey)f(sequence)g(b)s(ound)e(to)i Fs(accept-line)d +Ft(and)i(is)h(ab)s(out)f(to)870 2284 y(return)i(the)i(line)g(to)g(the)f +(caller.)390 2432 y Fs(RL_STATE_TIMEOUT)870 2541 y Ft(Readline)44 +b(has)f(timed)g(out)h(\(it)g(did)f(not)g(receiv)m(e)i(a)f(line)f(or)h +(sp)s(eci\014ed)e(n)m(um)m(b)s(er)870 2651 y(of)36 b(c)m(haracters)i(b) +s(efore)d(the)i(timeout)g(duration)e(sp)s(eci\014ed)h(b)m(y)g +Fs(rl_set_timeout)870 2760 y Ft(elapsed\))31 b(and)f(is)g(returning)g +(that)h(status)f(to)h(the)g(caller.)390 2909 y Fs(RL_STATE_EOF)870 +3018 y Ft(Readline)39 b(has)f(read)h(an)f(EOF)h(c)m(haracter)h(\(e.g.,) +i(the)d(stt)m(y)g(`)p Fs(EOF)p Ft(')f(c)m(haracter\))j(or)870 +3128 y(encoun)m(tered)k(a)h(read)e(error)h(and)f(is)h(ab)s(out)g(to)g +(return)f(a)h(NULL)g(line)g(to)h(the)870 3237 y(caller.)3371 +3405 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_explicit_arg)390 +3514 y Ft(Set)39 b(to)g(a)h(non-zero)f(v)-5 b(alue)39 b(if)g(an)g(explicit)h(n)m(umeric)e(argumen)m(t)i(w)m(as)f(sp)s -(eci\014ed)f(b)m(y)g(the)h(user.)390 1944 y(Only)30 b(v)-5 +(eci\014ed)f(b)m(y)g(the)h(user.)390 3624 y(Only)30 b(v)-5 b(alid)30 b(in)h(a)f(bindable)g(command)g(function.)3371 -2171 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_numeric_arg)390 -2280 y Ft(Set)45 b(to)h(the)g(v)-5 b(alue)46 b(of)f(an)m(y)h(n)m +3791 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_numeric_arg)390 +3901 y Ft(Set)45 b(to)h(the)g(v)-5 b(alue)46 b(of)f(an)m(y)h(n)m (umeric)f(argumen)m(t)h(explicitly)h(sp)s(eci\014ed)d(b)m(y)h(the)h -(user)e(b)s(efore)390 2390 y(executing)27 b(the)f(curren)m(t)g +(user)e(b)s(efore)390 4010 y(executing)27 b(the)f(curren)m(t)g (Readline)h(function.)38 b(Only)26 b(v)-5 b(alid)26 b(in)g(a)g -(bindable)f(command)h(function.)3371 2617 y([V)-8 b(ariable])-3598 -b Fh(int)53 b(rl_editing_mode)390 2726 y Ft(Set)25 b(to)h(a)g(v)-5 +(bindable)f(command)h(function.)3371 4178 y([V)-8 b(ariable])-3598 +b Fh(int)53 b(rl_editing_mode)390 4287 y Ft(Set)25 b(to)h(a)g(v)-5 b(alue)25 b(denoting)h(Readline's)f(curren)m(t)g(editing)h(mo)s(de.)39 b(A)25 b(v)-5 b(alue)25 b(of)h Fj(1)32 b Ft(means)25 -b(Readline)390 2836 y(is)30 b(curren)m(tly)h(in)f(emacs)h(mo)s(de;)f +b(Readline)390 4397 y(is)30 b(curren)m(tly)h(in)f(emacs)h(mo)s(de;)f Fj(0)38 b Ft(means)31 b(that)f(vi)h(mo)s(de)f(is)g(activ)m(e.)150 -3108 y Fr(2.4)68 b(Readline)47 b(Con)l(v)l(enience)f(F)-11 -b(unctions)150 3332 y Fi(2.4.1)63 b(Naming)41 b(a)g(F)-10 -b(unction)150 3479 y Ft(The)24 b(user)h(can)g(dynamically)g(c)m(hange)h +4626 y Fr(2.4)68 b(Readline)47 b(Con)l(v)l(enience)f(F)-11 +b(unctions)150 4845 y Fi(2.4.1)63 b(Naming)41 b(a)g(F)-10 +b(unction)150 4992 y Ft(The)24 b(user)h(can)g(dynamically)g(c)m(hange)h (the)f(bindings)f(of)h(k)m(eys)h(while)e(using)h(Readline.)39 -b(This)24 b(is)h(done)g(b)m(y)150 3589 y(represen)m(ting)30 +b(This)24 b(is)h(done)g(b)m(y)150 5102 y(represen)m(ting)30 b(the)h(function)f(with)g(a)g(descriptiv)m(e)h(name.)41 b(The)30 b(user)f(is)i(able)f(to)h(t)m(yp)s(e)g(the)f(descriptiv)m(e) -150 3699 y(name)g(when)g(referring)g(to)h(the)f(function.)41 +150 5211 y(name)g(when)g(referring)g(to)h(the)f(function.)41 b(Th)m(us,)29 b(in)h(an)h(init)f(\014le,)h(one)g(migh)m(t)g(\014nd)390 -3854 y Fs(Meta-Rubout:)92 b(backward-kill-word)275 4010 -y Ft(This)84 b(binds)h(the)g(k)m(eystrok)m(e)j Fs(Meta-Rubout)82 +5340 y Fs(Meta-Rubout:)92 b(backward-kill-word)p eop +end +%%Page: 35 39 +TeXDict begin 35 38 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(35)275 +299 y(This)84 b(binds)h(the)g(k)m(eystrok)m(e)j Fs(Meta-Rubout)82 b Ft(to)87 b(the)e(function)h Fk(descriptively)94 b Ft(named)150 -4120 y Fs(backward-kill-word)p Ft(.)63 b(Y)-8 b(ou,)43 +408 y Fs(backward-kill-word)p Ft(.)63 b(Y)-8 b(ou,)43 b(as)d(the)g(programmer,)i(should)c(bind)g(the)i(functions)f(y)m(ou)h -(write)g(to)150 4229 y(descriptiv)m(e)31 b(names)g(as)f(w)m(ell.)42 +(write)g(to)150 518 y(descriptiv)m(e)31 b(names)g(as)f(w)m(ell.)42 b(Readline)31 b(pro)m(vides)f(a)h(function)f(for)g(doing)h(that:)3350 -4456 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_add_defun)c -Fg(\()p Ff(const)34 b(c)m(har)g(*name,)f(rl)p 1964 4456 -30 5 v 43 w(command)p 2427 4456 V 45 w(func)p 2656 4456 -V 45 w(t)g(*function,)565 4565 y(in)m(t)g(k)m(ey)p Fg(\))390 -4675 y Ft(Add)h Fj(name)41 b Ft(to)36 b(the)f(list)h(of)g(named)e +706 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_add_defun)c +Fg(\()p Ff(const)34 b(c)m(har)g(*name,)f(rl)p 1964 706 +30 5 v 43 w(command)p 2427 706 V 45 w(func)p 2656 706 +V 45 w(t)g(*function,)565 815 y(in)m(t)g(k)m(ey)p Fg(\))390 +925 y Ft(Add)h Fj(name)41 b Ft(to)36 b(the)f(list)h(of)g(named)e (functions.)55 b(Mak)m(e)37 b Fj(function)e Ft(b)s(e)g(the)g(function)g -(that)h(gets)390 4785 y(called.)42 b(If)30 b Fj(k)m(ey)39 +(that)h(gets)390 1034 y(called.)42 b(If)30 b Fj(k)m(ey)39 b Ft(is)30 b(not)h(-1,)g(then)f(bind)f(it)i(to)g Fj(function)f -Ft(using)g Fs(rl_bind_key\(\))p Ft(.)275 5011 y(Using)g(this)g +Ft(using)g Fs(rl_bind_key\(\))p Ft(.)275 1222 y(Using)g(this)g (function)g(alone)h(is)f(su\016cien)m(t)g(for)g(most)h(applications.)42 -b(It)30 b(is)g(the)g(recommended)g(w)m(a)m(y)150 5121 +b(It)30 b(is)g(the)g(recommended)g(w)m(a)m(y)150 1332 y(to)e(add)e(a)h(few)g(functions)g(to)g(the)g(default)h(functions)e (that)i(Readline)f(has)g(built)g(in.)39 b(If)26 b(y)m(ou)i(need)e(to)i -(do)150 5230 y(something)34 b(other)g(than)f(adding)h(a)g(function)f +(do)150 1441 y(something)34 b(other)g(than)f(adding)h(a)g(function)f (to)h(Readline,)i(y)m(ou)e(ma)m(y)g(need)f(to)i(use)e(the)h(underlying) -150 5340 y(functions)c(describ)s(ed)f(b)s(elo)m(w.)p -eop end -%%Page: 34 38 -TeXDict begin 34 37 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(34)150 -299 y Fi(2.4.2)63 b(Selecting)41 b(a)f(Keymap)150 446 +150 1551 y(functions)c(describ)s(ed)f(b)s(elo)m(w.)150 +1752 y Fi(2.4.2)63 b(Selecting)41 b(a)f(Keymap)150 1899 y Ft(Key)f(bindings)e(tak)m(e)j(place)g(on)f(a)g Fj(k)m(eymap)p Ft(.)66 b(The)38 b(k)m(eymap)h(is)g(the)g(asso)s(ciation)h(b)s(et)m(w)m -(een)f(the)g(k)m(eys)150 555 y(that)29 b(the)g(user)e(t)m(yp)s(es)i +(een)f(the)g(k)m(eys)150 2008 y(that)29 b(the)g(user)e(t)m(yp)s(es)i (and)f(the)g(functions)g(that)h(get)h(run.)39 b(Y)-8 b(ou)29 b(can)f(mak)m(e)i(y)m(our)e(o)m(wn)h(k)m(eymaps,)g(cop)m(y)150 -665 y(existing)i(k)m(eymaps,)g(and)f(tell)i(Readline)f(whic)m(h)f(k)m -(eymap)h(to)g(use.)3350 854 y([F)-8 b(unction])-3599 +2118 y(existing)i(k)m(eymaps,)g(and)f(tell)i(Readline)f(whic)m(h)f(k)m +(eymap)h(to)g(use.)3350 2305 y([F)-8 b(unction])-3599 b Fh(Keymap)54 b(rl_make_bare_keymap)d Fg(\()p Ff(v)m(oid)p -Fg(\))390 963 y Ft(Returns)23 b(a)i(new,)g(empt)m(y)f(k)m(eymap.)40 +Fg(\))390 2415 y Ft(Returns)23 b(a)i(new,)g(empt)m(y)f(k)m(eymap.)40 b(The)23 b(space)i(for)f(the)g(k)m(eymap)h(is)f(allo)s(cated)i(with)e -Fs(malloc\(\))p Ft(;)390 1073 y(the)31 b(caller)g(should)f(free)g(it)h +Fs(malloc\(\))p Ft(;)390 2524 y(the)31 b(caller)g(should)f(free)g(it)h (b)m(y)f(calling)i Fs(rl_free_keymap\(\))26 b Ft(when)j(done.)3350 -1262 y([F)-8 b(unction])-3599 b Fh(Keymap)54 b(rl_copy_keymap)c -Fg(\()p Ff(Keymap)34 b(map)p Fg(\))390 1371 y Ft(Return)c(a)g(new)g(k)m +2712 y([F)-8 b(unction])-3599 b Fh(Keymap)54 b(rl_copy_keymap)c +Fg(\()p Ff(Keymap)34 b(map)p Fg(\))390 2822 y Ft(Return)c(a)g(new)g(k)m (eymap)h(whic)m(h)f(is)h(a)f(cop)m(y)h(of)g Fj(map)p -Ft(.)3350 1560 y([F)-8 b(unction])-3599 b Fh(Keymap)54 -b(rl_make_keymap)c Fg(\()p Ff(v)m(oid)p Fg(\))390 1669 +Ft(.)3350 3009 y([F)-8 b(unction])-3599 b Fh(Keymap)54 +b(rl_make_keymap)c Fg(\()p Ff(v)m(oid)p Fg(\))390 3119 y Ft(Return)31 b(a)g(new)g(k)m(eymap)h(with)f(the)h(prin)m(ting)f(c)m -(haracters)i(b)s(ound)c(to)j(rl)p 2909 1669 28 4 v 40 -w(insert,)g(the)g(lo)m(w)m(ercase)390 1779 y(Meta)24 +(haracters)i(b)s(ound)c(to)j(rl)p 2909 3119 28 4 v 40 +w(insert,)g(the)g(lo)m(w)m(ercase)390 3228 y(Meta)24 b(c)m(haracters)g(b)s(ound)d(to)i(run)e(their)i(equiv)-5 b(alen)m(ts,)25 b(and)d(the)h(Meta)h(digits)f(b)s(ound)e(to)i(pro)s -(duce)390 1889 y(n)m(umeric)30 b(argumen)m(ts.)3350 2077 +(duce)390 3338 y(n)m(umeric)30 b(argumen)m(ts.)3350 3525 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_discard_keymap)c -Fg(\()p Ff(Keymap)34 b(k)m(eymap)p Fg(\))390 2187 y Ft(F)-8 +Fg(\()p Ff(Keymap)34 b(k)m(eymap)p Fg(\))390 3635 y Ft(F)-8 b(ree)30 b(the)g(storage)h(asso)s(ciated)g(with)e(the)g(data)h(in)f Fj(k)m(eymap)p Ft(.)41 b(The)29 b(caller)h(should)f(free)g -Fj(k)m(eymap)p Ft(.)3350 2375 y([F)-8 b(unction])-3599 +Fj(k)m(eymap)p Ft(.)3350 3823 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_free_keymap)49 b Fg(\()p Ff(Keymap)34 -b(k)m(eymap)p Fg(\))390 2485 y Ft(F)-8 b(ree)32 b(all)g(storage)g(asso) +b(k)m(eymap)p Fg(\))390 3932 y Ft(F)-8 b(ree)32 b(all)g(storage)g(asso) s(ciated)g(with)f Fj(k)m(eymap)p Ft(.)42 b(This)30 b(calls)i Fs(rl_discard_keymap)26 b Ft(to)32 b(free)f(sub-)390 -2595 y(ordindate)f(k)m(eymaps)h(and)f(macros.)3350 2783 +4042 y(ordindate)f(k)m(eymaps)h(and)f(macros.)3350 4229 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_empty_keymap)d -Fg(\()p Ff(Keymap)34 b(k)m(eymap)p Fg(\))390 2893 y Ft(Return)c +Fg(\()p Ff(Keymap)34 b(k)m(eymap)p Fg(\))390 4339 y Ft(Return)c (non-zero)h(if)g(there)g(are)g(no)f(k)m(eys)i(b)s(ound)c(to)k (functions)e(in)g Fj(k)m(eymap)s Ft(;)i(zero)f(if)g(there)g(are)390 -3002 y(an)m(y)g(k)m(eys)g(b)s(ound.)275 3191 y(Readline)45 +4449 y(an)m(y)g(k)m(eys)g(b)s(ound.)275 4636 y(Readline)45 b(has)g(sev)m(eral)i(in)m(ternal)f(k)m(eymaps.)86 b(These)45 b(functions)g(allo)m(w)h(y)m(ou)g(to)g(c)m(hange)g(whic)m(h)150 -3301 y(k)m(eymap)31 b(is)f(activ)m(e.)3350 3489 y([F)-8 +4746 y(k)m(eymap)31 b(is)f(activ)m(e.)3350 4933 y([F)-8 b(unction])-3599 b Fh(Keymap)54 b(rl_get_keymap)c Fg(\()p -Ff(v)m(oid)p Fg(\))390 3599 y Ft(Returns)29 b(the)i(curren)m(tly)f -(activ)m(e)j(k)m(eymap.)3350 3788 y([F)-8 b(unction])-3599 +Ff(v)m(oid)p Fg(\))390 5043 y Ft(Returns)29 b(the)i(curren)m(tly)f +(activ)m(e)j(k)m(eymap.)3350 5230 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_set_keymap)49 b Fg(\()p Ff(Keymap)34 -b(k)m(eymap)p Fg(\))390 3897 y Ft(Mak)m(es)e Fj(k)m(eymap)h -Ft(the)e(curren)m(tly)f(activ)m(e)j(k)m(eymap.)3350 4086 -y([F)-8 b(unction])-3599 b Fh(Keymap)54 b(rl_get_keymap_by_name)e -Fg(\()p Ff(const)34 b(c)m(har)g(*name)p Fg(\))390 4196 +b(k)m(eymap)p Fg(\))390 5340 y Ft(Mak)m(es)e Fj(k)m(eymap)h +Ft(the)e(curren)m(tly)f(activ)m(e)j(k)m(eymap.)p eop +end +%%Page: 36 40 +TeXDict begin 36 39 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(36)3350 +299 y([F)-8 b(unction])-3599 b Fh(Keymap)54 b(rl_get_keymap_by_name)e +Fg(\()p Ff(const)34 b(c)m(har)g(*name)p Fg(\))390 408 y Ft(Return)e(the)i(k)m(eymap)f(matc)m(hing)i Fj(name)p Ft(.)49 b Fj(name)38 b Ft(is)c(one)f(whic)m(h)g(w)m(ould)g(b)s(e)f -(supplied)g(in)h(a)h Fs(set)390 4305 y(keymap)29 b Ft(inputrc)g(line)i +(supplied)g(in)h(a)h Fs(set)390 518 y(keymap)29 b Ft(inputrc)g(line)i (\(see)g(Section)g(1.3)h([Readline)f(Init)f(File],)i(page)f(4\).)3350 -4494 y([F)-8 b(unction])-3599 b Fh(char)54 b(*)e(rl_get_keymap_name)f -Fg(\()p Ff(Keymap)34 b(k)m(eymap)p Fg(\))390 4603 y Ft(Return)e(the)i +692 y([F)-8 b(unction])-3599 b Fh(char)54 b(*)e(rl_get_keymap_name)f +Fg(\()p Ff(Keymap)34 b(k)m(eymap)p Fg(\))390 801 y Ft(Return)e(the)i (name)f(matc)m(hing)h Fj(k)m(eymap)p Ft(.)50 b Fj(name)38 b Ft(is)c(one)f(whic)m(h)g(w)m(ould)g(b)s(e)f(supplied)g(in)h(a)h -Fs(set)390 4713 y(keymap)29 b Ft(inputrc)g(line)i(\(see)g(Section)g -(1.3)h([Readline)f(Init)f(File],)i(page)f(4\).)3350 4902 -y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_set_keymap_name)e -Fg(\()p Ff(const)34 b(c)m(har)g(*name,)f(Keymap)h(k)m(eymap)p -Fg(\))390 5011 y Ft(Set)g(the)f(name)h(of)g Fj(k)m(eymap)p +Fs(set)390 911 y(keymap)29 b Ft(inputrc)g(line)i(\(see)g(Section)g(1.3) +h([Readline)f(Init)f(File],)i(page)f(4\).)3350 1085 y([F)-8 +b(unction])-3599 b Fh(int)53 b(rl_set_keymap_name)e Fg(\()p +Ff(const)34 b(c)m(har)g(*name,)f(Keymap)h(k)m(eymap)p +Fg(\))390 1194 y Ft(Set)g(the)f(name)h(of)g Fj(k)m(eymap)p Ft(.)50 b(This)33 b(name)h(will)f(then)h(b)s(e)e Fs(")p Ft(registered)p Fs(")i Ft(and)f(a)m(v)-5 b(ailable)36 -b(for)d(use)390 5121 y(in)i(a)g Fs(set)29 b(keymap)k +b(for)d(use)390 1304 y(in)i(a)g Fs(set)29 b(keymap)k Ft(inputrc)h(directiv)m(e)j(see)e(Section)h(1.3)g([Readline)g(Init)e -(File],)k(page)e(4\).)54 b(The)390 5230 y Fj(name)27 +(File],)k(page)e(4\).)54 b(The)390 1414 y Fj(name)27 b Ft(ma)m(y)c(not)g(b)s(e)e(one)i(of)f(Readline's)h(builtin)f(k)m (eymap)g(names;)j(y)m(ou)e(ma)m(y)g(not)f(add)g(a)g(di\013eren)m(t)390 -5340 y(name)36 b(for)g(one)g(of)g(Readline's)h(builtin)e(k)m(eymaps.)58 -b(Y)-8 b(ou)37 b(ma)m(y)f(replace)h(the)f(name)g(asso)s(ciated)p -eop end -%%Page: 35 39 -TeXDict begin 35 38 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(35)390 -299 y(with)31 b(a)g(giv)m(en)h(k)m(eymap)g(b)m(y)f(calling)h(this)f +1523 y(name)36 b(for)g(one)g(of)g(Readline's)h(builtin)e(k)m(eymaps.)58 +b(Y)-8 b(ou)37 b(ma)m(y)f(replace)h(the)f(name)g(asso)s(ciated)390 +1633 y(with)31 b(a)g(giv)m(en)h(k)m(eymap)g(b)m(y)f(calling)h(this)f (function)g(more)h(than)e(once)i(with)f(the)g(same)h -Fj(k)m(eymap)390 408 y Ft(argumen)m(t.)50 b(Y)-8 b(ou)34 +Fj(k)m(eymap)390 1742 y Ft(argumen)m(t.)50 b(Y)-8 b(ou)34 b(ma)m(y)h(asso)s(ciate)g(a)f(registered)g Fj(name)39 b Ft(with)33 b(a)h(new)f(k)m(eymap)h(b)m(y)f(calling)i(this)390 -518 y(function)c(more)h(than)f(once)i(with)e(the)h(same)g +1852 y(function)c(more)h(than)f(once)i(with)e(the)h(same)g Fj(name)k Ft(argumen)m(t.)45 b(There)31 b(is)h(no)g(w)m(a)m(y)g(to)g -(remo)m(v)m(e)390 628 y(a)k(named)e(k)m(eymap)i(once)g(the)f(name)g +(remo)m(v)m(e)390 1962 y(a)k(named)e(k)m(eymap)i(once)g(the)f(name)g (has)g(b)s(een)g(registered.)56 b(Readline)36 b(will)f(mak)m(e)h(a)g -(cop)m(y)g(of)390 737 y Fj(name)p Ft(.)41 b(The)30 b(return)f(v)-5 +(cop)m(y)g(of)390 2071 y Fj(name)p Ft(.)41 b(The)30 b(return)f(v)-5 b(alue)31 b(is)g(greater)g(than)g(zero)g(unless)f Fj(name)35 -b Ft(is)c(one)g(of)f(Readline's)h(builtin)390 847 y(k)m(eymap)g(names)f -(or)h Fj(k)m(eymap)i Ft(is)e(one)f(of)h(Readline's)g(builtin)f(k)m -(eymaps.)150 1056 y Fi(2.4.3)63 b(Binding)42 b(Keys)150 -1203 y Ft(Key)34 b(sequences)g(are)h(asso)s(ciate)h(with)e(functions)f +b Ft(is)c(one)g(of)f(Readline's)h(builtin)390 2181 y(k)m(eymap)g(names) +f(or)h Fj(k)m(eymap)i Ft(is)e(one)f(of)h(Readline's)g(builtin)f(k)m +(eymaps.)150 2373 y Fi(2.4.3)63 b(Binding)42 b(Keys)150 +2520 y Ft(Key)34 b(sequences)g(are)h(asso)s(ciate)h(with)e(functions)f (through)h(the)g(k)m(eymap.)52 b(Readline)35 b(has)f(sev)m(eral)h(in-) -150 1313 y(ternal)30 b(k)m(eymaps:)40 b Fs(emacs_standard_keymap)p +150 2629 y(ternal)30 b(k)m(eymaps:)40 b Fs(emacs_standard_keymap)p Ft(,)24 b Fs(emacs_meta_keymap)p Ft(,)h Fs(emacs_ctlx_keymap)p -Ft(,)g Fs(vi_)150 1423 y(movement_keymap)p Ft(,)41 b(and)h +Ft(,)g Fs(vi_)150 2739 y(movement_keymap)p Ft(,)41 b(and)h Fs(vi_insertion_keymap)p Ft(.)71 b Fs(emacs_standard_keymap)37 -b Ft(is)42 b(the)g(default,)150 1532 y(and)30 b(the)g(examples)h(in)f -(this)h(man)m(ual)f(assume)g(that.)275 1677 y(Since)d +b Ft(is)42 b(the)g(default,)150 2849 y(and)30 b(the)g(examples)h(in)f +(this)h(man)m(ual)f(assume)g(that.)275 2980 y(Since)d Fs(readline\(\))e Ft(installs)j(a)g(set)g(of)g(default)g(k)m(ey)g (bindings)f(the)h(\014rst)e(time)j(it)f(is)f(called,)j(there)e(is)150 -1787 y(alw)m(a)m(ys)34 b(the)f(danger)f(that)i(a)f(custom)g(binding)e +3089 y(alw)m(a)m(ys)34 b(the)f(danger)f(that)i(a)f(custom)g(binding)e (installed)j(b)s(efore)e(the)h(\014rst)e(call)j(to)g -Fs(readline\(\))c Ft(will)150 1896 y(b)s(e)25 b(o)m(v)m(erridden.)39 +Fs(readline\(\))c Ft(will)150 3199 y(b)s(e)25 b(o)m(v)m(erridden.)39 b(An)26 b(alternate)h(mec)m(hanism)f(is)g(to)g(install)h(custom)f(k)m -(ey)g(bindings)f(in)g(an)h(initialization)150 2006 y(function)37 +(ey)g(bindings)f(in)g(an)h(initialization)150 3308 y(function)37 b(assigned)g(to)h(the)f Fs(rl_startup_hook)c Ft(v)-5 b(ariable)38 b(\(see)g(Section)g(2.3)g([Readline)g(V)-8 -b(ariables],)150 2115 y(page)31 b(28\).)275 2260 y(These)f(functions)g -(manage)h(k)m(ey)g(bindings.)3350 2465 y([F)-8 b(unction])-3599 +b(ariables],)150 3418 y(page)31 b(29\).)275 3549 y(These)f(functions)g +(manage)h(k)m(ey)g(bindings.)3350 3723 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_bind_key)c Fg(\()p Ff(in)m(t)34 b(k)m(ey)-8 -b(,)32 b(rl)p 1441 2465 30 5 v 43 w(command)p 1904 2465 -V 45 w(func)p 2133 2465 V 45 w(t)h(*function)p Fg(\))390 -2575 y Ft(Binds)f Fj(k)m(ey)42 b Ft(to)34 b Fj(function)e +b(,)32 b(rl)p 1441 3723 30 5 v 43 w(command)p 1904 3723 +V 45 w(func)p 2133 3723 V 45 w(t)h(*function)p Fg(\))390 +3832 y Ft(Binds)f Fj(k)m(ey)42 b Ft(to)34 b Fj(function)e Ft(in)h(the)g(curren)m(tly)g(activ)m(e)i(k)m(eymap.)49 -b(Returns)32 b(non-zero)i(in)f(the)g(case)390 2685 y(of)e(an)f(in)m(v) --5 b(alid)31 b Fj(k)m(ey)p Ft(.)3350 2890 y([F)-8 b(unction])-3599 +b(Returns)32 b(non-zero)i(in)f(the)g(case)390 3942 y(of)e(an)f(in)m(v) +-5 b(alid)31 b Fj(k)m(ey)p Ft(.)3350 4116 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_bind_key_in_map)e Fg(\()p Ff(in)m(t)34 -b(k)m(ey)-8 b(,)32 b(rl)p 1807 2890 V 43 w(command)p -2270 2890 V 45 w(func)p 2499 2890 V 45 w(t)h(*function,)565 -2999 y(Keymap)h(map)p Fg(\))390 3109 y Ft(Bind)c Fj(k)m(ey)39 +b(k)m(ey)-8 b(,)32 b(rl)p 1807 4116 V 43 w(command)p +2270 4116 V 45 w(func)p 2499 4116 V 45 w(t)h(*function,)565 +4225 y(Keymap)h(map)p Fg(\))390 4335 y Ft(Bind)c Fj(k)m(ey)39 b Ft(to)31 b Fj(function)f Ft(in)g Fj(map)p Ft(.)40 b(Returns)30 b(non-zero)h(in)f(the)h(case)g(of)f(an)h(in)m(v)-5 b(alid)31 -b Fj(k)m(ey)p Ft(.)3350 3314 y([F)-8 b(unction])-3599 +b Fj(k)m(ey)p Ft(.)3350 4509 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_bind_key_if_unboun)q(d)e Fg(\()p Ff(in)m(t)34 -b(k)m(ey)-8 b(,)32 b(rl)p 2016 3314 V 44 w(command)p -2480 3314 V 44 w(func)p 2708 3314 V 45 w(t)565 3424 y(*function)p -Fg(\))390 3533 y Ft(Binds)43 b Fj(k)m(ey)53 b Ft(to)45 +b(k)m(ey)-8 b(,)32 b(rl)p 2016 4509 V 44 w(command)p +2480 4509 V 44 w(func)p 2708 4509 V 45 w(t)565 4618 y(*function)p +Fg(\))390 4728 y Ft(Binds)43 b Fj(k)m(ey)53 b Ft(to)45 b Fj(function)e Ft(if)h(it)h(is)f(not)g(already)g(b)s(ound)e(in)i(the)g -(curren)m(tly)g(activ)m(e)i(k)m(eymap.)390 3643 y(Returns)29 +(curren)m(tly)g(activ)m(e)i(k)m(eymap.)390 4837 y(Returns)29 b(non-zero)i(in)f(the)h(case)g(of)g(an)f(in)m(v)-5 b(alid)31 b Fj(k)m(ey)39 b Ft(or)30 b(if)h Fj(k)m(ey)39 b Ft(is)30 -b(already)h(b)s(ound.)3350 3848 y([F)-8 b(unction])-3599 +b(already)h(b)s(ound.)3350 5011 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_bind_key_if_unboun)q(d_in)q(_ma)q(p)e -Fg(\()p Ff(in)m(t)34 b(k)m(ey)-8 b(,)32 b(rl)p 2382 3848 -V 44 w(command)p 2846 3848 V 44 w(func)p 3074 3848 V -46 w(t)565 3958 y(*function,)i(Keymap)g(map)p Fg(\))390 -4067 y Ft(Binds)27 b Fj(k)m(ey)36 b Ft(to)28 b Fj(function)f +Fg(\()p Ff(in)m(t)34 b(k)m(ey)-8 b(,)32 b(rl)p 2382 5011 +V 44 w(command)p 2846 5011 V 44 w(func)p 3074 5011 V +46 w(t)565 5121 y(*function,)i(Keymap)g(map)p Fg(\))390 +5230 y Ft(Binds)27 b Fj(k)m(ey)36 b Ft(to)28 b Fj(function)f Ft(if)g(it)h(is)f(not)h(already)g(b)s(ound)d(in)i Fj(map)p Ft(.)39 b(Returns)27 b(non-zero)g(in)g(the)h(case)390 -4177 y(of)j(an)f(in)m(v)-5 b(alid)31 b Fj(k)m(ey)39 b -Ft(or)30 b(if)g Fj(k)m(ey)39 b Ft(is)31 b(already)g(b)s(ound.)3350 -4382 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_unbind_key)d -Fg(\()p Ff(in)m(t)33 b(k)m(ey)p Fg(\))390 4491 y Ft(Bind)j +5340 y(of)j(an)f(in)m(v)-5 b(alid)31 b Fj(k)m(ey)39 b +Ft(or)30 b(if)g Fj(k)m(ey)39 b Ft(is)31 b(already)g(b)s(ound.)p +eop end +%%Page: 37 41 +TeXDict begin 37 40 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(37)3350 +299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_unbind_key)d +Fg(\()p Ff(in)m(t)33 b(k)m(ey)p Fg(\))390 408 y Ft(Bind)j Fj(k)m(ey)45 b Ft(to)37 b(the)f(n)m(ull)g(function)g(in)g(the)h(curren) m(tly)f(activ)m(e)i(k)m(eymap.)59 b(Returns)35 b(non-zero)i(in)390 -4601 y(case)31 b(of)g(error.)3350 4806 y([F)-8 b(unction])-3599 +518 y(case)31 b(of)g(error.)3350 693 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_unbind_key_in_map)f Fg(\()p Ff(in)m(t)33 -b(k)m(ey)-8 b(,)33 b(Keymap)g(map)p Fg(\))390 4916 y -Ft(Bind)d Fj(k)m(ey)39 b Ft(to)31 b(the)g(n)m(ull)f(function)g(in)g +b(k)m(ey)-8 b(,)33 b(Keymap)g(map)p Fg(\))390 803 y Ft(Bind)d +Fj(k)m(ey)39 b Ft(to)31 b(the)g(n)m(ull)f(function)g(in)g Fj(map)p Ft(.)40 b(Returns)30 b(non-zero)h(in)f(case)h(of)g(error.)3350 -5121 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_unbind_function_in)q -(_map)f Fg(\()p Ff(rl)p 1821 5121 V 44 w(command)p 2285 -5121 V 45 w(func)p 2514 5121 V 45 w(t)33 b(*function,)565 -5230 y(Keymap)h(map)p Fg(\))390 5340 y Ft(Un)m(bind)29 +978 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_unbind_function_in)q +(_map)f Fg(\()p Ff(rl)p 1821 978 30 5 v 44 w(command)p +2285 978 V 45 w(func)p 2514 978 V 45 w(t)33 b(*function,)565 +1088 y(Keymap)h(map)p Fg(\))390 1198 y Ft(Un)m(bind)29 b(all)i(k)m(eys)g(that)g(execute)h Fj(function)e Ft(in)g -Fj(map)p Ft(.)p eop end -%%Page: 36 40 -TeXDict begin 36 39 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(36)3350 -299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_unbind_command_in_)q(map) -f Fg(\()p Ff(const)34 b(c)m(har)g(*command,)f(Keymap)565 -408 y(map)p Fg(\))390 518 y Ft(Un)m(bind)c(all)i(k)m(eys)g(that)g(are)g -(b)s(ound)e(to)i Fj(command)i Ft(in)d Fj(map)p Ft(.)3350 -707 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_bind_keyseq)d -Fg(\()p Ff(const)34 b(c)m(har)g(*k)m(eyseq,)e(rl)p 2119 -707 30 5 v 44 w(command)p 2583 707 V 44 w(func)p 2811 -707 V 46 w(t)565 817 y(*function)p Fg(\))390 927 y Ft(Bind)43 +Fj(map)p Ft(.)3350 1373 y([F)-8 b(unction])-3599 b Fh(int)53 +b(rl_unbind_command_in_)q(map)f Fg(\()p Ff(const)34 b(c)m(har)g +(*command,)f(Keymap)565 1482 y(map)p Fg(\))390 1592 y +Ft(Un)m(bind)c(all)i(k)m(eys)g(that)g(are)g(b)s(ound)e(to)i +Fj(command)i Ft(in)d Fj(map)p Ft(.)3350 1767 y([F)-8 +b(unction])-3599 b Fh(int)53 b(rl_bind_keyseq)d Fg(\()p +Ff(const)34 b(c)m(har)g(*k)m(eyseq,)e(rl)p 2119 1767 +V 44 w(command)p 2583 1767 V 44 w(func)p 2811 1767 V +46 w(t)565 1877 y(*function)p Fg(\))390 1987 y Ft(Bind)43 b(the)g(k)m(ey)h(sequence)f(represen)m(ted)g(b)m(y)g(the)g(string)g Fj(k)m(eyseq)j Ft(to)e(the)f(function)g Fj(function)p -Ft(,)390 1036 y(b)s(eginning)27 b(in)h(the)h(curren)m(t)f(k)m(eymap.)40 +Ft(,)390 2096 y(b)s(eginning)27 b(in)h(the)h(curren)m(t)f(k)m(eymap.)40 b(This)28 b(mak)m(es)h(new)e(k)m(eymaps)i(as)f(necessary)-8 -b(.)41 b(The)28 b(return)390 1146 y(v)-5 b(alue)31 b(is)f(non-zero)h -(if)g Fj(k)m(eyseq)i Ft(is)d(in)m(v)-5 b(alid.)3350 1335 +b(.)41 b(The)28 b(return)390 2206 y(v)-5 b(alue)31 b(is)f(non-zero)h +(if)g Fj(k)m(eyseq)i Ft(is)d(in)m(v)-5 b(alid.)3350 2381 y([F)d(unction])-3599 b Fh(int)53 b(rl_bind_keyseq_in_map)f -Fg(\()p Ff(const)34 b(c)m(har)g(*k)m(eyseq,)565 1445 -y(rl)p 639 1445 V 44 w(command)p 1103 1445 V 44 w(func)p -1331 1445 V 45 w(t)f(*function,)h(Keymap)g(map)p Fg(\))390 -1554 y Ft(Bind)25 b(the)g(k)m(ey)h(sequence)f(represen)m(ted)g(b)m(y)g +Fg(\()p Ff(const)34 b(c)m(har)g(*k)m(eyseq,)565 2491 +y(rl)p 639 2491 V 44 w(command)p 1103 2491 V 44 w(func)p +1331 2491 V 45 w(t)f(*function,)h(Keymap)g(map)p Fg(\))390 +2600 y Ft(Bind)25 b(the)g(k)m(ey)h(sequence)f(represen)m(ted)g(b)m(y)g (the)g(string)g Fj(k)m(eyseq)j Ft(to)e(the)f(function)g -Fj(function)p Ft(.)39 b(This)390 1664 y(mak)m(es)30 b(new)f(k)m(eymaps) +Fj(function)p Ft(.)39 b(This)390 2710 y(mak)m(es)30 b(new)f(k)m(eymaps) g(as)g(necessary)-8 b(.)42 b(Initial)30 b(bindings)d(are)j(p)s (erformed)e(in)g Fj(map)p Ft(.)40 b(The)29 b(return)390 -1773 y(v)-5 b(alue)31 b(is)f(non-zero)h(if)g Fj(k)m(eyseq)i -Ft(is)d(in)m(v)-5 b(alid.)3350 1963 y([F)d(unction])-3599 +2819 y(v)-5 b(alue)31 b(is)f(non-zero)h(if)g Fj(k)m(eyseq)i +Ft(is)d(in)m(v)-5 b(alid.)3350 2995 y([F)d(unction])-3599 b Fh(int)53 b(rl_set_key)c Fg(\()p Ff(const)34 b(c)m(har)g(*k)m(eyseq,) -e(rl)p 1910 1963 V 44 w(command)p 2374 1963 V 44 w(func)p -2602 1963 V 45 w(t)h(*function,)565 2072 y(Keymap)h(map)p -Fg(\))390 2182 y Ft(Equiv)-5 b(alen)m(t)31 b(to)g Fs -(rl_bind_keyseq_in_map)p Ft(.)3350 2371 y([F)-8 b(unction])-3599 +e(rl)p 1910 2995 V 44 w(command)p 2374 2995 V 44 w(func)p +2602 2995 V 45 w(t)h(*function,)565 3104 y(Keymap)h(map)p +Fg(\))390 3214 y Ft(Equiv)-5 b(alen)m(t)31 b(to)g Fs +(rl_bind_keyseq_in_map)p Ft(.)3350 3389 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_bind_keyseq_if_unb)q(ound)f Fg(\()p -Ff(const)34 b(c)m(har)g(*k)m(eyseq,)565 2481 y(rl)p 639 -2481 V 44 w(command)p 1103 2481 V 44 w(func)p 1331 2481 -V 45 w(t)f(*function)p Fg(\))390 2590 y Ft(Binds)i Fj(k)m(eyseq)k +Ff(const)34 b(c)m(har)g(*k)m(eyseq,)565 3499 y(rl)p 639 +3499 V 44 w(command)p 1103 3499 V 44 w(func)p 1331 3499 +V 45 w(t)f(*function)p Fg(\))390 3608 y Ft(Binds)i Fj(k)m(eyseq)k Ft(to)d Fj(function)f Ft(if)g(it)h(is)g(not)g(already)g(b)s(ound)d(in)i -(the)h(curren)m(tly)f(activ)m(e)j(k)m(eymap.)390 2700 +(the)h(curren)m(tly)f(activ)m(e)j(k)m(eymap.)390 3718 y(Returns)29 b(non-zero)i(in)f(the)h(case)g(of)g(an)f(in)m(v)-5 b(alid)31 b Fj(k)m(eyseq)j Ft(or)c(if)g Fj(k)m(eyseq)k -Ft(is)c(already)h(b)s(ound.)3350 2889 y([F)-8 b(unction])-3599 +Ft(is)c(already)h(b)s(ound.)3350 3893 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_bind_keyseq_if_unb)q(ound)q(_in)q(_ma)q(p)e -Fg(\()p Ff(const)34 b(c)m(har)g(*k)m(eyseq,)565 2999 -y(rl)p 639 2999 V 44 w(command)p 1103 2999 V 44 w(func)p -1331 2999 V 45 w(t)f(*function,)h(Keymap)g(map)p Fg(\))390 -3108 y Ft(Binds)d Fj(k)m(eyseq)k Ft(to)e Fj(function)f +Fg(\()p Ff(const)34 b(c)m(har)g(*k)m(eyseq,)565 4003 +y(rl)p 639 4003 V 44 w(command)p 1103 4003 V 44 w(func)p +1331 4003 V 45 w(t)f(*function,)h(Keymap)g(map)p Fg(\))390 +4113 y Ft(Binds)d Fj(k)m(eyseq)k Ft(to)e Fj(function)f Ft(if)g(it)g(is)g(not)g(already)h(b)s(ound)d(in)h Fj(map)p -Ft(.)46 b(Returns)31 b(non-zero)h(in)g(the)390 3218 y(case)f(of)g(an)f +Ft(.)46 b(Returns)31 b(non-zero)h(in)g(the)390 4222 y(case)f(of)g(an)f (in)m(v)-5 b(alid)31 b Fj(k)m(eyseq)j Ft(or)c(if)g Fj(k)m(eyseq)k -Ft(is)c(already)h(b)s(ound.)3350 3407 y([F)-8 b(unction])-3599 +Ft(is)c(already)h(b)s(ound.)3350 4398 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_generic_bind)d Fg(\()p Ff(in)m(t)34 b(t)m(yp)s(e,)f(const)g(c)m(har)h(*k)m(eyseq,)f(c)m(har)h(*data,)565 -3517 y(Keymap)g(map)p Fg(\))390 3626 y Ft(Bind)27 b(the)g(k)m(ey)h +4507 y(Keymap)g(map)p Fg(\))390 4617 y Ft(Bind)27 b(the)g(k)m(ey)h (sequence)f(represen)m(ted)g(b)m(y)g(the)g(string)g Fj(k)m(eyseq)j Ft(to)e(the)f(arbitrary)g(p)s(oin)m(ter)g Fj(data)p Ft(.)390 -3736 y Fj(t)m(yp)s(e)34 b Ft(sa)m(ys)29 b(what)f(kind)g(of)g(data)h(is) +4726 y Fj(t)m(yp)s(e)34 b Ft(sa)m(ys)29 b(what)f(kind)g(of)g(data)h(is) g(p)s(oin)m(ted)f(to)h(b)m(y)g Fj(data)p Ft(;)h(this)e(can)h(b)s(e)f(a) -g(function)g(\()p Fs(ISFUNC)p Ft(\),)h(a)390 3846 y(macro)h(\()p +g(function)g(\()p Fs(ISFUNC)p Ft(\),)h(a)390 4836 y(macro)h(\()p Fs(ISMACR)p Ft(\),)f(or)g(a)h(k)m(eymap)g(\()p Fs(ISKMAP)p Ft(\).)40 b(This)28 b(mak)m(es)j(new)e(k)m(eymaps)g(as)h(necessary)-8 -b(.)41 b(The)390 3955 y(initial)32 b(k)m(eymap)e(in)h(whic)m(h)f(to)h -(do)f(bindings)f(is)i Fj(map)p Ft(.)3350 4144 y([F)-8 +b(.)41 b(The)390 4945 y(initial)32 b(k)m(eymap)e(in)h(whic)m(h)f(to)h +(do)f(bindings)f(is)i Fj(map)p Ft(.)3350 5121 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_parse_and_bind)e Fg(\()p -Ff(c)m(har)34 b(*line)p Fg(\))390 4254 y Ft(P)m(arse)c +Ff(c)m(har)34 b(*line)p Fg(\))390 5230 y Ft(P)m(arse)c Fj(line)35 b Ft(as)29 b(if)h(it)g(had)e(b)s(een)h(read)g(from)g(the)h Fs(inputrc)d Ft(\014le)j(and)e(p)s(erform)g(an)m(y)i(k)m(ey)g(bindings) -390 4364 y(and)g(v)-5 b(ariable)31 b(assignmen)m(ts)g(found)e(\(see)i -(Section)h(1.3)f([Readline)g(Init)f(File],)j(page)e(4\).)3350 -4553 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_read_init_file)e +390 5340 y(and)g(v)-5 b(ariable)31 b(assignmen)m(ts)g(found)e(\(see)i +(Section)h(1.3)f([Readline)g(Init)f(File],)j(page)e(4\).)p +eop end +%%Page: 38 42 +TeXDict begin 38 41 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(38)3350 +299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_read_init_file)e Fg(\()p Ff(const)34 b(c)m(har)g(*\014lename)p Fg(\))390 -4663 y Ft(Read)e(k)m(eybindings)f(and)g(v)-5 b(ariable)32 +408 y Ft(Read)e(k)m(eybindings)f(and)g(v)-5 b(ariable)32 b(assignmen)m(ts)g(from)f Fj(\014lename)37 b Ft(\(see)32 -b(Section)g(1.3)h([Readline)390 4772 y(Init)d(File],)i(page)f(4\).)150 -4974 y Fi(2.4.4)63 b(Asso)s(ciating)41 b(F)-10 b(unction)42 -b(Names)f(and)g(Bindings)150 5121 y Ft(These)30 b(functions)g(allo)m(w) -h(y)m(ou)g(to)f(\014nd)f(out)h(what)g(k)m(eys)h(in)m(v)m(ok)m(e)h -(named)e(functions)g(and)f(the)h(functions)150 5230 y(in)m(v)m(ok)m(ed) -f(b)m(y)e(a)h(particular)g(k)m(ey)g(sequence.)40 b(Y)-8 -b(ou)28 b(ma)m(y)g(also)h(asso)s(ciate)g(a)f(new)f(function)g(name)h -(with)f(an)150 5340 y(arbitrary)j(function.)p eop end -%%Page: 37 41 -TeXDict begin 37 40 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(37)3350 -299 y([F)-8 b(unction])-3599 b Fh(rl_command_func_t)57 -b(*)c(rl_named_function)e Fg(\()p Ff(const)34 b(c)m(har)g(*name)p -Fg(\))390 408 y Ft(Return)c(the)g(function)g(with)g(name)h -Fj(name)p Ft(.)3350 607 y([F)-8 b(unction])-3599 b Fh -(rl_command_func_t)57 b(*)c(rl_function_of_keyseq)f Fg(\()p -Ff(const)34 b(c)m(har)565 716 y(*k)m(eyseq,)f(Keymap)g(map,)g(in)m(t)h -(*t)m(yp)s(e)p Fg(\))390 826 y Ft(Return)e(the)g(function)h(in)m(v)m -(ok)m(ed)h(b)m(y)e Fj(k)m(eyseq)k Ft(in)c(k)m(eymap)h +b(Section)g(1.3)h([Readline)390 518 y(Init)d(File],)i(page)f(4\).)150 +726 y Fi(2.4.4)63 b(Asso)s(ciating)41 b(F)-10 b(unction)42 +b(Names)f(and)g(Bindings)150 873 y Ft(These)30 b(functions)g(allo)m(w)h +(y)m(ou)g(to)f(\014nd)f(out)h(what)g(k)m(eys)h(in)m(v)m(ok)m(e)h(named) +e(functions)g(and)f(the)h(functions)150 983 y(in)m(v)m(ok)m(ed)f(b)m(y) +e(a)h(particular)g(k)m(ey)g(sequence.)40 b(Y)-8 b(ou)28 +b(ma)m(y)g(also)h(asso)s(ciate)g(a)f(new)f(function)g(name)h(with)f(an) +150 1092 y(arbitrary)j(function.)3350 1295 y([F)-8 b(unction])-3599 +b Fh(rl_command_func_t)57 b(*)c(rl_named_function)e Fg(\()p +Ff(const)34 b(c)m(har)g(*name)p Fg(\))390 1404 y Ft(Return)c(the)g +(function)g(with)g(name)h Fj(name)p Ft(.)3350 1606 y([F)-8 +b(unction])-3599 b Fh(rl_command_func_t)57 b(*)c(rl_function_of_keyseq) +f Fg(\()p Ff(const)34 b(c)m(har)565 1716 y(*k)m(eyseq,)f(Keymap)g(map,) +g(in)m(t)h(*t)m(yp)s(e)p Fg(\))390 1826 y Ft(Return)e(the)g(function)h +(in)m(v)m(ok)m(ed)h(b)m(y)e Fj(k)m(eyseq)k Ft(in)c(k)m(eymap)h Fj(map)p Ft(.)47 b(If)32 b Fj(map)j Ft(is)d Fs(NULL)p -Ft(,)g(the)h(curren)m(t)390 936 y(k)m(eymap)k(is)g(used.)60 +Ft(,)g(the)h(curren)m(t)390 1935 y(k)m(eymap)k(is)g(used.)60 b(If)37 b Fj(t)m(yp)s(e)42 b Ft(is)37 b(not)g Fs(NULL)p Ft(,)h(the)f(t)m(yp)s(e)g(of)g(the)g(ob)5 b(ject)38 b(is)f(returned)f -(in)h(the)g Fs(int)390 1045 y Ft(v)-5 b(ariable)30 b(it)g(p)s(oin)m(ts) +(in)h(the)g Fs(int)390 2045 y Ft(v)-5 b(ariable)30 b(it)g(p)s(oin)m(ts) g(to)g(\(one)g(of)g Fs(ISFUNC)p Ft(,)e Fs(ISKMAP)p Ft(,)g(or)i Fs(ISMACR)p Ft(\).)39 b(It)30 b(tak)m(es)h(a)f Fs(")p -Ft(translated)p Fs(")f Ft(k)m(ey)390 1155 y(sequence)i(and)f(should)f +Ft(translated)p Fs(")f Ft(k)m(ey)390 2154 y(sequence)i(and)f(should)f (not)i(b)s(e)e(used)h(if)g(the)h(k)m(ey)g(sequence)g(can)f(include)g -(NUL.)3350 1353 y([F)-8 b(unction])-3599 b Fh(rl_command_func_t)57 +(NUL.)3350 2356 y([F)-8 b(unction])-3599 b Fh(rl_command_func_t)57 b(*)c(rl_function_of_keyseq_)q(len)f Fg(\()p Ff(const)34 -b(c)m(har)565 1463 y(*k)m(eyseq,)f(size)p 1121 1463 30 +b(c)m(har)565 2466 y(*k)m(eyseq,)f(size)p 1121 2466 30 5 v 44 w(t)g(len,)g(Keymap)h(map,)f(in)m(t)g(*t)m(yp)s(e)p -Fg(\))390 1572 y Ft(Return)20 b(the)h(function)g(in)m(v)m(ok)m(ed)i(b)m +Fg(\))390 2576 y Ft(Return)20 b(the)h(function)g(in)m(v)m(ok)m(ed)i(b)m (y)e Fj(k)m(eyseq)j Ft(of)d(length)g Fj(len)h Ft(in)e(k)m(eymap)i Fj(map)p Ft(.)37 b(Equiv)-5 b(alen)m(t)22 b(to)g Fs(rl_)390 -1682 y(function_of_keyseq)g Ft(with)28 b(the)f(addition)h(of)f(the)h +2685 y(function_of_keyseq)g Ft(with)28 b(the)f(addition)h(of)f(the)h Fj(len)f Ft(parameter.)41 b(It)27 b(tak)m(es)i(a)f Fs(")p -Ft(translated)p Fs(")390 1792 y Ft(k)m(ey)j(sequence)g(and)f(should)f +Ft(translated)p Fs(")390 2795 y Ft(k)m(ey)j(sequence)g(and)f(should)f (b)s(e)h(used)f(if)i(the)f(k)m(ey)h(sequence)g(can)g(include)f(NUL.) -3350 1990 y([F)-8 b(unction])-3599 b Fh(char)54 b(**)e -(rl_invoking_keyseqs)g Fg(\()p Ff(rl)p 1717 1990 V 44 -w(command)p 2181 1990 V 44 w(func)p 2409 1990 V 45 w(t)33 -b(*function)p Fg(\))390 2100 y Ft(Return)d(an)i(arra)m(y)f(of)h +3350 2997 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_trim_arg_from_keys) +q(eq)f Fg(\()p Ff(const)34 b(c)m(har)g(*k)m(eyseq,)e(size)p +2678 2997 V 44 w(t)h(len,)565 3107 y(Keymap)h(map)p Fg(\))390 +3216 y Ft(If)e(there)h(is)f(a)h(n)m(umeric)g(argumen)m(t)g(at)g(the)g +(b)s(eginning)e(of)i Fj(k)m(eyseq)p Ft(,)h(p)s(ossibly)e(including)g +(digits,)390 3326 y(return)24 b(the)h(index)f(of)i(the)f(\014rst)f(c)m +(haracter)i(in)f Fj(k)m(eyseq)j Ft(follo)m(wing)e(the)g(n)m(umeric)e +(argumen)m(t.)40 b(This)390 3435 y(can)24 b(b)s(e)g(used)f(to)h(skip)g +(o)m(v)m(er)h(the)f(n)m(umeric)g(argumen)m(t)g(\(whic)m(h)g(is)g(a)m(v) +-5 b(ailable)27 b(as)d Fs(rl_numeric_arg)390 3545 y Ft(while)30 +b(tra)m(v)m(ersing)i(the)f(k)m(ey)g(sequence)g(that)g(in)m(v)m(ok)m(ed) +g(the)g(curren)m(t)f(command.)3350 3747 y([F)-8 b(unction])-3599 +b Fh(char)54 b(**)e(rl_invoking_keyseqs)g Fg(\()p Ff(rl)p +1717 3747 V 44 w(command)p 2181 3747 V 44 w(func)p 2409 +3747 V 45 w(t)33 b(*function)p Fg(\))390 3857 y Ft(Return)d(an)i(arra)m +(y)f(of)h(strings)f(represen)m(ting)g(the)g(k)m(ey)h(sequences)g(used)e +(to)i(in)m(v)m(ok)m(e)h Fj(function)e Ft(in)390 3966 +y(the)g(curren)m(t)f(k)m(eymap.)3350 4168 y([F)-8 b(unction])-3599 +b Fh(char)54 b(**)e(rl_invoking_keyseqs_i)q(n_m)q(ap)g +Fg(\()p Ff(rl)p 2083 4168 V 44 w(command)p 2547 4168 +V 44 w(func)p 2775 4168 V 45 w(t)565 4278 y(*function,)34 +b(Keymap)g(map)p Fg(\))390 4388 y Ft(Return)c(an)i(arra)m(y)f(of)h (strings)f(represen)m(ting)g(the)g(k)m(ey)h(sequences)g(used)e(to)i(in) -m(v)m(ok)m(e)h Fj(function)e Ft(in)390 2209 y(the)g(curren)m(t)f(k)m -(eymap.)3350 2408 y([F)-8 b(unction])-3599 b Fh(char)54 -b(**)e(rl_invoking_keyseqs_i)q(n_m)q(ap)g Fg(\()p Ff(rl)p -2083 2408 V 44 w(command)p 2547 2408 V 44 w(func)p 2775 -2408 V 45 w(t)565 2517 y(*function,)34 b(Keymap)g(map)p -Fg(\))390 2627 y Ft(Return)c(an)i(arra)m(y)f(of)h(strings)f(represen)m -(ting)g(the)g(k)m(ey)h(sequences)g(used)e(to)i(in)m(v)m(ok)m(e)h -Fj(function)e Ft(in)390 2736 y(the)g(k)m(eymap)f Fj(map)p -Ft(.)3350 2935 y([F)-8 b(unction])-3599 b Fh(void)54 +m(v)m(ok)m(e)h Fj(function)e Ft(in)390 4497 y(the)g(k)m(eymap)f +Fj(map)p Ft(.)3350 4699 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_function_dumper)c Fg(\()p Ff(in)m(t)34 b(readable)p -Fg(\))390 3044 y Ft(Prin)m(t)29 b(the)h(readline)f(function)g(names)g -(and)g(the)g(k)m(ey)h(sequences)g(curren)m(tly)f(b)s(ound)e(to)j(them)f -(to)390 3154 y Fs(rl_outstream)p Ft(.)36 b(If)27 b Fj(readable)33 -b Ft(is)28 b(non-zero,)h(the)e(list)i(is)e(formatted)h(in)f(suc)m(h)g -(a)h(w)m(a)m(y)h(that)f(it)g(can)390 3264 y(b)s(e)i(made)g(part)g(of)h -(an)f Fs(inputrc)f Ft(\014le)h(and)g(re-read.)3350 3462 -y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_list_funmap_names)d -Fg(\()p Ff(v)m(oid)p Fg(\))390 3572 y Ft(Prin)m(t)30 +Fg(\))390 4809 y Ft(Prin)m(t)i(the)g(Readline)g(function)g(names)f(and) +g(the)h(k)m(ey)h(sequences)f(curren)m(tly)g(b)s(ound)d(to)k(them)390 +4919 y(to)32 b Fs(rl_outstream)p Ft(.)40 b(If)31 b Fj(readable)36 +b Ft(is)c(non-zero,)g(the)f(list)h(is)f(formatted)h(in)f(suc)m(h)g(a)g +(w)m(a)m(y)i(that)e(it)390 5028 y(can)g(b)s(e)e(made)i(part)f(of)h(an)f +Fs(inputrc)e Ft(\014le)j(and)e(re-read.)3350 5230 y([F)-8 +b(unction])-3599 b Fh(void)54 b(rl_list_funmap_names)d +Fg(\()p Ff(v)m(oid)p Fg(\))390 5340 y Ft(Prin)m(t)30 b(the)h(names)f(of)h(all)g(bindable)f(Readline)h(functions)f(to)h -Fs(rl_outstream)p Ft(.)3350 3770 y([F)-8 b(unction])-3599 -b Fh(const)54 b(char)f(**)g(rl_funmap_names)d Fg(\()p -Ff(v)m(oid)p Fg(\))390 3880 y Ft(Return)25 b(a)i(NULL)f(terminated)g -(arra)m(y)h(of)f(kno)m(wn)f(function)h(names.)39 b(The)26 -b(arra)m(y)g(is)g(sorted.)39 b(The)390 3989 y(arra)m(y)28 -b(itself)h(is)f(allo)s(cated,)j(but)c(not)h(the)h(strings)e(inside.)40 -b(Y)-8 b(ou)29 b(should)e(free)h(the)g(arra)m(y)-8 b(,)29 -b(but)f(not)390 4099 y(the)j(p)s(oin)m(ters,)f(using)g -Fs(free)f Ft(or)i Fs(rl_free)d Ft(when)h(y)m(ou)i(are)g(done.)3350 -4297 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_add_funmap_entry)e -Fg(\()p Ff(const)34 b(c)m(har)g(*name,)g(rl)p 2331 4297 -V 43 w(command)p 2794 4297 V 45 w(func)p 3023 4297 V -45 w(t)565 4407 y(*function)p Fg(\))390 4516 y Ft(Add)e +Fs(rl_outstream)p Ft(.)p eop end +%%Page: 39 43 +TeXDict begin 39 42 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(39)3350 +299 y([F)-8 b(unction])-3599 b Fh(const)54 b(char)f(**)g +(rl_funmap_names)d Fg(\()p Ff(v)m(oid)p Fg(\))390 408 +y Ft(Return)25 b(a)i(NULL)f(terminated)g(arra)m(y)h(of)f(kno)m(wn)f +(function)h(names.)39 b(The)26 b(arra)m(y)g(is)g(sorted.)39 +b(The)390 518 y(arra)m(y)28 b(itself)h(is)f(allo)s(cated,)j(but)c(not)h +(the)h(strings)e(inside.)40 b(Y)-8 b(ou)29 b(should)e(free)h(the)g +(arra)m(y)-8 b(,)29 b(but)f(not)390 628 y(the)j(p)s(oin)m(ters,)f +(using)g Fs(free)f Ft(or)i Fs(rl_free)d Ft(when)h(y)m(ou)i(are)g(done.) +3350 813 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_add_funmap_entry)e +Fg(\()p Ff(const)34 b(c)m(har)g(*name,)g(rl)p 2331 813 +30 5 v 43 w(command)p 2794 813 V 45 w(func)p 3023 813 +V 45 w(t)565 923 y(*function)p Fg(\))390 1033 y Ft(Add)e Fj(name)38 b Ft(to)33 b(the)g(list)h(of)f(bindable)f(Readline)h (command)g(names,)g(and)f(mak)m(e)i Fj(function)f Ft(the)390 -4626 y(function)d(to)h(b)s(e)f(called)h(when)f Fj(name)35 -b Ft(is)c(in)m(v)m(ok)m(ed.)150 4832 y Fi(2.4.5)63 b(Allo)m(wing)41 -b(Undoing)150 4979 y Ft(Supp)s(orting)34 b(the)i(undo)e(command)i(is)g +1142 y(function)d(to)h(b)s(e)f(called)h(when)f Fj(name)35 +b Ft(is)c(in)m(v)m(ok)m(ed.)150 1342 y Fi(2.4.5)63 b(Allo)m(wing)41 +b(Undoing)150 1489 y Ft(Supp)s(orting)34 b(the)i(undo)e(command)i(is)g (a)g(painless)g(thing,)h(and)e(mak)m(es)i(y)m(our)f(functions)f(m)m(uc) -m(h)h(more)150 5089 y(useful.)k(It)30 b(is)h(certainly)g(easy)g(to)g +m(h)h(more)150 1599 y(useful.)k(It)30 b(is)h(certainly)g(easy)g(to)g (try)g(something)g(if)f(y)m(ou)h(kno)m(w)f(y)m(ou)h(can)f(undo)g(it.) -275 5230 y(If)40 b(y)m(our)h(function)f(simply)g(inserts)h(text)h +275 1734 y(If)40 b(y)m(our)h(function)f(simply)g(inserts)h(text)h (once,)i(or)d(deletes)h(text)g(once,)i(and)c(uses)h Fs(rl_insert_)150 -5340 y(text\(\))26 b Ft(or)i Fs(rl_delete_text\(\))23 +1844 y(text\(\))26 b Ft(or)i Fs(rl_delete_text\(\))23 b Ft(to)29 b(do)f(it,)h(then)f(undoing)f(is)g(already)i(done)f(for)f(y) -m(ou)h(automatically)-8 b(.)p eop end -%%Page: 38 42 -TeXDict begin 38 41 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(38)275 -299 y(If)20 b(y)m(ou)g(do)h(m)m(ultiple)g(insertions)f(or)h(m)m -(ultiple)g(deletions,)j(or)c(an)m(y)h(com)m(bination)h(of)e(these)h(op) -s(erations,)150 408 y(y)m(ou)38 b(should)f(group)h(them)g(together)h -(in)m(to)g(one)f(op)s(eration.)64 b(This)37 b(is)h(done)g(with)g -Fs(rl_begin_undo_)150 518 y(group\(\))28 b Ft(and)i Fs -(rl_end_undo_group\(\))p Ft(.)275 649 y(The)f(t)m(yp)s(es)i(of)f(ev)m -(en)m(ts)i(that)f(can)g(b)s(e)e(undone)h(are:)390 757 -y Fe(enum)40 b(undo_code)h({)f(UNDO_DELETE,)i(UNDO_INSERT,)g -(UNDO_BEGIN,)g(UNDO_END)f(};)275 887 y Ft(Notice)32 b(that)f -Fs(UNDO_DELETE)c Ft(means)j(to)h(insert)f(some)h(text,)h(and)d -Fs(UNDO_INSERT)e Ft(means)k(to)g(delete)150 997 y(some)d(text.)41 -b(That)27 b(is,)i(the)e(undo)g(co)s(de)h(tells)g(what)g(to)g(undo,)f -(not)h(ho)m(w)g(to)g(undo)e(it.)41 b Fs(UNDO_BEGIN)25 -b Ft(and)150 1106 y Fs(UNDO_END)j Ft(are)j(tags)g(added)f(b)m(y)g -Fs(rl_begin_undo_group\(\))25 b Ft(and)30 b Fs(rl_end_undo_group\(\))p -Ft(.)3350 1279 y([F)-8 b(unction])-3599 b Fh(int)53 b -(rl_begin_undo_group)e Fg(\()p Ff(v)m(oid)p Fg(\))390 -1388 y Ft(Begins)32 b(sa)m(ving)g(undo)d(information)j(in)e(a)i(group)e -(construct.)43 b(The)30 b(undo)g(information)h(usually)390 -1498 y(comes)42 b(from)f(calls)i(to)f Fs(rl_insert_text\(\))37 -b Ft(and)k Fs(rl_delete_text\(\))p Ft(,)f(but)h(could)h(b)s(e)f(the)390 -1608 y(result)30 b(of)h(calls)g(to)g Fs(rl_add_undo\(\))p -Ft(.)3350 1780 y([F)-8 b(unction])-3599 b Fh(int)53 b -(rl_end_undo_group)e Fg(\()p Ff(v)m(oid)p Fg(\))390 1890 -y Ft(Closes)29 b(the)h(curren)m(t)e(undo)g(group)h(started)g(with)g -Fs(rl_begin_undo_group)c(\(\))p Ft(.)39 b(There)29 b(should)390 -1999 y(b)s(e)h(one)g(call)i(to)f Fs(rl_end_undo_group\(\))25 -b Ft(for)30 b(eac)m(h)i(call)g(to)f Fs(rl_begin_undo_group\(\))p -Ft(.)3350 2172 y([F)-8 b(unction])-3599 b Fh(void)54 -b(rl_add_undo)48 b Fg(\()p Ff(en)m(um)35 b(undo)p 1558 -2172 30 5 v 45 w(co)s(de)e(what,)g(in)m(t)g(start,)g(in)m(t)g(end,)h(c) -m(har)565 2281 y(*text)p Fg(\))390 2391 y Ft(Remem)m(b)s(er)g(ho)m(w)g -(to)h(undo)d(an)i(ev)m(en)m(t)i(\(according)f(to)g Fj(what)r -Ft(\).)52 b(The)33 b(a\013ected)j(text)f(runs)d(from)390 -2500 y Fj(start)h Ft(to)e Fj(end)p Ft(,)f(and)g(encompasses)h -Fj(text)p Ft(.)3350 2673 y([F)-8 b(unction])-3599 b Fh(void)54 +m(ou)h(automatically)-8 b(.)275 1979 y(If)20 b(y)m(ou)g(do)h(m)m +(ultiple)g(insertions)f(or)h(m)m(ultiple)g(deletions,)j(or)c(an)m(y)h +(com)m(bination)h(of)e(these)h(op)s(erations,)150 2088 +y(y)m(ou)38 b(should)f(group)h(them)g(together)h(in)m(to)g(one)f(op)s +(eration.)64 b(This)37 b(is)h(done)g(with)g Fs(rl_begin_undo_)150 +2198 y(group\(\))28 b Ft(and)i Fs(rl_end_undo_group\(\))p +Ft(.)275 2333 y(The)f(t)m(yp)s(es)i(of)f(ev)m(en)m(ts)i(that)f(can)g(b) +s(e)e(undone)h(are:)390 2446 y Fe(enum)40 b(undo_code)h({)f +(UNDO_DELETE,)i(UNDO_INSERT,)g(UNDO_BEGIN,)g(UNDO_END)f(};)275 +2581 y Ft(Notice)32 b(that)f Fs(UNDO_DELETE)c Ft(means)j(to)h(insert)f +(some)h(text,)h(and)d Fs(UNDO_INSERT)e Ft(means)k(to)g(delete)150 +2691 y(some)d(text.)41 b(That)27 b(is,)i(the)e(undo)g(co)s(de)h(tells)g +(what)g(to)g(undo,)f(not)h(ho)m(w)g(to)g(undo)e(it.)41 +b Fs(UNDO_BEGIN)25 b Ft(and)150 2800 y Fs(UNDO_END)j +Ft(are)j(tags)g(added)f(b)m(y)g Fs(rl_begin_undo_group\(\))25 +b Ft(and)30 b Fs(rl_end_undo_group\(\))p Ft(.)3350 2986 +y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_begin_undo_group)e +Fg(\()p Ff(v)m(oid)p Fg(\))390 3096 y Ft(Begins)32 b(sa)m(ving)g(undo)d +(information)j(in)e(a)i(group)e(construct.)43 b(The)30 +b(undo)g(information)h(usually)390 3205 y(comes)42 b(from)f(calls)i(to) +f Fs(rl_insert_text\(\))37 b Ft(and)k Fs(rl_delete_text\(\))p +Ft(,)f(but)h(could)h(b)s(e)f(the)390 3315 y(result)30 +b(of)h(calls)g(to)g Fs(rl_add_undo\(\))p Ft(.)3350 3501 +y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_end_undo_group)e +Fg(\()p Ff(v)m(oid)p Fg(\))390 3610 y Ft(Closes)29 b(the)h(curren)m(t)e +(undo)g(group)h(started)g(with)g Fs(rl_begin_undo_group)c(\(\))p +Ft(.)39 b(There)29 b(should)390 3720 y(b)s(e)h(one)g(call)i(to)f +Fs(rl_end_undo_group\(\))25 b Ft(for)30 b(eac)m(h)i(call)g(to)f +Fs(rl_begin_undo_group\(\))p Ft(.)3350 3906 y([F)-8 b(unction])-3599 +b Fh(void)54 b(rl_add_undo)48 b Fg(\()p Ff(en)m(um)35 +b(undo)p 1558 3906 V 45 w(co)s(de)e(what,)g(in)m(t)g(start,)g(in)m(t)g +(end,)h(c)m(har)565 4015 y(*text)p Fg(\))390 4125 y Ft(Remem)m(b)s(er)g +(ho)m(w)g(to)h(undo)d(an)i(ev)m(en)m(t)i(\(according)f(to)g +Fj(what)r Ft(\).)52 b(The)33 b(a\013ected)j(text)f(runs)d(from)390 +4235 y Fj(start)h Ft(to)e Fj(end)p Ft(,)f(and)g(encompasses)h +Fj(text)p Ft(.)3350 4420 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_free_undo_list)c Fg(\()p Ff(v)m(oid)p Fg(\))390 -2783 y Ft(F)-8 b(ree)31 b(the)g(existing)g(undo)f(list.)3350 -2955 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_do_undo)c -Fg(\()p Ff(v)m(oid)p Fg(\))390 3065 y Ft(Undo)22 b(the)h(\014rst)g +4530 y Ft(F)-8 b(ree)31 b(the)g(existing)g(undo)f(list.)3350 +4716 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_do_undo)c +Fg(\()p Ff(v)m(oid)p Fg(\))390 4825 y Ft(Undo)22 b(the)h(\014rst)g (thing)f(on)h(the)g(undo)f(list.)39 b(Returns)22 b Fs(0)g Ft(if)h(there)g(w)m(as)g(nothing)g(to)h(undo,)f(non-zero)390 -3174 y(if)30 b(something)h(w)m(as)g(undone.)275 3347 +4935 y(if)30 b(something)h(w)m(as)g(undone.)275 5121 y(Finally)-8 b(,)32 b(if)f(y)m(ou)h(neither)f(insert)g(nor)f(delete)j (text,)f(but)f(directly)g(mo)s(dify)g(the)g(existing)h(text)g(\(e.g.,) -150 3456 y(c)m(hange)40 b(its)f(case\),)j(call)e Fs(rl_modifying\(\))35 +150 5230 y(c)m(hange)40 b(its)f(case\),)j(call)e Fs(rl_modifying\(\))35 b Ft(once,)42 b(just)c(b)s(efore)g(y)m(ou)h(mo)s(dify)f(the)h(text.)67 -b(Y)-8 b(ou)39 b(m)m(ust)150 3566 y(supply)29 b(the)h(indices)h(of)f +b(Y)-8 b(ou)39 b(m)m(ust)150 5340 y(supply)29 b(the)h(indices)h(of)f (the)h(text)g(range)g(that)g(y)m(ou)g(are)g(going)g(to)g(mo)s(dify)-8 -b(.)3350 3738 y([F)g(unction])-3599 b Fh(int)53 b(rl_modifying)c +b(.)p eop end +%%Page: 40 44 +TeXDict begin 40 43 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(40)3350 +299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_modifying)c Fg(\()p Ff(in)m(t)34 b(start,)e(in)m(t)i(end)p Fg(\))390 -3848 y Ft(T)-8 b(ell)41 b(Readline)g(to)g(sa)m(v)m(e)g(the)g(text)g(b)s +408 y Ft(T)-8 b(ell)41 b(Readline)g(to)g(sa)m(v)m(e)g(the)g(text)g(b)s (et)m(w)m(een)g Fj(start)i Ft(and)c Fj(end)k Ft(as)e(a)f(single)h(undo) -e(unit.)70 b(It)40 b(is)390 3957 y(assumed)30 b(that)h(y)m(ou)f(will)h -(subsequen)m(tly)f(mo)s(dify)f(that)i(text.)150 4149 -y Fi(2.4.6)63 b(Redispla)m(y)3350 4338 y Ft([F)-8 b(unction])-3599 +e(unit.)70 b(It)40 b(is)390 518 y(assumed)30 b(that)h(y)m(ou)f(will)h +(subsequen)m(tly)f(mo)s(dify)f(that)i(text.)150 712 y +Fi(2.4.6)63 b(Redispla)m(y)3350 903 y Ft([F)-8 b(unction])-3599 b Fh(void)54 b(rl_redisplay)49 b Fg(\()p Ff(v)m(oid)p -Fg(\))390 4447 y Ft(Change)38 b(what's)f(displa)m(y)m(ed)i(on)e(the)h +Fg(\))390 1013 y Ft(Change)38 b(what's)f(displa)m(y)m(ed)i(on)e(the)h (screen)g(to)h(re\015ect)f(the)g(curren)m(t)g(con)m(ten)m(ts)h(of)f -Fs(rl_line_)390 4557 y(buffer)p Ft(.)3350 4729 y([F)-8 +Fs(rl_line_)390 1123 y(buffer)p Ft(.)3350 1299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_forced_update_disp)q(lay)f -Fg(\()p Ff(v)m(oid)p Fg(\))390 4839 y Ft(F)-8 b(orce)41 +Fg(\()p Ff(v)m(oid)p Fg(\))390 1409 y Ft(F)-8 b(orce)41 b(the)f(line)g(to)h(b)s(e)e(up)s(dated)f(and)h(redispla)m(y)m(ed,)k -(whether)c(or)g(not)h(Readline)h(thinks)e(the)390 4948 -y(screen)30 b(displa)m(y)h(is)f(correct.)3350 5121 y([F)-8 +(whether)c(or)g(not)h(Readline)h(thinks)e(the)390 1518 +y(screen)30 b(displa)m(y)h(is)f(correct.)3350 1695 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_on_new_line)d Fg(\()p -Ff(v)m(oid)p Fg(\))390 5230 y Ft(T)-8 b(ell)31 b(the)f(up)s(date)f +Ff(v)m(oid)p Fg(\))390 1804 y Ft(T)-8 b(ell)31 b(the)f(up)s(date)f (functions)g(that)i(w)m(e)f(ha)m(v)m(e)h(mo)m(v)m(ed)g(on)m(to)g(a)f -(new)f(\(empt)m(y\))i(line,)g(usually)e(after)390 5340 -y(outputting)i(a)f(newline.)p eop end -%%Page: 39 43 -TeXDict begin 39 42 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(39)3350 -299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_on_new_line_with_p)q -(romp)q(t)f Fg(\()p Ff(v)m(oid)p Fg(\))390 408 y Ft(T)-8 -b(ell)25 b(the)f(up)s(date)f(functions)h(that)h(w)m(e)f(ha)m(v)m(e)h -(mo)m(v)m(ed)g(on)m(to)h(a)e(new)g(line,)i(with)d Fj(rl)p -3106 408 28 4 v 40 w(prompt)i Ft(already)390 518 y(displa)m(y)m(ed.)41 -b(This)28 b(could)g(b)s(e)g(used)g(b)m(y)g(applications)i(that)f(w)m -(an)m(t)h(to)f(output)f(the)h(prompt)f(string)390 628 -y(themselv)m(es,)h(but)e(still)h(need)g(Readline)g(to)g(kno)m(w)f(the)h -(prompt)e(string)h(length)h(for)f(redispla)m(y)-8 b(.)41 -b(It)390 737 y(should)29 b(b)s(e)h(used)g(after)h(setting)g -Fj(rl)p 1590 737 V 40 w(already)p 1920 737 V 41 w(prompted)p -Ft(.)3350 920 y([F)-8 b(unction])-3599 b Fh(int)53 b -(rl_clear_visible_line)f Fg(\()p Ff(v)m(oid)p Fg(\))390 -1029 y Ft(Clear)31 b(the)f(screen)h(lines)f(corresp)s(onding)g(to)h -(the)f(curren)m(t)g(line's)h(con)m(ten)m(ts.)3350 1212 -y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_reset_line_state)e -Fg(\()p Ff(v)m(oid)p Fg(\))390 1322 y Ft(Reset)36 b(the)e(displa)m(y)h +(new)f(\(empt)m(y\))i(line,)g(usually)e(after)390 1914 +y(outputting)i(a)f(newline.)3350 2090 y([F)-8 b(unction])-3599 +b Fh(int)53 b(rl_on_new_line_with_p)q(romp)q(t)f Fg(\()p +Ff(v)m(oid)p Fg(\))390 2200 y Ft(T)-8 b(ell)25 b(the)f(up)s(date)f +(functions)h(that)h(w)m(e)f(ha)m(v)m(e)h(mo)m(v)m(ed)g(on)m(to)h(a)e +(new)g(line,)i(with)d Fj(rl)p 3106 2200 28 4 v 40 w(prompt)i +Ft(already)390 2309 y(displa)m(y)m(ed.)41 b(This)28 b(could)g(b)s(e)g +(used)g(b)m(y)g(applications)i(that)f(w)m(an)m(t)h(to)f(output)f(the)h +(prompt)f(string)390 2419 y(themselv)m(es,)h(but)e(still)h(need)g +(Readline)g(to)g(kno)m(w)f(the)h(prompt)e(string)h(length)h(for)f +(redispla)m(y)-8 b(.)41 b(It)390 2528 y(should)29 b(b)s(e)h(used)g +(after)h(setting)g Fj(rl)p 1590 2528 V 40 w(already)p +1920 2528 V 41 w(prompted)p Ft(.)3350 2705 y([F)-8 b(unction])-3599 +b Fh(int)53 b(rl_clear_visible_line)f Fg(\()p Ff(v)m(oid)p +Fg(\))390 2814 y Ft(Clear)31 b(the)f(screen)h(lines)f(corresp)s(onding) +g(to)h(the)f(curren)m(t)g(line's)h(con)m(ten)m(ts.)3350 +2991 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_reset_line_state)e +Fg(\()p Ff(v)m(oid)p Fg(\))390 3100 y Ft(Reset)36 b(the)e(displa)m(y)h (state)h(to)g(a)f(clean)g(state)h(and)e(redispla)m(y)h(the)g(curren)m -(t)g(line)g(starting)g(on)g(a)390 1431 y(new)30 b(line.)3350 -1614 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_crlf)48 -b Fg(\()p Ff(v)m(oid)p Fg(\))390 1724 y Ft(Mo)m(v)m(e)32 +(t)g(line)g(starting)g(on)g(a)390 3210 y(new)30 b(line.)3350 +3386 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_crlf)48 +b Fg(\()p Ff(v)m(oid)p Fg(\))390 3496 y Ft(Mo)m(v)m(e)32 b(the)f(cursor)f(to)h(the)f(start)h(of)g(the)f(next)h(screen)f(line.) -3350 1906 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_show_char)c -Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 2016 y Ft(Displa)m(y)g(c)m +3350 3672 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_show_char)c +Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 3782 y Ft(Displa)m(y)g(c)m (haracter)g Fj(c)k Ft(on)32 b Fs(rl_outstream)p Ft(.)44 b(If)32 b(Readline)h(has)g(not)f(b)s(een)g(set)h(to)g(displa)m(y)g -(meta)390 2125 y(c)m(haracters)27 b(directly)-8 b(,)29 +(meta)390 3891 y(c)m(haracters)27 b(directly)-8 b(,)29 b(this)c(will)i(con)m(v)m(ert)g(meta)g(c)m(haracters)h(to)e(a)h -(meta-pre\014xed)f(k)m(ey)g(sequence.)390 2235 y(This)k(is)g(in)m +(meta-pre\014xed)f(k)m(ey)g(sequence.)390 4001 y(This)k(is)g(in)m (tended)g(for)g(use)g(b)m(y)h(applications)g(whic)m(h)f(wish)g(to)h(do) -f(their)h(o)m(wn)f(redispla)m(y)-8 b(.)3350 2418 y([F)g(unction])-3599 +f(their)h(o)m(wn)f(redispla)m(y)-8 b(.)3350 4177 y([F)g(unction])-3599 b Fh(int)53 b(rl_message)c Fg(\()p Ff(const)34 b(c)m(har)g(*,)k(.)24 -b(.)g(.)12 b Fg(\))390 2527 y Ft(The)20 b(argumen)m(ts)h(are)g(a)g +b(.)g(.)12 b Fg(\))390 4287 y Ft(The)20 b(argumen)m(ts)h(are)g(a)g (format)g(string)g(as)f(w)m(ould)h(b)s(e)f(supplied)f(to)j -Fs(printf)p Ft(,)f(p)s(ossibly)e(con)m(taining)390 2637 +Fs(printf)p Ft(,)f(p)s(ossibly)e(con)m(taining)390 4396 y(con)m(v)m(ersion)45 b(sp)s(eci\014cations)g(suc)m(h)f(as)g(`)p Fs(\045d)p Ft(',)k(and)c(an)m(y)g(additional)h(argumen)m(ts)g -(necessary)f(to)390 2746 y(satisfy)e(the)f(con)m(v)m(ersion)i(sp)s +(necessary)f(to)390 4506 y(satisfy)e(the)f(con)m(v)m(ersion)i(sp)s (eci\014cations.)74 b(The)41 b(resulting)h(string)f(is)g(displa)m(y)m -(ed)h(in)f(the)h Fj(ec)m(ho)390 2856 y(area)p Ft(.)63 +(ed)h(in)f(the)h Fj(ec)m(ho)390 4616 y(area)p Ft(.)63 b(The)37 b(ec)m(ho)i(area)f(is)g(also)g(used)f(to)h(displa)m(y)g(n)m (umeric)f(argumen)m(ts)h(and)f(searc)m(h)h(strings.)390 -2966 y(Y)-8 b(ou)34 b(should)e(call)j Fs(rl_save_prompt)29 +4725 y(Y)-8 b(ou)34 b(should)e(call)j Fs(rl_save_prompt)29 b Ft(to)34 b(sa)m(v)m(e)h(the)f(prompt)e(information)i(b)s(efore)f -(calling)i(this)390 3075 y(function.)3350 3258 y([F)-8 +(calling)i(this)390 4835 y(function.)3350 5011 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_clear_message)e Fg(\()p -Ff(v)m(oid)p Fg(\))390 3367 y Ft(Clear)29 b(the)g(message)h(in)f(the)g +Ff(v)m(oid)p Fg(\))390 5121 y Ft(Clear)29 b(the)g(message)h(in)f(the)g (ec)m(ho)h(area.)41 b(If)29 b(the)g(prompt)f(w)m(as)h(sa)m(v)m(ed)h -(with)f(a)g(call)i(to)e Fs(rl_save_)390 3477 y(prompt)38 +(with)f(a)g(call)i(to)e Fs(rl_save_)390 5230 y(prompt)38 b Ft(b)s(efore)h(the)g(last)h(call)h(to)f Fs(rl_message)p Ft(,)f(call)i Fs(rl_restore_prompt)34 b Ft(b)s(efore)39 -b(calling)390 3587 y(this)30 b(function.)3350 3769 y([F)-8 -b(unction])-3599 b Fh(void)54 b(rl_save_prompt)49 b Fg(\()p -Ff(v)m(oid)p Fg(\))390 3879 y Ft(Sa)m(v)m(e)44 b(the)f(lo)s(cal)i -(Readline)e(prompt)f(displa)m(y)i(state)g(in)f(preparation)g(for)g -(displa)m(ying)g(a)g(new)390 3988 y(message)31 b(in)g(the)f(message)i -(area)f(with)f Fs(rl_message\(\))p Ft(.)3350 4171 y([F)-8 -b(unction])-3599 b Fh(void)54 b(rl_restore_prompt)c Fg(\()p -Ff(v)m(oid)p Fg(\))390 4281 y Ft(Restore)44 b(the)e(lo)s(cal)i -(Readline)g(prompt)d(displa)m(y)i(state)h(sa)m(v)m(ed)g(b)m(y)f(the)f -(most)h(recen)m(t)h(call)g(to)390 4390 y Fs(rl_save_prompt)p -Ft(.)69 b(if)41 b Fs(rl_save_prompt)d Ft(w)m(as)j(called)i(to)f(sa)m(v) -m(e)h(the)e(prompt)f(b)s(efore)h(a)h(call)390 4500 y(to)37 -b Fs(rl_message)p Ft(,)f(this)h(function)f(should)g(b)s(e)g(called)i(b) -s(efore)f(the)g(corresp)s(onding)e(call)j(to)g Fs(rl_)390 -4609 y(clear_message)p Ft(.)3350 4792 y([F)-8 b(unction])-3599 -b Fh(int)53 b(rl_expand_prompt)e Fg(\()p Ff(c)m(har)34 -b(*prompt)p Fg(\))390 4902 y Ft(Expand)41 b(an)m(y)j(sp)s(ecial)f(c)m -(haracter)h(sequences)f(in)g Fj(prompt)g Ft(and)f(set)i(up)d(the)i(lo)s -(cal)h(Readline)390 5011 y(prompt)35 b(redispla)m(y)h(v)-5 -b(ariables.)57 b(This)35 b(function)h(is)g(called)h(b)m(y)e -Fs(readline\(\))p Ft(.)55 b(It)35 b(ma)m(y)i(also)g(b)s(e)390 -5121 y(called)22 b(to)g(expand)f(the)g(primary)f(prompt)g(if)i(the)f -Fs(rl_on_new_line_with_prom)o(pt\()o(\))15 b Ft(function)390 -5230 y(or)25 b Fs(rl_already_prompted)c Ft(v)-5 b(ariable)26 +b(calling)390 5340 y(this)30 b(function.)p eop end +%%Page: 41 45 +TeXDict begin 41 44 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(41)3350 +299 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_save_prompt)49 +b Fg(\()p Ff(v)m(oid)p Fg(\))390 408 y Ft(Sa)m(v)m(e)44 +b(the)f(lo)s(cal)i(Readline)e(prompt)f(displa)m(y)i(state)g(in)f +(preparation)g(for)g(displa)m(ying)g(a)g(new)390 518 +y(message)31 b(in)g(the)f(message)i(area)f(with)f Fs(rl_message\(\))p +Ft(.)3350 722 y([F)-8 b(unction])-3599 b Fh(void)54 b +(rl_restore_prompt)c Fg(\()p Ff(v)m(oid)p Fg(\))390 832 +y Ft(Restore)44 b(the)e(lo)s(cal)i(Readline)g(prompt)d(displa)m(y)i +(state)h(sa)m(v)m(ed)g(b)m(y)f(the)f(most)h(recen)m(t)h(call)g(to)390 +941 y Fs(rl_save_prompt)p Ft(.)69 b(if)41 b Fs(rl_save_prompt)d +Ft(w)m(as)j(called)i(to)f(sa)m(v)m(e)h(the)e(prompt)f(b)s(efore)h(a)h +(call)390 1051 y(to)37 b Fs(rl_message)p Ft(,)f(this)h(function)f +(should)g(b)s(e)g(called)i(b)s(efore)f(the)g(corresp)s(onding)e(call)j +(to)g Fs(rl_)390 1161 y(clear_message)p Ft(.)3350 1365 +y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_expand_prompt)e +Fg(\()p Ff(c)m(har)34 b(*prompt)p Fg(\))390 1474 y Ft(Expand)41 +b(an)m(y)j(sp)s(ecial)f(c)m(haracter)h(sequences)f(in)g +Fj(prompt)g Ft(and)f(set)i(up)d(the)i(lo)s(cal)h(Readline)390 +1584 y(prompt)35 b(redispla)m(y)h(v)-5 b(ariables.)57 +b(This)35 b(function)h(is)g(called)h(b)m(y)e Fs(readline\(\))p +Ft(.)55 b(It)35 b(ma)m(y)i(also)g(b)s(e)390 1694 y(called)22 +b(to)g(expand)f(the)g(primary)f(prompt)g(if)i(the)f Fs +(rl_on_new_line_with_prom)o(pt\()o(\))15 b Ft(function)390 +1803 y(or)25 b Fs(rl_already_prompted)c Ft(v)-5 b(ariable)26 b(is)f(used.)39 b(It)25 b(returns)f(the)i(n)m(um)m(b)s(er)e(of)i -(visible)f(c)m(haracters)390 5340 y(on)34 b(the)g(last)g(line)g(of)g +(visible)f(c)m(haracters)390 1913 y(on)34 b(the)g(last)g(line)g(of)g (the)g(\(p)s(ossibly)f(m)m(ulti-line\))j(prompt.)50 b(Applications)34 -b(ma)m(y)h(indicate)f(that)p eop end -%%Page: 40 44 -TeXDict begin 40 43 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(40)390 -299 y(the)28 b(prompt)f(con)m(tains)i(c)m(haracters)g(that)g(tak)m(e)g -(up)e(no)h(ph)m(ysical)g(screen)g(space)g(when)f(displa)m(y)m(ed)390 -408 y(b)m(y)41 b(brac)m(k)m(eting)i(a)e(sequence)g(of)g(suc)m(h)g(c)m -(haracters)h(with)f(the)g(sp)s(ecial)h(mark)m(ers)f Fs(RL_PROMPT_)390 -518 y(START_IGNORE)29 b Ft(and)j Fs(RL_PROMPT_END_IGNORE)26 -b Ft(\(declared)33 b(in)f Fs(readline.h)p Ft(\).)44 b(This)32 -b(ma)m(y)h(b)s(e)390 628 y(used)d(to)h(em)m(b)s(ed)f(terminal-sp)s -(eci\014c)h(escap)s(e)f(sequences)h(in)f(prompts.)3350 -824 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_set_prompt)d -Fg(\()p Ff(const)34 b(c)m(har)g(*prompt)p Fg(\))390 934 +b(ma)m(y)h(indicate)f(that)390 2022 y(the)28 b(prompt)f(con)m(tains)i +(c)m(haracters)g(that)g(tak)m(e)g(up)e(no)h(ph)m(ysical)g(screen)g +(space)g(when)f(displa)m(y)m(ed)390 2132 y(b)m(y)41 b(brac)m(k)m(eting) +i(a)e(sequence)g(of)g(suc)m(h)g(c)m(haracters)h(with)f(the)g(sp)s +(ecial)h(mark)m(ers)f Fs(RL_PROMPT_)390 2242 y(START_IGNORE)34 +b Ft(and)j Fs(RL_PROMPT_END_IGNORE)32 b Ft(\(declared)39 +b(in)e Fs(readline.h)e Ft(as)j(`)p Fs(\\001)p Ft(')f(and)390 +2351 y(`)p Fs(\\002)p Ft(',)31 b(resp)s(ectiv)m(ely\).)46 +b(This)31 b(ma)m(y)h(b)s(e)f(used)f(to)j(em)m(b)s(ed)e(terminal-sp)s +(eci\014c)h(escap)s(e)g(sequences)390 2461 y(in)e(prompts.)3350 +2665 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_set_prompt)d +Fg(\()p Ff(const)34 b(c)m(har)g(*prompt)p Fg(\))390 2775 y Ft(Mak)m(e)28 b(Readline)g(use)f Fj(prompt)h Ft(for)e(subsequen)m(t)h (redispla)m(y)-8 b(.)40 b(This)26 b(calls)i Fs(rl_expand_prompt\(\))390 -1043 y Ft(to)j(expand)f(the)g(prompt)g(and)g(sets)g Fs(rl_prompt)e -Ft(to)j(the)g(result.)150 1249 y Fi(2.4.7)63 b(Mo)s(difying)43 -b(T)-10 b(ext)3350 1452 y Ft([F)i(unction])-3599 b Fh(int)53 +2884 y Ft(to)j(expand)f(the)g(prompt)g(and)g(sets)g Fs(rl_prompt)e +Ft(to)j(the)g(result.)150 3093 y Fi(2.4.7)63 b(Mo)s(difying)43 +b(T)-10 b(ext)3350 3300 y Ft([F)i(unction])-3599 b Fh(int)53 b(rl_insert_text)d Fg(\()p Ff(const)34 b(c)m(har)g(*text)p -Fg(\))390 1561 y Ft(Insert)d Fj(text)k Ft(in)m(to)d(the)g(line)g(at)g +Fg(\))390 3410 y Ft(Insert)d Fj(text)k Ft(in)m(to)d(the)g(line)g(at)g (the)g(curren)m(t)f(cursor)g(p)s(osition.)45 b(Returns)30 -b(the)i(n)m(um)m(b)s(er)f(of)g(c)m(har-)390 1671 y(acters)g(inserted.) -3350 1867 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_delete_text)d +b(the)i(n)m(um)m(b)s(er)f(of)g(c)m(har-)390 3519 y(acters)g(inserted.) +3350 3723 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_delete_text)d Fg(\()p Ff(in)m(t)33 b(start,)g(in)m(t)g(end)p Fg(\))390 -1977 y Ft(Delete)40 b(the)e(text)h(b)s(et)m(w)m(een)f +3833 y Ft(Delete)40 b(the)e(text)h(b)s(et)m(w)m(een)f Fj(start)i Ft(and)d Fj(end)k Ft(in)c(the)h(curren)m(t)g(line.)63 -b(Returns)36 b(the)i(n)m(um)m(b)s(er)f(of)390 2086 y(c)m(haracters)32 -b(deleted.)3350 2283 y([F)-8 b(unction])-3599 b Fh(char)54 +b(Returns)36 b(the)i(n)m(um)m(b)s(er)f(of)390 3943 y(c)m(haracters)32 +b(deleted.)3350 4147 y([F)-8 b(unction])-3599 b Fh(char)54 b(*)e(rl_copy_text)d Fg(\()p Ff(in)m(t)34 b(start,)e(in)m(t)h(end)p -Fg(\))390 2392 y Ft(Return)d(a)g(cop)m(y)h(of)g(the)g(text)g(b)s(et)m +Fg(\))390 4256 y Ft(Return)d(a)g(cop)m(y)h(of)g(the)g(text)g(b)s(et)m (w)m(een)g Fj(start)i Ft(and)d Fj(end)j Ft(in)d(the)h(curren)m(t)f -(line.)3350 2589 y([F)-8 b(unction])-3599 b Fh(int)53 +(line.)3350 4461 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_kill_text)c Fg(\()p Ff(in)m(t)34 b(start,)e(in)m(t)i(end)p -Fg(\))390 2698 y Ft(Cop)m(y)g(the)g(text)i(b)s(et)m(w)m(een)e +Fg(\))390 4570 y Ft(Cop)m(y)g(the)g(text)i(b)s(et)m(w)m(een)e Fj(start)j Ft(and)d Fj(end)j Ft(in)d(the)g(curren)m(t)g(line)g(to)h -(the)f(kill)h(ring,)g(app)s(ending)390 2808 y(or)f(prep)s(ending)e(to)j +(the)f(kill)h(ring,)g(app)s(ending)390 4680 y(or)f(prep)s(ending)e(to)j (the)f(last)h(kill)f(if)g(the)g(last)h(command)f(w)m(as)g(a)h(kill)f -(command.)51 b(The)34 b(text)h(is)390 2918 y(deleted.)51 +(command.)51 b(The)34 b(text)h(is)390 4789 y(deleted.)51 b(If)33 b Fj(start)j Ft(is)e(less)g(than)f Fj(end)p Ft(,)h(the)g(text)g (is)g(app)s(ended,)f(otherwise)h(prep)s(ended.)48 b(If)33 -b(the)390 3027 y(last)e(command)f(w)m(as)h(not)g(a)f(kill,)i(a)f(new)e -(kill)i(ring)g(slot)g(is)f(used.)3350 3224 y([F)-8 b(unction])-3599 +b(the)390 4899 y(last)e(command)f(w)m(as)h(not)g(a)f(kill,)i(a)f(new)e +(kill)i(ring)g(slot)g(is)f(used.)3350 5103 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_push_macro_input)e Fg(\()p Ff(c)m(har)35 -b(*macro)p Fg(\))390 3333 y Ft(Cause)28 b Fj(macro)33 +b(*macro)p Fg(\))390 5213 y Ft(Cause)28 b Fj(macro)33 b Ft(to)c(b)s(e)f(inserted)g(in)m(to)h(the)g(line,)g(as)f(if)h(it)f (had)g(b)s(een)g(in)m(v)m(ok)m(ed)h(b)m(y)f(a)h(k)m(ey)g(b)s(ound)d(to) -390 3443 y(a)31 b(macro.)41 b(Not)31 b(esp)s(ecially)h(useful;)e(use)g -Fs(rl_insert_text\(\))c Ft(instead.)150 3648 y Fi(2.4.8)63 -b(Character)39 b(Input)3350 3851 y Ft([F)-8 b(unction])-3599 -b Fh(int)53 b(rl_read_key)c Fg(\()p Ff(v)m(oid)p Fg(\))390 -3961 y Ft(Return)29 b(the)g(next)h(c)m(haracter)h(a)m(v)-5 -b(ailable)32 b(from)d(Readline's)h(curren)m(t)f(input)g(stream.)41 -b(This)28 b(han-)390 4070 y(dles)e(input)g(inserted)g(in)m(to)i(the)e -(input)g(stream)h(via)g Fj(rl)p 2226 4070 28 4 v 40 w(p)s(ending)p -2583 4070 V 38 w(input)h Ft(\(see)f(Section)h(2.3)f([Read-)390 -4180 y(line)40 b(V)-8 b(ariables],)43 b(page)d(28\))g(and)f +390 5322 y(a)31 b(macro.)41 b(Not)31 b(esp)s(ecially)h(useful;)e(use)g +Fs(rl_insert_text\(\))c Ft(instead.)p eop end +%%Page: 42 46 +TeXDict begin 42 45 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(42)150 +299 y Fi(2.4.8)63 b(Character)39 b(Input)3350 505 y Ft([F)-8 +b(unction])-3599 b Fh(int)53 b(rl_read_key)c Fg(\()p +Ff(v)m(oid)p Fg(\))390 615 y Ft(Return)29 b(the)g(next)h(c)m(haracter)h +(a)m(v)-5 b(ailable)32 b(from)d(Readline's)h(curren)m(t)f(input)g +(stream.)41 b(This)28 b(han-)390 724 y(dles)e(input)g(inserted)g(in)m +(to)i(the)e(input)g(stream)h(via)g Fj(rl)p 2226 724 28 +4 v 40 w(p)s(ending)p 2583 724 V 38 w(input)h Ft(\(see)f(Section)h(2.3) +f([Read-)390 834 y(line)40 b(V)-8 b(ariables],)43 b(page)d(29\))g(and)f Fs(rl_stuff_char\(\))p Ft(,)f(macros,)k(and)d(c)m(haracters)h(read)f -(from)390 4289 y(the)34 b(k)m(eyb)s(oard.)52 b(While)35 +(from)390 943 y(the)34 b(k)m(eyb)s(oard.)52 b(While)35 b(w)m(aiting)g(for)f(input,)g(this)g(function)g(will)g(call)i(an)m(y)e -(function)g(assigned)390 4399 y(to)d(the)g Fs(rl_event_hook)26 -b Ft(v)-5 b(ariable.)3350 4596 y([F)d(unction])-3599 +(function)g(assigned)390 1053 y(to)d(the)g Fs(rl_event_hook)26 +b Ft(v)-5 b(ariable.)3350 1256 y([F)d(unction])-3599 b Fh(int)53 b(rl_getc)48 b Fg(\()p Ff(FILE)33 b(*stream)p -Fg(\))390 4705 y Ft(Return)20 b(the)i(next)f(c)m(haracter)i(a)m(v)-5 +Fg(\))390 1365 y Ft(Return)20 b(the)i(next)f(c)m(haracter)i(a)m(v)-5 b(ailable)24 b(from)c Fj(stream)p Ft(,)k(whic)m(h)d(is)g(assumed)g(to)h -(b)s(e)e(the)i(k)m(eyb)s(oard.)3350 4902 y([F)-8 b(unction])-3599 +(b)s(e)e(the)i(k)m(eyb)s(oard.)3350 1568 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_stuff_char)d Fg(\()p Ff(in)m(t)33 b(c)p -Fg(\))390 5011 y Ft(Insert)f Fj(c)39 b Ft(in)m(to)34 +Fg(\))390 1678 y Ft(Insert)f Fj(c)39 b Ft(in)m(to)34 b(the)f(Readline)g(input)f(stream.)49 b(It)33 b(will)g(b)s(e)f Fs(")p Ft(read)p Fs(")g Ft(b)s(efore)h(Readline)g(attempts)390 -5121 y(to)27 b(read)g(c)m(haracters)h(from)f(the)g(terminal)g(with)f +1787 y(to)27 b(read)g(c)m(haracters)h(from)f(the)g(terminal)g(with)f Fs(rl_read_key\(\))p Ft(.)36 b(Up)27 b(to)g(512)h(c)m(haracters)g(ma)m -(y)390 5230 y(b)s(e)i(pushed)f(bac)m(k.)42 b Fs(rl_stuff_char)27 +(y)390 1897 y(b)s(e)i(pushed)f(bac)m(k.)42 b Fs(rl_stuff_char)27 b Ft(returns)i(1)i(if)f(the)h(c)m(haracter)h(w)m(as)f(successfully)g -(inserted;)390 5340 y(0)g(otherwise.)p eop end -%%Page: 41 45 -TeXDict begin 41 44 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(41)3350 -299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_execute_next)d -Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 408 y Ft(Mak)m(e)j -Fj(c)42 b Ft(b)s(e)35 b(the)h(next)f(command)h(to)g(b)s(e)f(executed)i -(when)d Fs(rl_read_key\(\))e Ft(is)k(called.)58 b(This)390 -518 y(sets)31 b Fj(rl)p 635 518 28 4 v 40 w(p)s(ending)p -992 518 V 38 w(input)p Ft(.)3350 680 y([F)-8 b(unction])-3599 +(inserted;)390 2007 y(0)g(otherwise.)3350 2209 y([F)-8 +b(unction])-3599 b Fh(int)53 b(rl_execute_next)d Fg(\()p +Ff(in)m(t)34 b(c)p Fg(\))390 2319 y Ft(Mak)m(e)j Fj(c)42 +b Ft(b)s(e)35 b(the)h(next)f(command)h(to)g(b)s(e)f(executed)i(when)d +Fs(rl_read_key\(\))e Ft(is)k(called.)58 b(This)390 2429 +y(sets)31 b Fj(rl)p 635 2429 V 40 w(p)s(ending)p 992 +2429 V 38 w(input)p Ft(.)3350 2631 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_clear_pending_inpu)q(t)e Fg(\()p Ff(v)m(oid)p -Fg(\))390 789 y Ft(Unset)42 b Fj(rl)p 729 789 V 40 w(p)s(ending)p -1086 789 V 38 w(input)p Ft(,)i(e\013ectiv)m(ely)h(negating)e(the)f -(e\013ect)h(of)f(an)m(y)g(previous)f(call)i(to)g Fs(rl_)390 -899 y(execute_next\(\))p Ft(.)59 b(This)36 b(w)m(orks)i(only)g(if)f -(the)h(p)s(ending)e(input)h(has)g(not)h(already)g(b)s(een)f(read)390 -1008 y(with)30 b Fs(rl_read_key\(\))p Ft(.)3350 1170 -y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_set_keyboard_input)q(_tim)q -(eou)q(t)e Fg(\()p Ff(in)m(t)34 b(u)p Fg(\))390 1280 -y Ft(While)41 b(w)m(aiting)g(for)f(k)m(eyb)s(oard)g(input)f(in)h -Fs(rl_read_key\(\))p Ft(,)f(Readline)i(will)f(w)m(ait)h(for)f -Fj(u)g Ft(mi-)390 1389 y(croseconds)31 b(for)g(input)f(b)s(efore)g -(calling)j(an)m(y)e(function)f(assigned)i(to)f Fs(rl_event_hook)p -Ft(.)39 b Fj(u)30 b Ft(m)m(ust)390 1499 y(b)s(e)h(greater)i(than)f(or)g -(equal)g(to)h(zero)f(\(a)h(zero-length)g(timeout)g(is)f(equiv)-5 -b(alen)m(t)33 b(to)g(a)f(p)s(oll\).)45 b(The)390 1608 -y(default)31 b(w)m(aiting)g(p)s(erio)s(d)e(is)i(one-ten)m(th)g(of)g(a)g -(second.)40 b(Returns)30 b(the)g(old)h(timeout)g(v)-5 -b(alue.)150 1793 y Fi(2.4.9)63 b(T)-10 b(erminal)41 b(Managemen)m(t) -3350 1974 y Ft([F)-8 b(unction])-3599 b Fh(void)54 b(rl_prep_terminal)c -Fg(\()p Ff(in)m(t)33 b(meta)p 1704 1974 30 5 v 44 w(\015ag)p -Fg(\))390 2084 y Ft(Mo)s(dify)42 b(the)h(terminal)g(settings)g(for)f +Fg(\))390 2741 y Ft(Unset)42 b Fj(rl)p 729 2741 V 40 +w(p)s(ending)p 1086 2741 V 38 w(input)p Ft(,)i(e\013ectiv)m(ely)h +(negating)e(the)f(e\013ect)h(of)f(an)m(y)g(previous)f(call)i(to)g +Fs(rl_)390 2851 y(execute_next\(\))p Ft(.)59 b(This)36 +b(w)m(orks)i(only)g(if)f(the)h(p)s(ending)e(input)h(has)g(not)h +(already)g(b)s(een)f(read)390 2960 y(with)30 b Fs(rl_read_key\(\))p +Ft(.)3350 3163 y([F)-8 b(unction])-3599 b Fh(int)53 b +(rl_set_keyboard_input)q(_tim)q(eou)q(t)e Fg(\()p Ff(in)m(t)34 +b(u)p Fg(\))390 3273 y Ft(While)41 b(w)m(aiting)g(for)f(k)m(eyb)s(oard) +g(input)f(in)h Fs(rl_read_key\(\))p Ft(,)f(Readline)i(will)f(w)m(ait)h +(for)f Fj(u)g Ft(mi-)390 3382 y(croseconds)31 b(for)g(input)f(b)s +(efore)g(calling)j(an)m(y)e(function)f(assigned)i(to)f +Fs(rl_event_hook)p Ft(.)39 b Fj(u)30 b Ft(m)m(ust)390 +3492 y(b)s(e)h(greater)i(than)f(or)g(equal)g(to)h(zero)f(\(a)h +(zero-length)g(timeout)g(is)f(equiv)-5 b(alen)m(t)33 +b(to)g(a)f(p)s(oll\).)45 b(The)390 3601 y(default)31 +b(w)m(aiting)g(p)s(erio)s(d)e(is)i(one-ten)m(th)g(of)g(a)g(second.)40 +b(Returns)30 b(the)g(old)h(timeout)g(v)-5 b(alue.)3350 +3804 y([F)d(unction])-3599 b Fh(int)53 b(rl_set_timeout)d +Fg(\()p Ff(unsigned)35 b(in)m(t)e(secs,)h(unsigned)h(in)m(t)e(usecs)p +Fg(\))390 3914 y Ft(Set)f(a)g(timeout)h(for)f(subsequen)m(t)f(calls)j +(to)e Fs(readline\(\))p Ft(.)43 b(If)31 b(Readline)i(do)s(es)f(not)g +(read)g(a)g(com-)390 4024 y(plete)37 b(line,)h(or)e(the)g(n)m(um)m(b)s +(er)f(of)h(c)m(haracters)i(sp)s(eci\014ed)d(b)m(y)h Fs +(rl_num_chars_to_read)p Ft(,)c(b)s(efore)390 4133 y(the)h(duration)g +(sp)s(eci\014ed)g(b)m(y)g Fj(secs)38 b Ft(\(in)33 b(seconds\))h(and)e +Fj(usecs)37 b Ft(\(microseconds\),)f(it)d(returns)g(and)390 +4243 y(sets)22 b Fs(RL_STATE_TIMEOUT)17 b Ft(in)k Fs(rl_readline_state) +p Ft(.)33 b(P)m(assing)22 b(0)g(for)f Fs(secs)g Ft(and)g +Fs(usecs)f Ft(cancels)390 4352 y(an)m(y)k(previously)f(set)h(timeout;)j +(the)d(con)m(v)m(enience)h(macro)f Fs(rl_clear_timeout\(\))19 +b Ft(is)k(shorthand)390 4462 y(for)30 b(this.)41 b(Returns)29 +b(0)i(if)f(the)h(timeout)g(is)g(set)g(successfully)-8 +b(.)3350 4665 y([F)g(unction])-3599 b Fh(int)53 b(rl_timeout_remaining) +f Fg(\()p Ff(unsigned)33 b(in)m(t)f(*secs,)h(unsigned)g(in)m(t)f +(*usecs)p Fg(\))390 4774 y Ft(Return)38 b(the)h(n)m(um)m(b)s(er)e(of)i +(seconds)f(and)g(microseconds)h(remaining)g(in)f(the)h(curren)m(t)f +(timeout)390 4884 y(duration)26 b(in)g Fj(*secs)31 b +Ft(and)26 b Fj(*usecs)p Ft(,)i(resp)s(ectiv)m(ely)-8 +b(.)41 b(Both)27 b Fj(*secs)k Ft(and)26 b Fj(*usecs)k +Ft(m)m(ust)c(b)s(e)g(non-NULL)390 4994 y(to)j(return)f(an)m(y)h(v)-5 +b(alues.)40 b(The)29 b(return)e(v)-5 b(alue)29 b(is)g(-1)g(on)g(error)f +(or)h(when)e(there)i(is)g(no)f(timeout)i(set,)390 5103 +y(0)35 b(when)e(the)i(timeout)h(has)e(expired)g(\(lea)m(ving)j +Fj(*secs)i Ft(and)34 b Fj(*usecs)39 b Ft(unc)m(hanged\),)c(and)f(1)h +(if)g(the)390 5213 y(timeout)27 b(has)e(not)h(expired.)38 +b(If)26 b(either)g(of)f Fj(secs)30 b Ft(and)25 b Fj(usecs)k +Ft(is)d Fs(NULL)p Ft(,)g(the)f(return)g(v)-5 b(alue)26 +b(indicates)390 5322 y(whether)k(the)g(timeout)i(has)e(expired.)p +eop end +%%Page: 43 47 +TeXDict begin 43 46 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(43)150 +299 y Fi(2.4.9)63 b(T)-10 b(erminal)41 b(Managemen)m(t)3350 +496 y Ft([F)-8 b(unction])-3599 b Fh(void)54 b(rl_prep_terminal)c +Fg(\()p Ff(in)m(t)33 b(meta)p 1704 496 30 5 v 44 w(\015ag)p +Fg(\))390 606 y Ft(Mo)s(dify)42 b(the)h(terminal)g(settings)g(for)f (Readline's)i(use,)h(so)e Fs(readline\(\))c Ft(can)k(read)f(a)h(single) -390 2193 y(c)m(haracter)32 b(at)g(a)f(time)h(from)e(the)h(k)m(eyb)s -(oard.)43 b(The)30 b Fj(meta)p 2376 2193 28 4 v 41 w(\015ag)39 -b Ft(argumen)m(t)31 b(should)f(b)s(e)g(non-zero)390 2303 +390 716 y(c)m(haracter)32 b(at)g(a)f(time)h(from)e(the)h(k)m(eyb)s +(oard.)43 b(The)30 b Fj(meta)p 2376 716 28 4 v 41 w(\015ag)39 +b Ft(argumen)m(t)31 b(should)f(b)s(e)g(non-zero)390 825 y(if)g(Readline)h(should)f(read)g(eigh)m(t-bit)i(input.)3350 -2465 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_deprep_terminal)c -Fg(\()p Ff(v)m(oid)p Fg(\))390 2574 y Ft(Undo)31 b(the)h(e\013ects)h +1011 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_deprep_terminal)c +Fg(\()p Ff(v)m(oid)p Fg(\))390 1121 y Ft(Undo)31 b(the)h(e\013ects)h (of)f Fs(rl_prep_terminal\(\))p Ft(,)27 b(lea)m(ving)33 b(the)f(terminal)g(in)f(the)h(state)h(in)e(whic)m(h)390 -2684 y(it)g(w)m(as)g(b)s(efore)f(the)g(most)h(recen)m(t)g(call)h(to)f -Fs(rl_prep_terminal\(\))p Ft(.)3350 2845 y([F)-8 b(unction])-3599 +1230 y(it)g(w)m(as)g(b)s(efore)f(the)g(most)h(recen)m(t)g(call)h(to)f +Fs(rl_prep_terminal\(\))p Ft(.)3350 1416 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_tty_set_default_bindi)q(ngs)e Fg(\()p -Ff(Keymap)34 b(kmap)p Fg(\))390 2955 y Ft(Read)j(the)g(op)s(erating)h +Ff(Keymap)34 b(kmap)p Fg(\))390 1526 y Ft(Read)j(the)g(op)s(erating)h (system's)f(terminal)g(editing)h(c)m(haracters)g(\(as)g(w)m(ould)e(b)s -(e)h(displa)m(y)m(ed)g(b)m(y)390 3065 y Fs(stty)p Ft(\))30 +(e)h(displa)m(y)m(ed)g(b)m(y)390 1635 y Fs(stty)p Ft(\))30 b(to)h(their)f(Readline)h(equiv)-5 b(alen)m(ts.)42 b(The)30 b(bindings)f(are)i(p)s(erformed)e(in)h Fj(kmap)p Ft(.)3350 -3226 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_tty_unset_default_bin)q -(din)q(gs)e Fg(\()p Ff(Keymap)34 b(kmap)p Fg(\))390 3336 +1821 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_tty_unset_default_bin)q +(din)q(gs)e Fg(\()p Ff(Keymap)34 b(kmap)p Fg(\))390 1931 y Ft(Reset)f(the)f(bindings)e(manipulated)i(b)m(y)g Fs (rl_tty_set_default_bind)o(ing)o(s)26 b Ft(so)32 b(that)g(the)g(ter-) -390 3445 y(minal)40 b(editing)g(c)m(haracters)h(are)f(b)s(ound)e(to)i +390 2040 y(minal)40 b(editing)g(c)m(haracters)h(are)f(b)s(ound)e(to)i Fs(rl_insert)p Ft(.)66 b(The)39 b(bindings)f(are)i(p)s(erformed)e(in) -390 3555 y Fj(kmap)p Ft(.)3350 3717 y([F)-8 b(unction])-3599 +390 2150 y Fj(kmap)p Ft(.)3350 2336 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_tty_set_echoing)e Fg(\()p Ff(in)m(t)34 -b(v)-6 b(alue)p Fg(\))390 3826 y Ft(Set)48 b(Readline's)g(idea)g(of)g +b(v)-6 b(alue)p Fg(\))390 2445 y Ft(Set)48 b(Readline's)g(idea)g(of)g (whether)f(or)g(not)h(it)g(is)f(ec)m(hoing)i(output)e(to)i(its)e -(output)h(stream)390 3936 y(\()p Fj(rl)p 492 3936 V 40 +(output)h(stream)390 2555 y(\()p Fj(rl)p 492 2555 V 40 w(outstream)p Ft(\).)j(If)32 b Fj(v)-5 b(alue)39 b Ft(is)34 b(0,)g(Readline)g(do)s(es)f(not)h(displa)m(y)f(output)g(to)h -Fj(rl)p 3115 3936 V 40 w(outstream)p Ft(;)i(an)m(y)390 -4045 y(other)43 b(v)-5 b(alue)43 b(enables)h(output.)77 +Fj(rl)p 3115 2555 V 40 w(outstream)p Ft(;)i(an)m(y)390 +2665 y(other)43 b(v)-5 b(alue)43 b(enables)h(output.)77 b(The)43 b(initial)h(v)-5 b(alue)43 b(is)g(set)g(when)f(Readline)i -(initializes)h(the)390 4155 y(terminal)31 b(settings.)42 +(initializes)h(the)390 2774 y(terminal)31 b(settings.)42 b(This)29 b(function)h(returns)f(the)i(previous)f(v)-5 -b(alue.)3350 4317 y([F)d(unction])-3599 b Fh(int)53 b +b(alue.)3350 2960 y([F)d(unction])-3599 b Fh(int)53 b (rl_reset_terminal)e Fg(\()p Ff(const)34 b(c)m(har)g(*terminal)p -2232 4317 30 5 v 43 w(name)p Fg(\))390 4426 y Ft(Reinitialize)26 +2232 2960 30 5 v 43 w(name)p Fg(\))390 3070 y Ft(Reinitialize)26 b(Readline's)f(idea)f(of)g(the)g(terminal)h(settings)f(using)g -Fj(terminal)p 2977 4426 28 4 v 40 w(name)29 b Ft(as)24 -b(the)g(termi-)390 4536 y(nal)32 b(t)m(yp)s(e)g(\(e.g.,)i -Fs(vt100)p Ft(\).)44 b(If)31 b Fj(terminal)p 1753 4536 +Fj(terminal)p 2977 3070 28 4 v 40 w(name)29 b Ft(as)24 +b(the)g(termi-)390 3179 y(nal)32 b(t)m(yp)s(e)g(\(e.g.,)i +Fs(vt100)p Ft(\).)44 b(If)31 b Fj(terminal)p 1753 3179 V 41 w(name)37 b Ft(is)31 b Fs(NULL)p Ft(,)h(the)g(v)-5 b(alue)32 b(of)g(the)g Fs(TERM)e Ft(en)m(vironmen)m(t)390 -4645 y(v)-5 b(ariable)31 b(is)g(used.)150 4830 y Fi(2.4.10)63 -b(Utilit)m(y)40 b(F)-10 b(unctions)3350 5011 y Ft([F)i(unction])-3599 +3289 y(v)-5 b(ariable)31 b(is)g(used.)150 3489 y Fi(2.4.10)63 +b(Utilit)m(y)40 b(F)-10 b(unctions)3350 3686 y Ft([F)i(unction])-3599 b Fh(int)53 b(rl_save_state)d Fg(\()p Ff(struct)34 b(readline)p -1759 5011 30 5 v 44 w(state)f(*sp)p Fg(\))390 5121 y +1759 3686 30 5 v 44 w(state)f(*sp)p Fg(\))390 3796 y Ft(Sa)m(v)m(e)d(a)f(snapshot)e(of)i(Readline's)g(in)m(ternal)g(state)h (to)f Fj(sp)p Ft(.)40 b(The)28 b(con)m(ten)m(ts)i(of)e(the)h -Fj(readline)p 3518 5121 28 4 v 40 w(state)390 5230 y +Fj(readline)p 3518 3796 28 4 v 40 w(state)390 3906 y Ft(structure)g(are)g(do)s(cumen)m(ted)g(in)g Fs(readline.h)p Ft(.)38 b(The)28 b(caller)j(is)e(resp)s(onsible)f(for)h(allo)s(cating)j -(the)390 5340 y(structure.)p eop end -%%Page: 42 46 -TeXDict begin 42 45 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(42)3350 -299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_restore_state)e -Fg(\()p Ff(struct)34 b(readline)p 1916 299 30 5 v 44 -w(state)f(*sp)p Fg(\))390 408 y Ft(Restore)23 b(Readline's)g(in)m -(ternal)g(state)g(to)g(that)g(stored)f(in)g Fj(sp)p Ft(,)i(whic)m(h)d -(m)m(ust)h(ha)m(v)m(e)i(b)s(een)d(sa)m(v)m(ed)i(b)m(y)g(a)390 -518 y(call)30 b(to)g Fs(rl_save_state)p Ft(.)37 b(The)28 -b(con)m(ten)m(ts)j(of)e(the)g Fj(readline)p 2470 518 -28 4 v 41 w(state)35 b Ft(structure)29 b(are)g(do)s(cumen)m(ted)390 -628 y(in)h Fs(readline.h)p Ft(.)38 b(The)30 b(caller)i(is)e(resp)s -(onsible)f(for)i(freeing)f(the)h(structure.)3350 810 -y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_free)47 b -Fg(\()p Ff(v)m(oid)33 b(*mem)p Fg(\))390 920 y Ft(Deallo)s(cate)25 -b(the)c(memory)g(p)s(oin)m(ted)g(to)h(b)m(y)f Fj(mem)p -Ft(.)38 b Fj(mem)21 b Ft(m)m(ust)g(ha)m(v)m(e)i(b)s(een)d(allo)s(cated) -j(b)m(y)e Fs(malloc)p Ft(.)3350 1103 y([F)-8 b(unction])-3599 -b Fh(void)54 b(rl_replace_line)c Fg(\()p Ff(const)34 -b(c)m(har)f(*text,)g(in)m(t)g(clear)p 2406 1103 30 5 -v 44 w(undo)p Fg(\))390 1212 y Ft(Replace)41 b(the)e(con)m(ten)m(ts)i -(of)f Fs(rl_line_buffer)35 b Ft(with)k Fj(text)p Ft(.)69 -b(The)39 b(p)s(oin)m(t)h(and)e(mark)h(are)h(pre-)390 -1322 y(serv)m(ed,)27 b(if)e(p)s(ossible.)39 b(If)25 b -Fj(clear)p 1422 1322 28 4 v 41 w(undo)k Ft(is)d(non-zero,)h(the)f(undo) -e(list)i(asso)s(ciated)h(with)e(the)h(curren)m(t)390 -1431 y(line)31 b(is)f(cleared.)3350 1614 y([F)-8 b(unction])-3599 -b Fh(void)54 b(rl_extend_line_buffer)d Fg(\()p Ff(in)m(t)34 -b(len)p Fg(\))390 1724 y Ft(Ensure)29 b(that)h Fs(rl_line_buffer)d -Ft(has)j(enough)f(space)i(to)g(hold)f Fj(len)g Ft(c)m(haracters,)i(p)s -(ossibly)d(real-)390 1833 y(lo)s(cating)j(it)f(if)f(necessary)-8 -b(.)3350 2016 y([F)g(unction])-3599 b Fh(int)53 b(rl_initialize)d -Fg(\()p Ff(v)m(oid)p Fg(\))390 2125 y Ft(Initialize)39 -b(or)e(re-initialize)i(Readline's)f(in)m(ternal)f(state.)62 -b(It's)37 b(not)g(strictly)h(necessary)f(to)h(call)390 -2235 y(this;)31 b Fs(readline\(\))c Ft(calls)32 b(it)f(b)s(efore)f -(reading)g(an)m(y)h(input.)3350 2418 y([F)-8 b(unction])-3599 -b Fh(int)53 b(rl_ding)48 b Fg(\()p Ff(v)m(oid)p Fg(\))390 -2527 y Ft(Ring)30 b(the)h(terminal)g(b)s(ell,)f(ob)s(eying)h(the)f -(setting)i(of)e Fs(bell-style)p Ft(.)3350 2710 y([F)-8 -b(unction])-3599 b Fh(int)53 b(rl_alphabetic)d Fg(\()p -Ff(in)m(t)33 b(c)p Fg(\))390 2819 y Ft(Return)d(1)g(if)h +(the)390 4015 y(structure.)3350 4201 y([F)-8 b(unction])-3599 +b Fh(int)53 b(rl_restore_state)e Fg(\()p Ff(struct)34 +b(readline)p 1916 4201 30 5 v 44 w(state)f(*sp)p Fg(\))390 +4311 y Ft(Restore)23 b(Readline's)g(in)m(ternal)g(state)g(to)g(that)g +(stored)f(in)g Fj(sp)p Ft(,)i(whic)m(h)d(m)m(ust)h(ha)m(v)m(e)i(b)s +(een)d(sa)m(v)m(ed)i(b)m(y)g(a)390 4420 y(call)30 b(to)g +Fs(rl_save_state)p Ft(.)37 b(The)28 b(con)m(ten)m(ts)j(of)e(the)g +Fj(readline)p 2470 4420 28 4 v 41 w(state)35 b Ft(structure)29 +b(are)g(do)s(cumen)m(ted)390 4530 y(in)h Fs(readline.h)p +Ft(.)38 b(The)30 b(caller)i(is)e(resp)s(onsible)f(for)i(freeing)f(the)h +(structure.)3350 4716 y([F)-8 b(unction])-3599 b Fh(void)54 +b(rl_free)47 b Fg(\()p Ff(v)m(oid)33 b(*mem)p Fg(\))390 +4825 y Ft(Deallo)s(cate)25 b(the)c(memory)g(p)s(oin)m(ted)g(to)h(b)m(y) +f Fj(mem)p Ft(.)38 b Fj(mem)21 b Ft(m)m(ust)g(ha)m(v)m(e)i(b)s(een)d +(allo)s(cated)j(b)m(y)e Fs(malloc)p Ft(.)3350 5011 y([F)-8 +b(unction])-3599 b Fh(void)54 b(rl_replace_line)c Fg(\()p +Ff(const)34 b(c)m(har)f(*text,)g(in)m(t)g(clear)p 2406 +5011 30 5 v 44 w(undo)p Fg(\))390 5121 y Ft(Replace)41 +b(the)e(con)m(ten)m(ts)i(of)f Fs(rl_line_buffer)35 b +Ft(with)k Fj(text)p Ft(.)69 b(The)39 b(p)s(oin)m(t)h(and)e(mark)h(are)h +(pre-)390 5230 y(serv)m(ed,)27 b(if)e(p)s(ossible.)39 +b(If)25 b Fj(clear)p 1422 5230 28 4 v 41 w(undo)k Ft(is)d(non-zero,)h +(the)f(undo)e(list)i(asso)s(ciated)h(with)e(the)h(curren)m(t)390 +5340 y(line)31 b(is)f(cleared.)p eop end +%%Page: 44 48 +TeXDict begin 44 47 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(44)3350 +299 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_extend_line_buffer)d +Fg(\()p Ff(in)m(t)34 b(len)p Fg(\))390 408 y Ft(Ensure)29 +b(that)h Fs(rl_line_buffer)d Ft(has)j(enough)f(space)i(to)g(hold)f +Fj(len)g Ft(c)m(haracters,)i(p)s(ossibly)d(real-)390 +518 y(lo)s(cating)j(it)f(if)f(necessary)-8 b(.)3350 756 +y([F)g(unction])-3599 b Fh(int)53 b(rl_initialize)d Fg(\()p +Ff(v)m(oid)p Fg(\))390 865 y Ft(Initialize)39 b(or)e(re-initialize)i +(Readline's)f(in)m(ternal)f(state.)62 b(It's)37 b(not)g(strictly)h +(necessary)f(to)h(call)390 975 y(this;)31 b Fs(readline\(\))c +Ft(calls)32 b(it)f(b)s(efore)f(reading)g(an)m(y)h(input.)3350 +1212 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_ding)48 +b Fg(\()p Ff(v)m(oid)p Fg(\))390 1322 y Ft(Ring)30 b(the)h(terminal)g +(b)s(ell,)f(ob)s(eying)h(the)f(setting)i(of)e Fs(bell-style)p +Ft(.)3350 1559 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_alphabetic)d +Fg(\()p Ff(in)m(t)33 b(c)p Fg(\))390 1669 y Ft(Return)d(1)g(if)h Fj(c)36 b Ft(is)30 b(an)h(alphab)s(etic)g(c)m(haracter.)3350 -3002 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_display_match_list)d +1906 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_display_match_list)d Fg(\()p Ff(c)m(har)35 b(**matc)m(hes,)e(in)m(t)g(len,)h(in)m(t)f(max)p -Fg(\))390 3112 y Ft(A)i(con)m(v)m(enience)h(function)e(for)g(displa)m +Fg(\))390 2016 y Ft(A)i(con)m(v)m(enience)h(function)e(for)g(displa)m (ying)h(a)g(list)g(of)g(strings)f(in)g(columnar)g(format)h(on)f(Read-) -390 3221 y(line's)g(output)f(stream.)51 b Fs(matches)31 +390 2126 y(line's)g(output)f(stream.)51 b Fs(matches)31 b Ft(is)j(the)f(list)i(of)e(strings,)i(in)e(argv)h(format,)h(suc)m(h)e -(as)h(a)g(list)g(of)390 3331 y(completion)26 b(matc)m(hes.)39 +(as)h(a)g(list)g(of)390 2235 y(completion)26 b(matc)m(hes.)39 b Fs(len)24 b Ft(is)g(the)g(n)m(um)m(b)s(er)f(of)i(strings)f(in)g Fs(matches)p Ft(,)f(and)h Fs(max)f Ft(is)i(the)f(length)h(of)390 -3440 y(the)h(longest)i(string)e(in)g Fs(matches)p Ft(.)37 +2345 y(the)h(longest)i(string)e(in)g Fs(matches)p Ft(.)37 b(This)25 b(function)h(uses)g(the)g(setting)i(of)e Fs -(print-completions-)390 3550 y(horizontally)33 b Ft(to)k(select)h(ho)m +(print-completions-)390 2454 y(horizontally)33 b Ft(to)k(select)h(ho)m (w)e(the)g(matc)m(hes)i(are)e(displa)m(y)m(ed)h(\(see)g(Section)g -(1.3.1)h([Readline)390 3660 y(Init)30 b(File)h(Syn)m(tax],)g(page)g +(1.3.1)h([Readline)390 2564 y(Init)30 b(File)h(Syn)m(tax],)g(page)g (4\).)42 b(When)29 b(displa)m(ying)i(completions,)h(this)e(function)g -(sets)g(the)g(n)m(um-)390 3769 y(b)s(er)23 b(of)g(columns)g(used)g(for) +(sets)g(the)g(n)m(um-)390 2674 y(b)s(er)23 b(of)g(columns)g(used)g(for) h(displa)m(y)f(to)i(the)e(v)-5 b(alue)24 b(of)g Fs (completion-display-width)p Ft(,)19 b(the)k(v)-5 b(alue)390 -3879 y(of)31 b(the)f(en)m(vironmen)m(t)h(v)-5 b(ariable)31 +2783 y(of)31 b(the)f(en)m(vironmen)m(t)h(v)-5 b(ariable)31 b Fs(COLUMNS)p Ft(,)e(or)h(the)h(screen)f(width,)g(in)g(that)h(order.) -275 4061 y(The)g(follo)m(wing)j(are)e(implemen)m(ted)h(as)f(macros,)h +275 3021 y(The)g(follo)m(wing)j(are)e(implemen)m(ted)h(as)f(macros,)h (de\014ned)e(in)h Fs(chardefs.h)p Ft(.)43 b(Applications)33 -b(should)150 4171 y(refrain)d(from)g(using)g(them.)3350 -4354 y([F)-8 b(unction])-3599 b Fh(int)53 b(_rl_uppercase_p)d -Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 4463 y Ft(Return)c(1)g(if)h +b(should)150 3130 y(refrain)d(from)g(using)g(them.)3350 +3368 y([F)-8 b(unction])-3599 b Fh(int)53 b(_rl_uppercase_p)d +Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 3477 y Ft(Return)c(1)g(if)h Fj(c)36 b Ft(is)30 b(an)h(upp)s(ercase)e(alphab)s(etic)i(c)m(haracter.) -3350 4646 y([F)-8 b(unction])-3599 b Fh(int)53 b(_rl_lowercase_p)d -Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 4756 y Ft(Return)c(1)g(if)h +3350 3715 y([F)-8 b(unction])-3599 b Fh(int)53 b(_rl_lowercase_p)d +Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 3824 y Ft(Return)c(1)g(if)h Fj(c)36 b Ft(is)30 b(a)h(lo)m(w)m(ercase)i(alphab)s(etic)e(c)m -(haracter.)3350 4938 y([F)-8 b(unction])-3599 b Fh(int)53 +(haracter.)3350 4062 y([F)-8 b(unction])-3599 b Fh(int)53 b(_rl_digit_p)c Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 -5048 y Ft(Return)c(1)g(if)h Fj(c)36 b Ft(is)30 b(a)h(n)m(umeric)f(c)m -(haracter.)3350 5230 y([F)-8 b(unction])-3599 b Fh(int)53 +4171 y Ft(Return)c(1)g(if)h Fj(c)36 b Ft(is)30 b(a)h(n)m(umeric)f(c)m +(haracter.)3350 4409 y([F)-8 b(unction])-3599 b Fh(int)53 b(_rl_to_upper)c Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 -5340 y Ft(If)23 b Fj(c)30 b Ft(is)24 b(a)g(lo)m(w)m(ercase)i(alphab)s +4519 y Ft(If)23 b Fj(c)30 b Ft(is)24 b(a)g(lo)m(w)m(ercase)i(alphab)s (etic)e(c)m(haracter,)j(return)c(the)h(corresp)s(onding)e(upp)s(ercase) -h(c)m(haracter.)p eop end -%%Page: 43 47 -TeXDict begin 43 46 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(43)3350 -299 y([F)-8 b(unction])-3599 b Fh(int)53 b(_rl_to_lower)c -Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 408 y Ft(If)28 b -Fj(c)35 b Ft(is)29 b(an)g(upp)s(ercase)f(alphab)s(etic)h(c)m(haracter,) -i(return)d(the)h(corresp)s(onding)f(lo)m(w)m(ercase)j(c)m(harac-)390 -518 y(ter.)3350 714 y([F)-8 b(unction])-3599 b Fh(int)53 -b(_rl_digit_value)d Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 -823 y Ft(If)c Fj(c)36 b Ft(is)31 b(a)f(n)m(um)m(b)s(er,)g(return)f(the) -h(v)-5 b(alue)31 b(it)g(represen)m(ts.)150 1028 y Fi(2.4.11)63 -b(Miscellaneous)42 b(F)-10 b(unctions)3350 1231 y Ft([F)i(unction]) --3599 b Fh(int)53 b(rl_macro_bind)d Fg(\()p Ff(const)34 -b(c)m(har)g(*k)m(eyseq,)e(const)i(c)m(har)g(*macro,)565 -1340 y(Keymap)g(map)p Fg(\))390 1450 y Ft(Bind)23 b(the)g(k)m(ey)h -(sequence)g Fj(k)m(eyseq)i Ft(to)e(in)m(v)m(ok)m(e)h(the)f(macro)f -Fj(macro)p Ft(.)39 b(The)23 b(binding)f(is)i(p)s(erformed)d(in)390 -1559 y Fj(map)p Ft(.)39 b(When)28 b Fj(k)m(eyseq)i Ft(is)e(in)m(v)m(ok) -m(ed,)i(the)d Fj(macro)33 b Ft(will)28 b(b)s(e)f(inserted)g(in)m(to)i -(the)e(line.)41 b(This)26 b(function)390 1669 y(is)k(deprecated;)i(use) -e Fs(rl_generic_bind\(\))25 b Ft(instead.)3350 1865 y([F)-8 +h(c)m(haracter.)3350 4756 y([F)-8 b(unction])-3599 b +Fh(int)53 b(_rl_to_lower)c Fg(\()p Ff(in)m(t)34 b(c)p +Fg(\))390 4866 y Ft(If)28 b Fj(c)35 b Ft(is)29 b(an)g(upp)s(ercase)f +(alphab)s(etic)h(c)m(haracter,)i(return)d(the)h(corresp)s(onding)f(lo)m +(w)m(ercase)j(c)m(harac-)390 4975 y(ter.)3350 5213 y([F)-8 +b(unction])-3599 b Fh(int)53 b(_rl_digit_value)d Fg(\()p +Ff(in)m(t)34 b(c)p Fg(\))390 5322 y Ft(If)c Fj(c)36 b +Ft(is)31 b(a)f(n)m(um)m(b)s(er,)g(return)f(the)h(v)-5 +b(alue)31 b(it)g(represen)m(ts.)p eop end +%%Page: 45 49 +TeXDict begin 45 48 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(45)150 +299 y Fi(2.4.11)63 b(Miscellaneous)42 b(F)-10 b(unctions)3350 +489 y Ft([F)i(unction])-3599 b Fh(int)53 b(rl_macro_bind)d +Fg(\()p Ff(const)34 b(c)m(har)g(*k)m(eyseq,)e(const)i(c)m(har)g +(*macro,)565 598 y(Keymap)g(map)p Fg(\))390 708 y Ft(Bind)23 +b(the)g(k)m(ey)h(sequence)g Fj(k)m(eyseq)i Ft(to)e(in)m(v)m(ok)m(e)h +(the)f(macro)f Fj(macro)p Ft(.)39 b(The)23 b(binding)f(is)i(p)s +(erformed)d(in)390 817 y Fj(map)p Ft(.)39 b(When)28 b +Fj(k)m(eyseq)i Ft(is)e(in)m(v)m(ok)m(ed,)i(the)d Fj(macro)33 +b Ft(will)28 b(b)s(e)f(inserted)g(in)m(to)i(the)e(line.)41 +b(This)26 b(function)390 927 y(is)k(deprecated;)i(use)e +Fs(rl_generic_bind\(\))25 b Ft(instead.)3350 1101 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_macro_dumper)c Fg(\()p -Ff(in)m(t)33 b(readable)p Fg(\))390 1974 y Ft(Prin)m(t)27 +Ff(in)m(t)33 b(readable)p Fg(\))390 1210 y Ft(Prin)m(t)27 b(the)g(k)m(ey)h(sequences)g(b)s(ound)d(to)j(macros)f(and)g(their)g(v) -5 b(alues,)28 b(using)f(the)g(curren)m(t)g(k)m(eymap,)390 -2084 y(to)32 b Fs(rl_outstream)p Ft(.)40 b(If)31 b Fj(readable)36 +1320 y(to)32 b Fs(rl_outstream)p Ft(.)40 b(If)31 b Fj(readable)36 b Ft(is)c(non-zero,)g(the)f(list)h(is)f(formatted)h(in)f(suc)m(h)g(a)g -(w)m(a)m(y)i(that)e(it)390 2193 y(can)g(b)s(e)e(made)i(part)f(of)h(an)f -Fs(inputrc)e Ft(\014le)j(and)e(re-read.)3350 2389 y([F)-8 +(w)m(a)m(y)i(that)e(it)390 1429 y(can)g(b)s(e)e(made)i(part)f(of)h(an)f +Fs(inputrc)e Ft(\014le)j(and)e(re-read.)3350 1603 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_variable_bind)e Fg(\()p Ff(const)34 b(c)m(har)f(*v)-6 b(ariable,)33 b(const)h(c)m(har)f(*v)-6 -b(alue)p Fg(\))390 2499 y Ft(Mak)m(e)31 b(the)e(Readline)g(v)-5 -b(ariable)30 b Fj(v)-5 b(ariable)35 b Ft(ha)m(v)m(e)30 -b Fj(v)-5 b(alue)p Ft(.)41 b(This)28 b(b)s(eha)m(v)m(es)h(as)h(if)f -(the)g(readline)g(com-)390 2608 y(mand)h(`)p Fs(set)g -Fl(variable)e(value)p Ft(')h(had)h(b)s(een)h(executed)g(in)g(an)f -Fs(inputrc)f Ft(\014le)i(\(see)h(Section)f(1.3.1)390 -2718 y([Readline)g(Init)f(File)i(Syn)m(tax],)f(page)g(4\).)3350 -2914 y([F)-8 b(unction])-3599 b Fh(char)54 b(*)e(rl_variable_value)f -Fg(\()p Ff(const)34 b(c)m(har)g(*v)-6 b(ariable)p Fg(\))390 -3023 y Ft(Return)28 b(a)i(string)f(represen)m(ting)h(the)f(v)-5 -b(alue)30 b(of)f(the)h(Readline)g(v)-5 b(ariable)30 b -Fj(v)-5 b(ariable)p Ft(.)41 b(F)-8 b(or)30 b(b)s(o)s(olean)390 -3133 y(v)-5 b(ariables,)31 b(this)g(string)f(is)g(either)h(`)p -Fs(on)p Ft(')f(or)h(`)p Fs(off)p Ft('.)3350 3328 y([F)-8 -b(unction])-3599 b Fh(void)54 b(rl_variable_dumper)c -Fg(\()p Ff(in)m(t)34 b(readable)p Fg(\))390 3438 y Ft(Prin)m(t)29 -b(the)f(readline)h(v)-5 b(ariable)30 b(names)e(and)g(their)h(curren)m -(t)f(v)-5 b(alues)29 b(to)h Fs(rl_outstream)p Ft(.)37 -b(If)28 b Fj(read-)390 3548 y(able)40 b Ft(is)34 b(non-zero,)i(the)e -(list)g(is)g(formatted)h(in)f(suc)m(h)g(a)g(w)m(a)m(y)h(that)g(it)f -(can)g(b)s(e)g(made)g(part)g(of)g(an)390 3657 y Fs(inputrc)28 -b Ft(\014le)j(and)f(re-read.)3350 3853 y([F)-8 b(unction])-3599 -b Fh(int)53 b(rl_set_paren_blink_ti)q(meou)q(t)f Fg(\()p -Ff(in)m(t)33 b(u)p Fg(\))390 3962 y Ft(Set)25 b(the)h(time)f(in)m(terv) --5 b(al)27 b(\(in)e(microseconds\))h(that)g(Readline)f(w)m(aits)h(when) -e(sho)m(wing)i(a)f(balancing)390 4072 y(c)m(haracter)32 +b(alue)p Fg(\))390 1713 y Ft(Mak)m(e)28 b(the)f(Readline)g(v)-5 +b(ariable)27 b Fj(v)-5 b(ariable)32 b Ft(ha)m(v)m(e)c +Fj(v)-5 b(alue)p Ft(.)40 b(This)25 b(b)s(eha)m(v)m(es)i(as)g(if)f(the)h +(Readline)g(com-)390 1822 y(mand)j(`)p Fs(set)g Fl(variable)e(value)p +Ft(')h(had)h(b)s(een)h(executed)g(in)g(an)f Fs(inputrc)f +Ft(\014le)i(\(see)h(Section)f(1.3.1)390 1932 y([Readline)g(Init)f(File) +i(Syn)m(tax],)f(page)g(4\).)3350 2106 y([F)-8 b(unction])-3599 +b Fh(char)54 b(*)e(rl_variable_value)f Fg(\()p Ff(const)34 +b(c)m(har)g(*v)-6 b(ariable)p Fg(\))390 2215 y Ft(Return)28 +b(a)i(string)f(represen)m(ting)h(the)f(v)-5 b(alue)30 +b(of)f(the)h(Readline)g(v)-5 b(ariable)30 b Fj(v)-5 b(ariable)p +Ft(.)41 b(F)-8 b(or)30 b(b)s(o)s(olean)390 2325 y(v)-5 +b(ariables,)31 b(this)g(string)f(is)g(either)h(`)p Fs(on)p +Ft(')f(or)h(`)p Fs(off)p Ft('.)3350 2499 y([F)-8 b(unction])-3599 +b Fh(void)54 b(rl_variable_dumper)c Fg(\()p Ff(in)m(t)34 +b(readable)p Fg(\))390 2608 y Ft(Prin)m(t)44 b(the)h(Readline)g(v)-5 +b(ariable)45 b(names)f(and)g(their)g(curren)m(t)g(v)-5 +b(alues)45 b(to)g Fs(rl_outstream)p Ft(.)79 b(If)390 +2718 y Fj(readable)37 b Ft(is)32 b(non-zero,)h(the)e(list)i(is)e +(formatted)h(in)g(suc)m(h)f(a)h(w)m(a)m(y)h(that)f(it)g(can)g(b)s(e)f +(made)g(part)h(of)390 2827 y(an)e Fs(inputrc)f Ft(\014le)h(and)g +(re-read.)3350 3001 y([F)-8 b(unction])-3599 b Fh(int)53 +b(rl_set_paren_blink_ti)q(meou)q(t)f Fg(\()p Ff(in)m(t)33 +b(u)p Fg(\))390 3111 y Ft(Set)25 b(the)h(time)f(in)m(terv)-5 +b(al)27 b(\(in)e(microseconds\))h(that)g(Readline)f(w)m(aits)h(when)e +(sho)m(wing)i(a)f(balancing)390 3220 y(c)m(haracter)32 b(when)d Fs(blink-matching-paren)c Ft(has)30 b(b)s(een)g(enabled.)3350 -4268 y([F)-8 b(unction])-3599 b Fh(char)54 b(*)e(rl_get_termcap)e -Fg(\()p Ff(const)34 b(c)m(har)g(*cap)p Fg(\))390 4377 +3394 y([F)-8 b(unction])-3599 b Fh(char)54 b(*)e(rl_get_termcap)e +Fg(\()p Ff(const)34 b(c)m(har)g(*cap)p Fg(\))390 3504 y Ft(Retriev)m(e)29 b(the)e(string)g(v)-5 b(alue)27 b(of)g(the)h (termcap)f(capabilit)m(y)i Fj(cap)p Ft(.)40 b(Readline)27 -b(fetc)m(hes)h(the)g(termcap)390 4487 y(en)m(try)34 b(for)f(the)h +b(fetc)m(hes)h(the)g(termcap)390 3613 y(en)m(try)34 b(for)f(the)h (curren)m(t)f(terminal)h(name)g(and)f(uses)g(those)h(capabilities)h(to) -f(mo)m(v)m(e)h(around)e(the)390 4596 y(screen)21 b(line)h(and)e(p)s +f(mo)m(v)m(e)h(around)e(the)390 3723 y(screen)21 b(line)h(and)e(p)s (erform)g(other)h(terminal-sp)s(eci\014c)h(op)s(erations,)h(lik)m(e)f -(erasing)g(a)f(line.)38 b(Readline)390 4706 y(do)s(es)d(not)g(use)g +(erasing)g(a)f(line.)38 b(Readline)390 3832 y(do)s(es)d(not)g(use)g (all)g(of)h(a)f(terminal's)g(capabilities,)k(and)34 b(this)h(function)g -(will)g(return)f(v)-5 b(alues)35 b(for)390 4816 y(only)30 -b(those)h(capabilities)i(Readline)e(uses.)3350 5011 y([F)-8 +(will)g(return)f(v)-5 b(alues)35 b(for)390 3942 y(only)30 +b(those)h(capabilities)i(Readline)e(uses.)3350 4116 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_clear_history)c Fg(\()p -Ff(v)m(oid)p Fg(\))390 5121 y Ft(Clear)27 b(the)h(history)f(list)h(b)m +Ff(v)m(oid)p Fg(\))390 4225 y Ft(Clear)27 b(the)h(history)f(list)h(b)m (y)f(deleting)h(all)g(of)f(the)h(en)m(tries,)h(in)d(the)i(same)f -(manner)g(as)g(the)g(History)390 5230 y(library's)42 +(manner)g(as)g(the)g(History)390 4335 y(library's)42 b Fs(clear_history\(\))d Ft(function.)78 b(This)42 b(di\013ers)g(from)g -Fs(clear_history)e Ft(b)s(ecause)i(it)390 5340 y(frees)30 +Fs(clear_history)e Ft(b)s(ecause)i(it)390 4445 y(frees)30 b(priv)-5 b(ate)31 b(data)g(Readline)g(sa)m(v)m(es)h(in)e(the)h -(history)f(list.)p eop end -%%Page: 44 48 -TeXDict begin 44 47 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(44)3350 -299 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_activate_mark)c -Fg(\()p Ff(v)m(oid)p Fg(\))390 408 y Ft(Enable)30 b(an)f -Fk(active)37 b Ft(mark.)j(When)30 b(this)f(is)h(enabled,)g(the)g(text)h -(b)s(et)m(w)m(een)f(p)s(oin)m(t)g(and)f(mark)g(\(the)390 -518 y Fj(region)p Ft(\))c(is)f(displa)m(y)m(ed)h(in)f(the)g(terminal's) -h(standout)f(mo)s(de)f(\(a)i Fj(face)5 b Ft(\).)40 b(This)24 -b(is)g(called)h(b)m(y)f(v)-5 b(arious)390 628 y(readline)30 -b(functions)f(that)i(set)f(the)g(mark)g(and)f(insert)h(text,)h(and)e -(is)h(a)m(v)-5 b(ailable)32 b(for)e(applications)390 -737 y(to)h(call.)3350 951 y([F)-8 b(unction])-3599 b -Fh(void)54 b(rl_deactivate_mark)c Fg(\()p Ff(v)m(oid)p -Fg(\))390 1061 y Ft(T)-8 b(urn)29 b(o\013)i(the)f(activ)m(e)j(mark.) -3350 1274 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_keep_mark_active)d -Fg(\()p Ff(v)m(oid)p Fg(\))390 1384 y Ft(Indicate)28 -b(that)g(the)g(mark)f(should)f(remain)h(activ)m(e)j(when)d(the)g -(curren)m(t)g(readline)h(function)f(com-)390 1494 y(pletes)h(and)f -(after)h(redispla)m(y)f(o)s(ccurs.)40 b(In)27 b(most)g(cases,)i(the)f -(mark)f(remains)g(activ)m(e)j(for)d(only)h(the)390 1603 -y(duration)i(of)g(a)h(single)g(bindable)f(readline)h(function.)3350 -1817 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_mark_active_p)e -Fg(\()p Ff(v)m(oid)p Fg(\))390 1927 y Ft(Return)30 b(a)g(non-zero)h(v) --5 b(alue)31 b(if)f(the)h(mark)f(is)h(curren)m(tly)f(activ)m(e;)j(zero) -e(otherwise.)150 2141 y Fi(2.4.12)63 b(Alternate)40 b(In)m(terface)150 -2288 y Ft(An)21 b(alternate)j(in)m(terface)f(is)f(a)m(v)-5 +(history)f(list.)3350 4618 y([F)-8 b(unction])-3599 b +Fh(void)54 b(rl_activate_mark)c Fg(\()p Ff(v)m(oid)p +Fg(\))390 4728 y Ft(Enable)30 b(an)f Fk(active)37 b Ft(mark.)j(When)30 +b(this)f(is)h(enabled,)g(the)g(text)h(b)s(et)m(w)m(een)f(p)s(oin)m(t)g +(and)f(mark)g(\(the)390 4837 y Fj(region)p Ft(\))c(is)f(displa)m(y)m +(ed)h(in)f(the)g(terminal's)h(standout)f(mo)s(de)f(\(a)i +Fj(face)5 b Ft(\).)40 b(This)24 b(is)g(called)h(b)m(y)f(v)-5 +b(arious)390 4947 y(Readline)28 b(functions)f(that)h(set)g(the)f(mark)g +(and)g(insert)g(text,)j(and)c(is)i(a)m(v)-5 b(ailable)30 +b(for)d(applications)390 5057 y(to)k(call.)3350 5230 +y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_deactivate_mark)c +Fg(\()p Ff(v)m(oid)p Fg(\))390 5340 y Ft(T)-8 b(urn)29 +b(o\013)i(the)f(activ)m(e)j(mark.)p eop end +%%Page: 46 50 +TeXDict begin 46 49 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(46)3350 +299 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_keep_mark_active)d +Fg(\()p Ff(v)m(oid)p Fg(\))390 408 y Ft(Indicate)45 b(that)g(the)g +(mark)f(should)g(remain)g(activ)m(e)j(when)c(the)i(curren)m(t)f +(Readline)h(function)390 518 y(completes)28 b(and)e(after)h(redispla)m +(y)g(o)s(ccurs.)40 b(In)26 b(most)h(cases,)h(the)f(mark)g(remains)f +(activ)m(e)j(for)e(only)390 628 y(the)k(duration)f(of)g(a)h(single)g +(bindable)f(Readline)h(function.)3350 799 y([F)-8 b(unction])-3599 +b Fh(int)53 b(rl_mark_active_p)e Fg(\()p Ff(v)m(oid)p +Fg(\))390 909 y Ft(Return)30 b(a)g(non-zero)h(v)-5 b(alue)31 +b(if)f(the)h(mark)f(is)h(curren)m(tly)f(activ)m(e;)j(zero)e(otherwise.) +150 1100 y Fi(2.4.12)63 b(Alternate)40 b(In)m(terface)150 +1247 y Ft(An)21 b(alternate)j(in)m(terface)f(is)f(a)m(v)-5 b(ailable)24 b(to)e(plain)g Fs(readline\(\))p Ft(.)35 b(Some)21 b(applications)i(need)f(to)g(in)m(terlea)m(v)m(e)150 -2397 y(k)m(eyb)s(oard)35 b(I/O)h(with)f(\014le,)i(device,)h(or)e(windo) +1356 y(k)m(eyb)s(oard)35 b(I/O)h(with)f(\014le,)i(device,)h(or)e(windo) m(w)f(system)g(I/O,)h(t)m(ypically)i(b)m(y)d(using)g(a)h(main)g(lo)s -(op)f(to)150 2507 y Fs(select\(\))42 b Ft(on)i(v)-5 b(arious)45 -b(\014le)f(descriptors.)83 b(T)-8 b(o)45 b(accommo)s(date)h(this)e -(need,)k(readline)d(can)f(also)i(b)s(e)150 2616 y(in)m(v)m(ok)m(ed)33 +(op)f(to)150 1466 y Fs(select\(\))40 b Ft(on)i(v)-5 b(arious)42 +b(\014le)g(descriptors.)76 b(T)-8 b(o)43 b(accommo)s(date)h(this)e +(need,)j(Readline)e(can)f(also)i(b)s(e)150 1576 y(in)m(v)m(ok)m(ed)33 b(as)e(a)h(`callbac)m(k')h(function)e(from)g(an)g(ev)m(en)m(t)h(lo)s (op.)44 b(There)30 b(are)i(functions)f(a)m(v)-5 b(ailable)33 -b(to)f(mak)m(e)150 2726 y(this)e(easy)-8 b(.)3350 2940 +b(to)f(mak)m(e)150 1685 y(this)e(easy)-8 b(.)3350 1857 y([F)g(unction])-3599 b Fh(void)54 b(rl_callback_handler_inst)q(all)e -Fg(\()p Ff(const)34 b(c)m(har)g(*prompt,)565 3049 y(rl)p -639 3049 30 5 v 44 w(v)m(cpfunc)p 1016 3049 V 45 w(t)f(*lhandler)p -Fg(\))390 3159 y Ft(Set)25 b(up)f(the)h(terminal)g(for)f(readline)i -(I/O)e(and)g(displa)m(y)h(the)g(initial)h(expanded)e(v)-5 -b(alue)26 b(of)f Fj(prompt)p Ft(.)390 3269 y(Sa)m(v)m(e)34 +Fg(\()p Ff(const)34 b(c)m(har)g(*prompt,)565 1966 y(rl)p +639 1966 30 5 v 44 w(v)m(cpfunc)p 1016 1966 V 45 w(t)f(*lhandler)p +Fg(\))390 2076 y Ft(Set)23 b(up)e(the)i(terminal)g(for)f(Readline)h +(I/O)g(and)f(displa)m(y)h(the)f(initial)i(expanded)e(v)-5 +b(alue)23 b(of)g Fj(prompt)p Ft(.)390 2186 y(Sa)m(v)m(e)34 b(the)f(v)-5 b(alue)33 b(of)g Fj(lhandler)39 b Ft(to)34 b(use)e(as)h(a)g(handler)f(function)h(to)g(call)h(when)e(a)h(complete)i -(line)390 3378 y(of)h(input)f(has)g(b)s(een)g(en)m(tered.)57 +(line)390 2295 y(of)h(input)f(has)g(b)s(een)g(en)m(tered.)57 b(The)35 b(handler)g(function)g(receiv)m(es)j(the)e(text)g(of)g(the)g -(line)g(as)g(an)390 3488 y(argumen)m(t.)k(As)29 b(with)f +(line)g(as)g(an)390 2405 y(argumen)m(t.)k(As)29 b(with)f Fs(readline\(\))p Ft(,)e(the)j(handler)e(function)h(should)g -Fs(free)f Ft(the)h(line)h(when)e(it)i(it)390 3597 y(\014nished)g(with)h -(it.)3350 3811 y([F)-8 b(unction])-3599 b Fh(void)54 +Fs(free)f Ft(the)h(line)h(when)e(it)i(it)390 2514 y(\014nished)g(with)h +(it.)3350 2686 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_callback_read_char)d Fg(\()p Ff(v)m(oid)p Fg(\))390 -3921 y Ft(Whenev)m(er)34 b(an)g(application)h(determines)e(that)i(k)m +2796 y Ft(Whenev)m(er)34 b(an)g(application)h(determines)e(that)i(k)m (eyb)s(oard)e(input)g(is)h(a)m(v)-5 b(ailable,)37 b(it)d(should)f(call) -390 4030 y Fs(rl_callback_read_char\(\))p Ft(,)17 b(whic)m(h)22 +390 2905 y Fs(rl_callback_read_char\(\))p Ft(,)17 b(whic)m(h)22 b(will)g(read)f(the)h(next)g(c)m(haracter)h(from)f(the)f(curren)m(t)h -(input)390 4140 y(source.)40 b(If)27 b(that)i(c)m(haracter)g(completes) +(input)390 3015 y(source.)40 b(If)27 b(that)i(c)m(haracter)g(completes) h(the)e(line,)h Fs(rl_callback_read_char)22 b Ft(will)28 -b(in)m(v)m(ok)m(e)i(the)390 4249 y Fj(lhandler)47 b Ft(function)40 +b(in)m(v)m(ok)m(e)i(the)390 3124 y Fj(lhandler)47 b Ft(function)40 b(installed)i(b)m(y)e Fs(rl_callback_handler_insta)o(ll)35 -b Ft(to)41 b(pro)s(cess)f(the)h(line.)390 4359 y(Before)j(calling)h +b Ft(to)41 b(pro)s(cess)f(the)h(line.)390 3234 y(Before)j(calling)h (the)e Fj(lhandler)49 b Ft(function,)e(the)c(terminal)h(settings)g(are) -g(reset)f(to)h(the)g(v)-5 b(alues)390 4469 y(they)44 +g(reset)f(to)h(the)g(v)-5 b(alues)390 3344 y(they)44 b(had)e(b)s(efore)h(calling)i Fs(rl_callback_handler_insta)o(ll)p Ft(.)73 b(If)43 b(the)h Fj(lhandler)49 b Ft(function)390 -4578 y(returns,)27 b(and)h(the)g(line)g(handler)f(remains)h(installed,) +3453 y(returns,)27 b(and)h(the)g(line)g(handler)f(remains)h(installed,) i(the)e(terminal)g(settings)h(are)f(mo)s(di\014ed)f(for)390 -4688 y(Readline's)k(use)f(again.)42 b Fs(EOF)29 b Ft(is)i(indicated)g +3563 y(Readline's)k(use)f(again.)42 b Fs(EOF)29 b Ft(is)i(indicated)g (b)m(y)f(calling)i Fj(lhandler)k Ft(with)30 b(a)h Fs(NULL)e -Ft(line.)3350 4902 y([F)-8 b(unction])-3599 b Fh(void)54 +Ft(line.)3350 3735 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_callback_sigcleanup)e Fg(\()p Ff(v)m(oid)p Fg(\))390 -5011 y Ft(Clean)26 b(up)e(an)m(y)i(in)m(ternal)g(state)h(the)e(callbac) +3844 y Ft(Clean)26 b(up)e(an)m(y)i(in)m(ternal)g(state)h(the)e(callbac) m(k)j(in)m(terface)f(uses)e(to)h(main)m(tain)g(state)h(b)s(et)m(w)m -(een)f(calls)390 5121 y(to)35 b(rl)p 572 5121 28 4 v -40 w(callbac)m(k)p 928 5121 V 42 w(read)p 1142 5121 V +(een)f(calls)390 3954 y(to)35 b(rl)p 572 3954 28 4 v +40 w(callbac)m(k)p 928 3954 V 42 w(read)p 1142 3954 V 40 w(c)m(har)f(\(e.g.,)j(the)e(state)g(of)f(an)m(y)h(activ)m(e)h (incremen)m(tal)f(searc)m(hes\).)54 b(This)33 b(is)390 -5230 y(in)m(tended)f(to)h(b)s(e)e(used)g(b)m(y)h(applications)h(that)g +4063 y(in)m(tended)f(to)h(b)s(e)e(used)g(b)m(y)h(applications)h(that)g (wish)e(to)i(p)s(erform)d(their)j(o)m(wn)f(signal)g(handling;)390 -5340 y(Readline's)f(in)m(ternal)g(signal)g(handler)f(calls)h(this)g -(when)e(appropriate.)p eop end -%%Page: 45 49 -TeXDict begin 45 48 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(45)3350 -299 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_callback_handler_remo)q -(ve)e Fg(\()p Ff(v)m(oid)p Fg(\))390 408 y Ft(Restore)37 -b(the)f(terminal)g(to)g(its)h(initial)g(state)g(and)e(remo)m(v)m(e)i -(the)f(line)g(handler.)56 b(Y)-8 b(ou)36 b(ma)m(y)h(call)390 -518 y(this)25 b(function)g(from)g(within)g(a)h(callbac)m(k)i(as)d(w)m -(ell)i(as)f(indep)s(enden)m(tly)-8 b(.)38 b(If)25 b(the)h -Fj(lhandler)31 b Ft(installed)390 628 y(b)m(y)25 b Fs -(rl_callback_handler_insta)o(ll)19 b Ft(do)s(es)25 b(not)h(exit)g(the)g -(program,)g(either)g(this)f(function)g(or)390 737 y(the)32 -b(function)f(referred)f(to)i(b)m(y)g(the)f(v)-5 b(alue)32 -b(of)g Fs(rl_deprep_term_function)25 b Ft(should)30 b(b)s(e)h(called) -390 847 y(b)s(efore)f(the)h(program)f(exits)h(to)g(reset)g(the)f -(terminal)h(settings.)150 1080 y Fi(2.4.13)63 b(A)41 -b(Readline)f(Example)150 1227 y Ft(Here)34 b(is)g(a)g(function)g(whic)m -(h)g(c)m(hanges)g(lo)m(w)m(ercase)j(c)m(haracters)e(to)f(their)g(upp)s -(ercase)f(equiv)-5 b(alen)m(ts,)37 b(and)150 1336 y(upp)s(ercase)d(c)m -(haracters)j(to)f(lo)m(w)m(ercase.)58 b(If)35 b(this)g(function)g(w)m -(as)h(b)s(ound)d(to)j(`)p Fs(M-c)p Ft(',)h(then)e(t)m(yping)g(`)p -Fs(M-c)p Ft(')150 1446 y(w)m(ould)c(c)m(hange)i(the)f(case)g(of)g(the)g -(c)m(haracter)h(under)d(p)s(oin)m(t.)44 b(T)m(yping)31 -b(`)p Fs(M-1)f(0)g(M-c)p Ft(')h(w)m(ould)g(c)m(hange)i(the)150 -1555 y(case)e(of)g(the)g(follo)m(wing)g(10)h(c)m(haracters,)g(lea)m -(ving)g(the)e(cursor)g(on)g(the)h(last)g(c)m(haracter)h(c)m(hanged.)390 -1724 y Fs(/*)47 b(Invert)f(the)h(case)g(of)g(the)g(COUNT)f(following)g -(characters.)e(*/)390 1833 y(int)390 1943 y(invert_case_line)f -(\(count,)j(key\))629 2052 y(int)h(count,)f(key;)390 -2162 y({)485 2271 y(register)g(int)h(start,)f(end,)h(i;)485 -2491 y(start)g(=)g(rl_point;)485 2710 y(if)h(\(rl_point)d(>=)i -(rl_end\))581 2819 y(return)f(\(0\);)485 3039 y(if)i(\(count)e(<)h(0\)) -581 3148 y({)676 3258 y(direction)f(=)h(-1;)676 3367 -y(count)g(=)g(-count;)581 3477 y(})485 3587 y(else)581 -3696 y(direction)e(=)j(1;)485 3915 y(/*)g(Find)e(the)h(end)g(of)g(the)g -(range)g(to)g(modify.)f(*/)485 4025 y(end)h(=)h(start)e(+)i(\(count)e -(*)h(direction\);)485 4244 y(/*)h(Force)e(it)h(to)g(be)h(within)e -(range.)g(*/)485 4354 y(if)i(\(end)e(>)i(rl_end\))581 -4463 y(end)f(=)g(rl_end;)485 4573 y(else)g(if)g(\(end)g(<)g(0\))581 -4682 y(end)g(=)g(0;)485 4902 y(if)h(\(start)e(==)h(end\))581 -5011 y(return)f(\(0\);)485 5230 y(if)i(\(start)e(>)h(end\))581 -5340 y({)p eop end -%%Page: 46 50 -TeXDict begin 46 49 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(46)676 -299 y Fs(int)47 b(temp)g(=)g(start;)676 408 y(start)g(=)g(end;)676 -518 y(end)g(=)h(temp;)581 628 y(})485 847 y(/*)g(Tell)e(readline)g -(that)g(we)i(are)f(modifying)e(the)i(line,)629 956 y(so)g(it)g(will)g -(save)f(the)h(undo)g(information.)d(*/)485 1066 y(rl_modifying)h -(\(start,)h(end\);)485 1285 y(for)h(\(i)h(=)f(start;)f(i)i(!=)f(end;)f -(i++\))581 1395 y({)676 1504 y(if)i(\(_rl_uppercase_p)43 -b(\(rl_line_buffer[i]\)\))772 1614 y(rl_line_buffer[i])g(=)k -(_rl_to_lower)e(\(rl_line_buffer[i]\);)676 1724 y(else)i(if)g -(\(_rl_lowercase_p)d(\(rl_line_buffer[i]\)\))772 1833 -y(rl_line_buffer[i])f(=)k(_rl_to_upper)e(\(rl_line_buffer[i]\);)581 -1943 y(})485 2052 y(/*)j(Move)e(point)h(to)g(on)g(top)g(of)g(the)g -(last)g(character)e(changed.)g(*/)485 2162 y(rl_point)h(=)h -(\(direction)e(==)j(1\))f(?)g(end)g(-)h(1)f(:)h(start;)485 -2271 y(return)f(\(0\);)390 2381 y(})150 2614 y Fi(2.4.14)63 -b(Alternate)40 b(In)m(terface)g(Example)150 2761 y Ft(Here)f(is)g(a)g -(complete)h(program)e(that)h(illustrates)h(Readline's)f(alternate)h(in) -m(terface.)67 b(It)38 b(reads)h(lines)150 2870 y(from)30 -b(the)i(terminal)f(and)f(displa)m(ys)h(them,)h(pro)m(viding)f(the)g -(standard)f(history)h(and)f(T)-8 b(AB)32 b(completion)150 -2980 y(functions.)40 b(It)31 b(understands)d(the)j(EOF)f(c)m(haracter)i -(or)e Fs(")p Ft(exit)p Fs(")h Ft(to)g(exit)g(the)g(program.)390 -3148 y Fs(/*)47 b(Standard)f(include)g(files.)g(stdio.h)f(is)j -(required.)d(*/)390 3258 y(#include)h()390 -3367 y(#include)g()390 3477 y(#include)g()390 -3587 y(#include)g()390 3806 y(/*)h(Used)g(for)g(select\(2\))e -(*/)390 3915 y(#include)h()390 4025 y(#include)g -()390 4244 y(#include)g()390 -4463 y(#include)g()390 4682 y(/*)h(Standard)f(readline)f -(include)h(files.)g(*/)390 4792 y(#include)g()390 -4902 y(#include)g()390 5121 y(static)g(void)h -(cb_linehandler)d(\(char)i(*\);)390 5230 y(static)g(void)h(sighandler)e -(\(int\);)p eop end +4173 y(Readline's)f(in)m(ternal)g(signal)g(handler)f(calls)h(this)g +(when)e(appropriate.)3350 4345 y([F)-8 b(unction])-3599 +b Fh(void)54 b(rl_callback_handler_remo)q(ve)e Fg(\()p +Ff(v)m(oid)p Fg(\))390 4454 y Ft(Restore)37 b(the)f(terminal)g(to)g +(its)h(initial)g(state)g(and)e(remo)m(v)m(e)i(the)f(line)g(handler.)56 +b(Y)-8 b(ou)36 b(ma)m(y)h(call)390 4564 y(this)25 b(function)g(from)g +(within)g(a)h(callbac)m(k)i(as)d(w)m(ell)i(as)f(indep)s(enden)m(tly)-8 +b(.)38 b(If)25 b(the)h Fj(lhandler)31 b Ft(installed)390 +4673 y(b)m(y)25 b Fs(rl_callback_handler_insta)o(ll)19 +b Ft(do)s(es)25 b(not)h(exit)g(the)g(program,)g(either)g(this)f +(function)g(or)390 4783 y(the)32 b(function)f(referred)f(to)i(b)m(y)g +(the)f(v)-5 b(alue)32 b(of)g Fs(rl_deprep_term_function)25 +b Ft(should)30 b(b)s(e)h(called)390 4893 y(b)s(efore)f(the)h(program)f +(exits)h(to)g(reset)g(the)f(terminal)h(settings.)150 +5083 y Fi(2.4.13)63 b(A)41 b(Readline)f(Example)150 5230 +y Ft(Here)34 b(is)g(a)g(function)g(whic)m(h)g(c)m(hanges)g(lo)m(w)m +(ercase)j(c)m(haracters)e(to)f(their)g(upp)s(ercase)f(equiv)-5 +b(alen)m(ts,)37 b(and)150 5340 y(upp)s(ercase)d(c)m(haracters)j(to)f +(lo)m(w)m(ercase.)58 b(If)35 b(this)g(function)g(w)m(as)h(b)s(ound)d +(to)j(`)p Fs(M-c)p Ft(',)h(then)e(t)m(yping)g(`)p Fs(M-c)p +Ft(')p eop end %%Page: 47 51 TeXDict begin 47 50 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(47)390 -299 y Fs(int)47 b(running;)390 408 y(int)g(sigwinch_received;)390 -518 y(const)f(char)h(*prompt)f(=)h("rltest$)f(";)390 -737 y(/*)h(Handle)f(SIGWINCH)g(and)h(window)f(size)g(changes)g(when)h -(readline)e(is)j(not)f(active)f(and)p 3922 757 42 84 -v 533 847 a(reading)g(a)h(character.)e(*/)390 956 y(static)h(void)390 -1066 y(sighandler)f(\(int)i(sig\))390 1176 y({)485 1285 -y(sigwinch_received)d(=)j(1;)390 1395 y(})390 1614 y(/*)g(Callback)f -(function)f(called)h(for)h(each)g(line)g(when)f(accept-line)f -(executed,)g(EOF)533 1724 y(seen,)i(or)g(EOF)g(character)e(read.)94 -b(This)47 b(sets)f(a)i(flag)e(and)h(returns;)f(it)h(could)533 -1833 y(also)g(call)f(exit\(3\).)g(*/)390 1943 y(static)g(void)390 -2052 y(cb_linehandler)e(\(char)i(*line\))390 2162 y({)485 -2271 y(/*)i(Can)f(use)f(^D)i(\(stty)e(eof\))h(or)g(`exit')f(to)h(exit.) -f(*/)485 2381 y(if)i(\(line)e(==)h(NULL)g(||)g(strcmp)f(\(line,)g -("exit"\))g(==)h(0\))581 2491 y({)676 2600 y(if)h(\(line)e(==)h(0\))772 -2710 y(printf)f(\("\\n"\);)676 2819 y(printf)g(\("exit\\n"\);)676 -2929 y(/*)i(This)e(function)g(needs)g(to)h(be)g(called)g(to)g(reset)f -(the)h(terminal)f(settings,)p 3874 2949 V 820 3039 a(and)g(calling)g -(it)h(from)g(the)g(line)g(handler)e(keeps)i(one)g(extra)f(prompt)g -(from)p 3874 3059 42 76 v 820 3148 a(being)g(displayed.)f(*/)676 -3258 y(rl_callback_handler_remove)c(\(\);)676 3477 y(running)46 -b(=)i(0;)581 3587 y(})485 3696 y(else)581 3806 y({)676 -3915 y(if)g(\(*line\))772 4025 y(add_history)d(\(line\);)676 -4134 y(printf)h(\("input)g(line:)h(\045s\\n",)f(line\);)676 -4244 y(free)h(\(line\);)581 4354 y(})390 4463 y(})390 -4682 y(int)390 4792 y(main)g(\(int)f(c,)h(char)g(**v\))390 -4902 y({)485 5011 y(fd_set)g(fds;)485 5121 y(int)g(r;)485 -5340 y(/*)h(Set)f(the)f(default)g(locale)g(values)g(according)g(to)h -(environment)e(variables.)g(*/)p 3874 5360 42 84 v eop -end +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(47)150 +299 y(w)m(ould)31 b(c)m(hange)i(the)f(case)g(of)g(the)g(c)m(haracter)h +(under)d(p)s(oin)m(t.)44 b(T)m(yping)31 b(`)p Fs(M-1)f(0)g(M-c)p +Ft(')h(w)m(ould)g(c)m(hange)i(the)150 408 y(case)e(of)g(the)g(follo)m +(wing)g(10)h(c)m(haracters,)g(lea)m(ving)g(the)e(cursor)g(on)g(the)h +(last)g(c)m(haracter)h(c)m(hanged.)390 628 y Fs(/*)47 +b(Invert)f(the)h(case)g(of)g(the)g(COUNT)f(following)g(characters.)e +(*/)390 737 y(int)390 847 y(invert_case_line)f(\(count,)j(key\))629 +956 y(int)h(count,)f(key;)390 1066 y({)485 1176 y(register)g(int)h +(start,)f(end,)h(i;)485 1395 y(start)g(=)g(rl_point;)485 +1614 y(if)h(\(rl_point)d(>=)i(rl_end\))581 1724 y(return)f(\(0\);)485 +1943 y(if)i(\(count)e(<)h(0\))581 2052 y({)676 2162 y(direction)f(=)h +(-1;)676 2271 y(count)g(=)g(-count;)581 2381 y(})485 +2491 y(else)581 2600 y(direction)e(=)j(1;)485 2819 y(/*)g(Find)e(the)h +(end)g(of)g(the)g(range)g(to)g(modify.)f(*/)485 2929 +y(end)h(=)h(start)e(+)i(\(count)e(*)h(direction\);)485 +3148 y(/*)h(Force)e(it)h(to)g(be)h(within)e(range.)g(*/)485 +3258 y(if)i(\(end)e(>)i(rl_end\))581 3367 y(end)f(=)g(rl_end;)485 +3477 y(else)g(if)g(\(end)g(<)g(0\))581 3587 y(end)g(=)g(0;)485 +3806 y(if)h(\(start)e(==)h(end\))581 3915 y(return)f(\(0\);)485 +4134 y(if)i(\(start)e(>)h(end\))581 4244 y({)676 4354 +y(int)g(temp)g(=)g(start;)676 4463 y(start)g(=)g(end;)676 +4573 y(end)g(=)h(temp;)581 4682 y(})485 4902 y(/*)g(Tell)e(readline)g +(that)g(we)i(are)f(modifying)e(the)i(line,)629 5011 y(so)g(it)g(will)g +(save)f(the)h(undo)g(information.)d(*/)485 5121 y(rl_modifying)h +(\(start,)h(end\);)485 5340 y(for)h(\(i)h(=)f(start;)f(i)i(!=)f(end;)f +(i++\))p eop end %%Page: 48 52 TeXDict begin 48 51 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(48)485 -299 y Fs(setlocale)46 b(\(LC_ALL,)f(""\);)485 518 y(/*)j(Handle)e -(window)g(size)g(changes)g(when)h(readline)e(is)j(not)f(active)f(and)h -(reading)629 628 y(characters.)d(*/)485 737 y(signal)j(\(SIGWINCH,)e -(sighandler\);)485 956 y(/*)j(Install)d(the)i(line)g(handler.)f(*/)485 -1066 y(rl_callback_handler_instal)o(l)c(\(prompt,)j(cb_linehandler\);) -485 1285 y(/*)j(Enter)e(a)h(simple)g(event)f(loop.)94 -b(This)47 b(waits)f(until)g(something)g(is)h(available)629 -1395 y(to)g(read)f(on)i(readline's)d(input)h(stream)g(\(defaults)f(to)j -(standard)d(input\))h(and)629 1504 y(calls)g(the)h(builtin)f(character) -f(read)i(callback)e(to)i(read)g(it.)95 b(It)47 b(does)f(not)629 -1614 y(have)g(to)h(modify)g(the)f(user's)h(terminal)e(settings.)g(*/) -485 1724 y(running)h(=)i(1;)485 1833 y(while)f(\(running\))581 -1943 y({)676 2052 y(FD_ZERO)f(\(&fds\);)676 2162 y(FD_SET)g(\(fileno)g -(\(rl_instream\),)e(&fds\);)676 2381 y(r)k(=)f(select)f(\(FD_SETSIZE,)f -(&fds,)h(NULL,)h(NULL,)f(NULL\);)676 2491 y(if)i(\(r)f(<)g(0)h(&&)f -(errno)f(!=)h(EINTR\))772 2600 y({)867 2710 y(perror)f(\("rltest:)g -(select"\);)867 2819 y(rl_callback_handler_remov)o(e)c(\(\);)867 -2929 y(break;)772 3039 y(})676 3148 y(if)48 b(\(sigwinch_received\))390 -3258 y({)485 3367 y(rl_resize_terminal)43 b(\(\);)485 -3477 y(sigwinch_received)h(=)j(0;)390 3587 y(})676 3696 -y(if)h(\(r)f(<)g(0\))390 3806 y(continue;)676 4025 y(if)h(\(FD_ISSET)d -(\(fileno)h(\(rl_instream\),)e(&fds\)\))772 4134 y -(rl_callback_read_char)e(\(\);)581 4244 y(})485 4463 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(48)581 +299 y Fs({)676 408 y(if)48 b(\(_rl_uppercase_p)43 b +(\(rl_line_buffer[i]\)\))772 518 y(rl_line_buffer[i])g(=)k +(_rl_to_lower)e(\(rl_line_buffer[i]\);)676 628 y(else)i(if)g +(\(_rl_lowercase_p)d(\(rl_line_buffer[i]\)\))772 737 +y(rl_line_buffer[i])f(=)k(_rl_to_upper)e(\(rl_line_buffer[i]\);)581 +847 y(})485 956 y(/*)j(Move)e(point)h(to)g(on)g(top)g(of)g(the)g(last)g +(character)e(changed.)g(*/)485 1066 y(rl_point)h(=)h(\(direction)e(==)j +(1\))f(?)g(end)g(-)h(1)f(:)h(start;)485 1176 y(return)f(\(0\);)390 +1285 y(})150 1518 y Fi(2.4.14)63 b(Alternate)40 b(In)m(terface)g +(Example)150 1665 y Ft(Here)f(is)g(a)g(complete)h(program)e(that)h +(illustrates)h(Readline's)f(alternate)h(in)m(terface.)67 +b(It)38 b(reads)h(lines)150 1775 y(from)30 b(the)i(terminal)f(and)f +(displa)m(ys)h(them,)h(pro)m(viding)f(the)g(standard)f(history)h(and)f +(T)-8 b(AB)32 b(completion)150 1884 y(functions.)40 b(It)31 +b(understands)d(the)j(EOF)f(c)m(haracter)i(or)e Fs(")p +Ft(exit)p Fs(")h Ft(to)g(exit)g(the)g(program.)390 2052 +y Fs(/*)47 b(Standard)f(include)g(files.)g(stdio.h)f(is)j(required.)d +(*/)390 2162 y(#include)h()390 2271 y(#include)g() +390 2381 y(#include)g()390 2491 y(#include)g()390 +2710 y(/*)h(Used)g(for)g(select\(2\))e(*/)390 2819 y(#include)h +()390 2929 y(#include)g()390 +3148 y(#include)g()390 3367 y(#include)g()390 +3587 y(/*)h(Standard)f(readline)f(include)h(files.)g(*/)390 +3696 y(#include)g()390 3806 y(#include)g +()390 4025 y(static)g(void)h(cb_linehandler)d +(\(char)i(*\);)390 4134 y(static)g(void)h(sighandler)e(\(int\);)390 +4354 y(int)i(running;)390 4463 y(int)g(sigwinch_received;)390 +4573 y(const)f(char)h(*prompt)f(=)h("rltest$)f(";)390 +4792 y(/*)h(Handle)f(SIGWINCH)g(and)h(window)f(size)g(changes)g(when)h +(readline)e(is)j(not)f(active)f(and)p 3922 4812 42 84 +v 533 4902 a(reading)g(a)h(character.)e(*/)390 5011 y(static)h(void)390 +5121 y(sighandler)f(\(int)i(sig\))390 5230 y({)485 5340 +y(sigwinch_received)d(=)j(1;)p eop end +%%Page: 49 53 +TeXDict begin 49 52 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(49)390 +299 y Fs(})390 518 y(/*)47 b(Callback)f(function)f(called)h(for)h(each) +g(line)g(when)f(accept-line)f(executed,)g(EOF)533 628 +y(seen,)i(or)g(EOF)g(character)e(read.)94 b(This)47 b(sets)f(a)i(flag)e +(and)h(returns;)f(it)h(could)533 737 y(also)g(call)f(exit\(3\).)g(*/) +390 847 y(static)g(void)390 956 y(cb_linehandler)e(\(char)i(*line\))390 +1066 y({)485 1176 y(/*)i(Can)f(use)f(^D)i(\(stty)e(eof\))h(or)g(`exit') +f(to)h(exit.)f(*/)485 1285 y(if)i(\(line)e(==)h(NULL)g(||)g(strcmp)f +(\(line,)g("exit"\))g(==)h(0\))581 1395 y({)676 1504 +y(if)h(\(line)e(==)h(0\))772 1614 y(printf)f(\("\\n"\);)676 +1724 y(printf)g(\("exit\\n"\);)676 1833 y(/*)i(This)e(function)g(needs) +g(to)h(be)g(called)g(to)g(reset)f(the)h(terminal)f(settings,)p +3874 1853 42 84 v 820 1943 a(and)g(calling)g(it)h(from)g(the)g(line)g +(handler)e(keeps)i(one)g(extra)f(prompt)g(from)p 3874 +1963 42 76 v 820 2052 a(being)g(displayed.)f(*/)676 2162 +y(rl_callback_handler_remove)c(\(\);)676 2381 y(running)46 +b(=)i(0;)581 2491 y(})485 2600 y(else)581 2710 y({)676 +2819 y(if)g(\(*line\))772 2929 y(add_history)d(\(line\);)676 +3039 y(printf)h(\("input)g(line:)h(\045s\\n",)f(line\);)676 +3148 y(free)h(\(line\);)581 3258 y(})390 3367 y(})390 +3587 y(int)390 3696 y(main)g(\(int)f(c,)h(char)g(**v\))390 +3806 y({)485 3915 y(fd_set)g(fds;)485 4025 y(int)g(r;)485 +4244 y(/*)h(Set)f(the)f(default)g(locale)g(values)g(according)g(to)h +(environment)e(variables.)g(*/)p 3874 4264 42 84 v 485 +4354 a(setlocale)h(\(LC_ALL,)f(""\);)485 4573 y(/*)j(Handle)e(window)g +(size)g(changes)g(when)h(readline)e(is)j(not)f(active)f(and)h(reading) +629 4682 y(characters.)d(*/)485 4792 y(signal)j(\(SIGWINCH,)e +(sighandler\);)485 5011 y(/*)j(Install)d(the)i(line)g(handler.)f(*/)485 +5121 y(rl_callback_handler_instal)o(l)c(\(prompt,)j(cb_linehandler\);) +485 5340 y(/*)j(Enter)e(a)h(simple)g(event)f(loop.)94 +b(This)47 b(waits)f(until)g(something)g(is)h(available)p +eop end +%%Page: 50 54 +TeXDict begin 50 53 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(50)629 +299 y Fs(to)47 b(read)f(on)i(readline's)d(input)h(stream)g(\(defaults)f +(to)j(standard)d(input\))h(and)629 408 y(calls)g(the)h(builtin)f +(character)f(read)i(callback)e(to)i(read)g(it.)95 b(It)47 +b(does)f(not)629 518 y(have)g(to)h(modify)g(the)f(user's)h(terminal)e +(settings.)g(*/)485 628 y(running)h(=)i(1;)485 737 y(while)f +(\(running\))581 847 y({)676 956 y(FD_ZERO)f(\(&fds\);)676 +1066 y(FD_SET)g(\(fileno)g(\(rl_instream\),)e(&fds\);)676 +1285 y(r)k(=)f(select)f(\(FD_SETSIZE,)f(&fds,)h(NULL,)h(NULL,)f +(NULL\);)676 1395 y(if)i(\(r)f(<)g(0)h(&&)f(errno)f(!=)h(EINTR\))772 +1504 y({)867 1614 y(perror)f(\("rltest:)g(select"\);)867 +1724 y(rl_callback_handler_remov)o(e)c(\(\);)867 1833 +y(break;)772 1943 y(})676 2052 y(if)48 b(\(sigwinch_received\))390 +2162 y({)485 2271 y(rl_resize_terminal)43 b(\(\);)485 +2381 y(sigwinch_received)h(=)j(0;)390 2491 y(})676 2600 +y(if)h(\(r)f(<)g(0\))390 2710 y(continue;)676 2929 y(if)h(\(FD_ISSET)d +(\(fileno)h(\(rl_instream\),)e(&fds\)\))772 3039 y +(rl_callback_read_char)e(\(\);)581 3148 y(})485 3367 y(printf)47 b(\("rltest:)e(Event)h(loop)h(has)g(exited\\n"\);)485 -4573 y(return)g(0;)390 4682 y(})150 4961 y Fr(2.5)68 -b(Readline)47 b(Signal)e(Handling)150 5121 y Ft(Signals)31 +3477 y(return)g(0;)390 3587 y(})150 3835 y Fr(2.5)68 +b(Readline)47 b(Signal)e(Handling)150 3995 y Ft(Signals)31 b(are)f(async)m(hronous)g(ev)m(en)m(ts)i(sen)m(t)f(to)g(a)g(pro)s(cess) f(b)m(y)h(the)f(Unix)g(k)m(ernel,)i(sometimes)f(on)g(b)s(ehalf)150 -5230 y(of)k(another)g(pro)s(cess.)53 b(They)34 b(are)h(in)m(tended)g -(to)g(indicate)h(exceptional)g(ev)m(en)m(ts,)i(lik)m(e)e(a)f(user)f -(pressing)150 5340 y(the)g(in)m(terrupt)f(k)m(ey)h(on)g(his)f -(terminal,)i(or)f(a)g(net)m(w)m(ork)g(connection)h(b)s(eing)e(brok)m -(en.)50 b(There)34 b(is)f(a)h(class)p eop end -%%Page: 49 53 -TeXDict begin 49 52 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(49)150 -299 y(of)29 b(signals)g(that)h(can)f(b)s(e)f(sen)m(t)h(to)h(the)f(pro)s -(cess)f(curren)m(tly)h(reading)g(input)f(from)g(the)h(k)m(eyb)s(oard.) -40 b(Since)150 408 y(Readline)45 b(c)m(hanges)g(the)g(terminal)g -(attributes)g(when)e(it)i(is)g(called,)k(it)c(needs)f(to)h(p)s(erform)e -(sp)s(ecial)150 518 y(pro)s(cessing)27 b(when)g(suc)m(h)g(a)h(signal)g -(is)g(receiv)m(ed)h(in)e(order)g(to)h(restore)h(the)e(terminal)h(to)h -(a)f(sane)f(state,)j(or)150 628 y(pro)m(vide)g(application)i(writers)e -(with)g(functions)g(to)h(do)g(so)f(man)m(ually)-8 b(.)275 -775 y(Readline)40 b(con)m(tains)i(an)e(in)m(ternal)h(signal)g(handler)f -(that)h(is)f(installed)h(for)f(a)h(n)m(um)m(b)s(er)e(of)h(signals)150 -885 y(\()p Fs(SIGINT)p Ft(,)e Fs(SIGQUIT)p Ft(,)f Fs(SIGTERM)p +4104 y(of)24 b(another)f(pro)s(cess.)38 b(They)23 b(are)h(in)m(tended)f +(to)h(indicate)h(exceptional)g(ev)m(en)m(ts,)i(lik)m(e)d(a)g(user)f +(pressing)g(the)150 4214 y(terminal's)33 b(in)m(terrupt)f(k)m(ey)-8 +b(,)34 b(or)e(a)g(net)m(w)m(ork)h(connection)h(b)s(eing)e(brok)m(en.)46 +b(There)31 b(is)h(a)h(class)g(of)f(signals)150 4323 y(that)f(can)g(b)s +(e)e(sen)m(t)i(to)g(the)g(pro)s(cess)f(curren)m(tly)g(reading)h(input)e +(from)h(the)g(k)m(eyb)s(oard.)41 b(Since)30 b(Readline)150 +4433 y(c)m(hanges)41 b(the)e(terminal)i(attributes)f(when)f(it)h(is)f +(called,)44 b(it)c(needs)f(to)i(p)s(erform)d(sp)s(ecial)i(pro)s +(cessing)150 4543 y(when)33 b(suc)m(h)h(a)h(signal)g(is)f(receiv)m(ed)i +(in)e(order)g(to)h(restore)f(the)h(terminal)g(to)g(a)f(sane)h(state,)i +(or)d(pro)m(vide)150 4652 y(application)e(writers)e(with)g(functions)g +(to)h(do)f(so)h(man)m(ually)-8 b(.)275 4792 y(Readline)40 +b(con)m(tains)i(an)e(in)m(ternal)h(signal)g(handler)f(that)h(is)f +(installed)h(for)f(a)h(n)m(um)m(b)s(er)e(of)h(signals)150 +4902 y(\()p Fs(SIGINT)p Ft(,)e Fs(SIGQUIT)p Ft(,)f Fs(SIGTERM)p Ft(,)g Fs(SIGHUP)p Ft(,)g Fs(SIGALRM)p Ft(,)g Fs(SIGTSTP)p Ft(,)g Fs(SIGTTIN)p Ft(,)g(and)g Fs(SIGTTOU)p Ft(\).)59 -b(When)150 994 y(one)27 b(of)g(these)g(signals)g(is)g(receiv)m(ed,)i +b(When)150 5011 y(one)27 b(of)g(these)g(signals)g(is)g(receiv)m(ed,)i (the)e(signal)g(handler)f(will)h(reset)h(the)e(terminal)i(attributes)f -(to)g(those)150 1104 y(that)33 b(w)m(ere)g(in)f(e\013ect)h(b)s(efore)f +(to)g(those)150 5121 y(that)33 b(w)m(ere)g(in)f(e\013ect)h(b)s(efore)f Fs(readline\(\))e Ft(w)m(as)i(called,)j(reset)d(the)h(signal)g -(handling)f(to)h(what)f(it)h(w)m(as)150 1214 y(b)s(efore)26 +(handling)f(to)h(what)f(it)h(w)m(as)150 5230 y(b)s(efore)26 b Fs(readline\(\))e Ft(w)m(as)j(called,)i(and)d(resend)g(the)h(signal)g (to)h(the)f(calling)h(application.)41 b(If)26 b(and)g(when)150 -1323 y(the)34 b(calling)i(application's)f(signal)g(handler)e(returns,)h -(Readline)g(will)h(reinitialize)h(the)e(terminal)h(and)150 -1433 y(con)m(tin)m(ue)29 b(to)g(accept)h(input.)39 b(When)28 +5340 y(the)34 b(calling)i(application's)f(signal)g(handler)e(returns,)h +(Readline)g(will)h(reinitialize)h(the)e(terminal)h(and)p +eop end +%%Page: 51 55 +TeXDict begin 51 54 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(51)150 +299 y(con)m(tin)m(ue)29 b(to)g(accept)h(input.)39 b(When)28 b(a)h Fs(SIGINT)d Ft(is)j(receiv)m(ed,)h(the)e(Readline)h(signal)g -(handler)f(p)s(erforms)150 1542 y(some)39 b(additional)h(w)m(ork,)h +(handler)f(p)s(erforms)150 408 y(some)39 b(additional)h(w)m(ork,)h (whic)m(h)d(will)h(cause)g(an)m(y)h(partially-en)m(tered)g(line)f(to)h -(b)s(e)e(ab)s(orted)g(\(see)i(the)150 1652 y(description)30 +(b)s(e)e(ab)s(orted)g(\(see)i(the)150 518 y(description)30 b(of)h Fs(rl_free_line_state\(\))25 b Ft(b)s(elo)m(w\).)275 -1800 y(There)e(is)i(an)f(additional)h(Readline)g(signal)g(handler,)g +656 y(There)e(is)i(an)f(additional)h(Readline)g(signal)g(handler,)g (for)f Fs(SIGWINCH)p Ft(,)g(whic)m(h)g(the)g(k)m(ernel)h(sends)e(to)j -(a)150 1909 y(pro)s(cess)i(whenev)m(er)h(the)g(terminal's)g(size)h(c)m +(a)150 765 y(pro)s(cess)i(whenev)m(er)h(the)g(terminal's)g(size)h(c)m (hanges)g(\(for)f(example,)h(if)f(a)g(user)f(resizes)i(an)e -Fs(xterm)p Ft(\).)39 b(The)150 2019 y(Readline)d Fs(SIGWINCH)e +Fs(xterm)p Ft(\).)39 b(The)150 875 y(Readline)d Fs(SIGWINCH)e Ft(handler)g(up)s(dates)h(Readline's)h(in)m(ternal)h(screen)e(size)i -(information,)g(and)e(then)150 2128 y(calls)g(an)m(y)f +(information,)g(and)e(then)150 984 y(calls)g(an)m(y)f Fs(SIGWINCH)e Ft(signal)i(handler)f(the)h(calling)h(application)g(has)f -(installed.)51 b(Readline)35 b(calls)g(the)150 2238 y(application's)i +(installed.)51 b(Readline)35 b(calls)g(the)150 1094 y(application's)i Fs(SIGWINCH)c Ft(signal)i(handler)g(without)g(resetting)h(the)g -(terminal)f(to)h(its)g(original)g(state.)150 2347 y(If)31 +(terminal)f(to)h(its)g(original)g(state.)150 1204 y(If)31 b(the)i(application's)g(signal)g(handler)e(do)s(es)g(more)h(than)g(up)s (date)f(its)i(idea)f(of)g(the)g(terminal)h(size)g(and)150 -2457 y(return)28 b(\(for)i(example,)h(a)f Fs(longjmp)d +1313 y(return)28 b(\(for)i(example,)h(a)f Fs(longjmp)d Ft(bac)m(k)k(to)f(a)g(main)g(pro)s(cessing)f(lo)s(op\),)h(it)g -Fk(must)39 b Ft(call)31 b Fs(rl_cleanup_)150 2567 y(after_signal\(\))26 +Fk(must)39 b Ft(call)31 b Fs(rl_cleanup_)150 1423 y(after_signal\(\))26 b Ft(\(describ)s(ed)k(b)s(elo)m(w\),)h(to)g(restore)g(the)g(terminal)g -(state.)275 2714 y(When)38 b(an)h(application)h(is)f(using)g(the)g +(state.)275 1560 y(When)38 b(an)h(application)h(is)f(using)g(the)g (callbac)m(k)i(in)m(terface)f(\(see)g(Section)g(2.4.12)h([Alternate)f -(In-)150 2824 y(terface],)48 b(page)c(44\),)j(Readline)c(installs)h +(In-)150 1670 y(terface],)48 b(page)c(46\),)j(Readline)c(installs)h (signal)g(handlers)e(only)h(for)f(the)h(duration)g(of)g(the)g(call)h -(to)150 2933 y Fs(rl_callback_read_char)p Ft(.)c(Applications)33 +(to)150 1779 y Fs(rl_callback_read_char)p Ft(.)c(Applications)33 b(using)f(the)g(callbac)m(k)j(in)m(terface)e(should)f(b)s(e)f(prepared) -g(to)150 3043 y(clean)d(up)d(Readline's)j(state)g(if)e(they)h(wish)f +g(to)150 1889 y(clean)d(up)d(Readline's)j(state)g(if)e(they)h(wish)f (to)h(handle)f(the)h(signal)h(b)s(efore)e(the)h(line)g(handler)f -(completes)150 3153 y(and)k(restores)h(the)f(terminal)h(state.)275 -3300 y(If)k(an)g(application)i(using)f(the)g(callbac)m(k)h(in)m +(completes)150 1999 y(and)k(restores)h(the)f(terminal)h(state.)275 +2136 y(If)k(an)g(application)i(using)f(the)g(callbac)m(k)h(in)m (terface)h(wishes)d(to)h(ha)m(v)m(e)h(Readline)g(install)f(its)g -(signal)150 3410 y(handlers)22 b(at)h(the)g(time)h(the)e(application)j +(signal)150 2246 y(handlers)22 b(at)h(the)g(time)h(the)e(application)j (calls)e Fs(rl_callback_handler_instal)o(l)17 b Ft(and)22 -b(remo)m(v)m(e)i(them)150 3519 y(only)f(when)g(a)g(complete)i(line)f +b(remo)m(v)m(e)i(them)150 2355 y(only)f(when)g(a)g(complete)i(line)f (of)f(input)f(has)h(b)s(een)g(read,)i(it)e(should)g(set)g(the)h -Fs(rl_persistent_signal_)150 3629 y(handlers)c Ft(v)-5 +Fs(rl_persistent_signal_)150 2465 y(handlers)c Ft(v)-5 b(ariable)23 b(to)f(a)h(non-zero)f(v)-5 b(alue.)39 b(This)21 b(allo)m(ws)i(an)f(application)i(to)f(defer)e(all)i(of)f(the)h -(handling)150 3738 y(of)j(the)h(signals)f(Readline)h(catc)m(hes)h(to)f +(handling)150 2575 y(of)j(the)h(signals)f(Readline)h(catc)m(hes)h(to)f (Readline.)39 b(Applications)27 b(should)f(use)f(this)h(v)-5 -b(ariable)27 b(with)f(care;)150 3848 y(it)d(can)g(result)g(in)f +b(ariable)27 b(with)f(care;)150 2684 y(it)d(can)g(result)g(in)f (Readline)h(catc)m(hing)i(signals)e(and)f(not)h(acting)h(on)f(them)f -(\(or)h(allo)m(wing)i(the)e(application)150 3958 y(to)36 +(\(or)h(allo)m(wing)i(the)e(application)150 2794 y(to)36 b(react)g(to)g(them\))g(un)m(til)f(the)h(application)g(calls)h Fs(rl_callback_read_char)p Ft(.)49 b(This)35 b(can)g(result)g(in)150 -4067 y(an)30 b(application)h(b)s(ecoming)f(less)g(resp)s(onsiv)m(e)f +2903 y(an)30 b(application)h(b)s(ecoming)f(less)g(resp)s(onsiv)m(e)f (to)i(k)m(eyb)s(oard)e(signals)h(lik)m(e)h(SIGINT.)f(If)f(an)h -(application)150 4177 y(do)s(es)24 b(not)g(w)m(an)m(t)h(or)g(need)f(to) +(application)150 3013 y(do)s(es)24 b(not)g(w)m(an)m(t)h(or)g(need)f(to) h(p)s(erform)d(an)m(y)j(signal)g(handling,)g(or)f(do)s(es)g(not)h(need) -f(to)g(do)h(an)m(y)f(pro)s(cessing)150 4286 y(b)s(et)m(w)m(een)31 +f(to)g(do)h(an)m(y)f(pro)s(cessing)150 3123 y(b)s(et)m(w)m(een)31 b(calls)h(to)f Fs(rl_callback_read_char)p Ft(,)24 b(setting)32 b(this)e(v)-5 b(ariable)31 b(ma)m(y)g(b)s(e)f(desirable.)275 -4434 y(Readline)f(pro)m(vides)f(t)m(w)m(o)i(v)-5 b(ariables)29 +3260 y(Readline)f(pro)m(vides)f(t)m(w)m(o)i(v)-5 b(ariables)29 b(that)h(allo)m(w)g(application)g(writers)e(to)h(con)m(trol)h(whether)e -(or)h(not)150 4544 y(it)34 b(will)f(catc)m(h)i(certain)f(signals)f(and) +(or)h(not)150 3370 y(it)34 b(will)f(catc)m(h)i(certain)f(signals)f(and) g(act)h(on)f(them)g(when)f(they)i(are)f(receiv)m(ed.)51 -b(It)33 b(is)g(imp)s(ortan)m(t)g(that)150 4653 y(applications)38 +b(It)33 b(is)g(imp)s(ortan)m(t)g(that)150 3479 y(applications)38 b(c)m(hange)g(the)e(v)-5 b(alues)37 b(of)g(these)g(v)-5 b(ariables)37 b(only)g(when)f(calling)i Fs(readline\(\))p -Ft(,)d(not)i(in)g(a)150 4763 y(signal)31 b(handler,)f(so)g(Readline's)i +Ft(,)d(not)i(in)g(a)150 3589 y(signal)31 b(handler,)f(so)g(Readline's)i (in)m(ternal)f(signal)g(state)h(is)e(not)h(corrupted.)3371 -4973 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_catch_signals)390 -5083 y Ft(If)28 b(this)h(v)-5 b(ariable)30 b(is)f(non-zero,)h(Readline) +3779 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_catch_signals)390 +3889 y Ft(If)28 b(this)h(v)-5 b(ariable)30 b(is)f(non-zero,)h(Readline) f(will)g(install)h(signal)f(handlers)f(for)h Fs(SIGINT)p -Ft(,)f Fs(SIGQUIT)p Ft(,)390 5192 y Fs(SIGTERM)p Ft(,)h +Ft(,)f Fs(SIGQUIT)p Ft(,)390 3998 y Fs(SIGTERM)p Ft(,)h Fs(SIGHUP)p Ft(,)g Fs(SIGALRM)p Ft(,)f Fs(SIGTSTP)p Ft(,)h -Fs(SIGTTIN)p Ft(,)f(and)i Fs(SIGTTOU)p Ft(.)390 5340 +Fs(SIGTTIN)p Ft(,)f(and)i Fs(SIGTTOU)p Ft(.)390 4136 y(The)g(default)g(v)-5 b(alue)31 b(of)g Fs(rl_catch_signals)26 -b Ft(is)k(1.)p eop end -%%Page: 50 54 -TeXDict begin 50 53 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(50)3371 -299 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_catch_sigwinch)390 -408 y Ft(If)37 b(this)h(v)-5 b(ariable)38 b(is)g(set)g(to)g(a)g -(non-zero)g(v)-5 b(alue,)40 b(Readline)f(will)f(install)g(a)g(signal)g -(handler)f(for)390 518 y Fs(SIGWINCH)p Ft(.)390 646 y(The)30 -b(default)g(v)-5 b(alue)31 b(of)g Fs(rl_catch_sigwinch)25 -b Ft(is)31 b(1.)3371 810 y([V)-8 b(ariable])-3598 b Fh(int)53 -b(rl_persistent_signal_)q(hand)q(ler)q(s)390 920 y Ft(If)31 -b(an)h(application)g(using)g(the)f(callbac)m(k)j(in)m(terface)f(wishes) -e(Readline's)h(signal)h(handlers)d(to)j(b)s(e)390 1029 -y(installed)21 b(and)f(activ)m(e)j(during)d(the)h(set)g(of)f(calls)i -(to)g Fs(rl_callback_read_char)14 b Ft(that)22 b(constitutes)390 -1139 y(an)30 b(en)m(tire)i(single)f(line,)g(it)f(should)g(set)h(this)f -(v)-5 b(ariable)31 b(to)g(a)g(non-zero)g(v)-5 b(alue.)390 -1267 y(The)30 b(default)g(v)-5 b(alue)31 b(of)g Fs -(rl_persistent_signal_han)o(dle)o(rs)24 b Ft(is)31 b(0.)3371 -1431 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_change_environment)390 -1541 y Ft(If)31 b(this)g(v)-5 b(ariable)32 b(is)f(set)h(to)g(a)g +b Ft(is)k(1.)3371 4326 y([V)-8 b(ariable])-3598 b Fh(int)53 +b(rl_catch_sigwinch)390 4436 y Ft(If)37 b(this)h(v)-5 +b(ariable)38 b(is)g(set)g(to)g(a)g(non-zero)g(v)-5 b(alue,)40 +b(Readline)f(will)f(install)g(a)g(signal)g(handler)f(for)390 +4546 y Fs(SIGWINCH)p Ft(.)390 4683 y(The)30 b(default)g(v)-5 +b(alue)31 b(of)g Fs(rl_catch_sigwinch)25 b Ft(is)31 b(1.)3371 +4874 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_persistent_signal_)q +(hand)q(ler)q(s)390 4983 y Ft(If)31 b(an)h(application)g(using)g(the)f +(callbac)m(k)j(in)m(terface)f(wishes)e(Readline's)h(signal)h(handlers)d +(to)j(b)s(e)390 5093 y(installed)21 b(and)f(activ)m(e)j(during)d(the)h +(set)g(of)f(calls)i(to)g Fs(rl_callback_read_char)14 +b Ft(that)22 b(constitutes)390 5202 y(an)30 b(en)m(tire)i(single)f +(line,)g(it)f(should)g(set)h(this)f(v)-5 b(ariable)31 +b(to)g(a)g(non-zero)g(v)-5 b(alue.)390 5340 y(The)30 +b(default)g(v)-5 b(alue)31 b(of)g Fs(rl_persistent_signal_han)o(dle)o +(rs)24 b Ft(is)31 b(0.)p eop end +%%Page: 52 56 +TeXDict begin 52 55 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(52)3371 +299 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_change_environment)390 +408 y Ft(If)31 b(this)g(v)-5 b(ariable)32 b(is)f(set)h(to)g(a)g (non-zero)g(v)-5 b(alue,)32 b(and)f(Readline)h(is)f(handling)g -Fs(SIGWINCH)p Ft(,)e(Read-)390 1650 y(line)h(will)h(mo)s(dify)e(the)h +Fs(SIGWINCH)p Ft(,)e(Read-)390 518 y(line)h(will)h(mo)s(dify)e(the)h Fj(LINES)35 b Ft(and)29 b Fj(COLUMNS)35 b Ft(en)m(vironmen)m(t)30 b(v)-5 b(ariables)31 b(up)s(on)d(receipt)j(of)g(a)390 -1760 y Fs(SIGWINCH)390 1888 y Ft(The)f(default)g(v)-5 -b(alue)31 b(of)g Fs(rl_change_environment)24 b Ft(is)31 -b(1.)275 2052 y(If)f(an)h(application)h(do)s(es)f(not)g(wish)f(to)i(ha) -m(v)m(e)g(Readline)g(catc)m(h)g(an)m(y)f(signals,)h(or)f(to)h(handle)e -(signals)150 2162 y(other)39 b(than)f(those)h(Readline)h(catc)m(hes)g -(\()p Fs(SIGHUP)p Ft(,)g(for)e(example\),)k(Readline)d(pro)m(vides)g -(con)m(v)m(enience)150 2271 y(functions)30 b(to)h(do)f(the)h(necessary) -g(terminal)g(and)e(in)m(ternal)i(state)h(clean)m(up)f(up)s(on)e -(receipt)i(of)g(a)f(signal.)3350 2436 y([F)-8 b(unction])-3599 +628 y Fs(SIGWINCH)390 766 y Ft(The)f(default)g(v)-5 b(alue)31 +b(of)g Fs(rl_change_environment)24 b Ft(is)31 b(1.)275 +957 y(If)f(an)h(application)h(do)s(es)f(not)g(wish)f(to)i(ha)m(v)m(e)g +(Readline)g(catc)m(h)g(an)m(y)f(signals,)h(or)f(to)h(handle)e(signals) +150 1067 y(other)39 b(than)f(those)h(Readline)h(catc)m(hes)g(\()p +Fs(SIGHUP)p Ft(,)g(for)e(example\),)k(Readline)d(pro)m(vides)g(con)m(v) +m(enience)150 1177 y(functions)30 b(to)h(do)f(the)h(necessary)g +(terminal)g(and)e(in)m(ternal)i(state)h(clean)m(up)f(up)s(on)e(receipt) +i(of)g(a)f(signal.)3350 1368 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_pending_signal)e Fg(\()p Ff(v)m(oid)p -Fg(\))390 2545 y Ft(Return)27 b(the)g(signal)h(n)m(um)m(b)s(er)e(of)i +Fg(\))390 1478 y Ft(Return)27 b(the)g(signal)h(n)m(um)m(b)s(er)e(of)i (the)f(most)h(recen)m(t)h(signal)f(Readline)g(receiv)m(ed)g(but)f(has)g -(not)h(y)m(et)390 2655 y(handled,)i(or)g(0)h(if)f(there)h(is)f(no)g(p)s -(ending)f(signal.)3350 2819 y([F)-8 b(unction])-3599 +(not)h(y)m(et)390 1587 y(handled,)i(or)g(0)h(if)f(there)h(is)f(no)g(p)s +(ending)f(signal.)3350 1779 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_cleanup_after_signal)e Fg(\()p Ff(v)m(oid)p -Fg(\))390 2929 y Ft(This)33 b(function)h(will)g(reset)g(the)g(state)i +Fg(\))390 1889 y Ft(This)33 b(function)h(will)g(reset)g(the)g(state)i (of)e(the)g(terminal)g(to)h(what)f(it)g(w)m(as)g(b)s(efore)g -Fs(readline\(\))390 3039 y Ft(w)m(as)c(called,)h(and)d(remo)m(v)m(e)j +Fs(readline\(\))390 1998 y Ft(w)m(as)c(called,)h(and)d(remo)m(v)m(e)j (the)f(Readline)g(signal)g(handlers)e(for)h(all)h(signals,)h(dep)s -(ending)d(on)h(the)390 3148 y(v)-5 b(alues)31 b(of)f +(ending)d(on)h(the)390 2108 y(v)-5 b(alues)31 b(of)f Fs(rl_catch_signals)c Ft(and)k Fs(rl_catch_sigwinch)p -Ft(.)3350 3313 y([F)-8 b(unction])-3599 b Fh(void)54 +Ft(.)3350 2300 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_free_line_state)c Fg(\()p Ff(v)m(oid)p Fg(\))390 -3422 y Ft(This)38 b(will)i(free)f(an)m(y)h(partial)g(state)g(asso)s +2409 y Ft(This)38 b(will)i(free)f(an)m(y)h(partial)g(state)g(asso)s (ciated)h(with)e(the)g(curren)m(t)g(input)f(line)i(\(undo)e(infor-)390 -3532 y(mation,)46 b(an)m(y)d(partial)h(history)e(en)m(try)-8 +2519 y(mation,)46 b(an)m(y)d(partial)h(history)e(en)m(try)-8 b(,)47 b(an)m(y)42 b(partially-en)m(tered)j(k)m(eyb)s(oard)d(macro,)47 -b(and)42 b(an)m(y)390 3641 y(partially-en)m(tered)50 +b(and)42 b(an)m(y)390 2628 y(partially-en)m(tered)50 b(n)m(umeric)d(argumen)m(t\).)94 b(This)47 b(should)g(b)s(e)g(called)i -(b)s(efore)e Fs(rl_cleanup_)390 3751 y(after_signal\(\))p +(b)s(efore)e Fs(rl_cleanup_)390 2738 y(after_signal\(\))p Ft(.)74 b(The)42 b(Readline)h(signal)g(handler)f(for)h Fs(SIGINT)e Ft(calls)i(this)g(to)g(ab)s(ort)g(the)390 -3861 y(curren)m(t)30 b(input)g(line.)3350 4025 y([F)-8 +2847 y(curren)m(t)30 b(input)g(line.)3350 3039 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_reset_after_signal)d -Fg(\()p Ff(v)m(oid)p Fg(\))390 4134 y Ft(This)28 b(will)g(reinitialize) +Fg(\()p Ff(v)m(oid)p Fg(\))390 3149 y Ft(This)28 b(will)g(reinitialize) j(the)e(terminal)g(and)f(reinstall)h(an)m(y)g(Readline)g(signal)g -(handlers,)f(dep)s(end-)390 4244 y(ing)j(on)f(the)g(v)-5 +(handlers,)f(dep)s(end-)390 3258 y(ing)j(on)f(the)g(v)-5 b(alues)31 b(of)g Fs(rl_catch_signals)26 b Ft(and)j Fs -(rl_catch_sigwinch)p Ft(.)275 4408 y(If)j(an)g(application)i(w)m(an)m +(rl_catch_sigwinch)p Ft(.)275 3450 y(If)j(an)g(application)i(w)m(an)m (ts)g(to)f(force)g(Readline)h(to)f(handle)g(an)m(y)g(signals)g(that)g -(ha)m(v)m(e)h(arriv)m(ed)f(while)150 4518 y(it)j(has)g(b)s(een)f +(ha)m(v)m(e)h(arriv)m(ed)f(while)150 3560 y(it)j(has)g(b)s(een)f (executing,)j Fs(rl_check_signals\(\))31 b Ft(will)36 b(call)h(Readline's)g(in)m(ternal)g(signal)f(handler)f(if)150 -4628 y(there)i(are)g(an)m(y)g(p)s(ending)e(signals.)61 +3669 y(there)i(are)g(an)m(y)g(p)s(ending)e(signals.)61 b(This)36 b(is)g(primarily)h(in)m(tended)f(for)h(those)g(applications)h -(that)f(use)150 4737 y(a)h(custom)g Fs(rl_getc_function)33 +(that)f(use)150 3779 y(a)h(custom)g Fs(rl_getc_function)33 b Ft(\(see)39 b(Section)g(2.3)g([Readline)f(V)-8 b(ariables],)42 -b(page)c(28\))h(and)e(wish)g(to)150 4847 y(handle)30 +b(page)c(29\))h(and)e(wish)g(to)150 3888 y(handle)30 b(signals)h(receiv)m(ed)h(while)e(w)m(aiting)i(for)e(input.)3350 -5011 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_check_signals)c -Fg(\()p Ff(v)m(oid)p Fg(\))390 5121 y Ft(If)40 b(there)h(are)g(an)m(y)g +4080 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_check_signals)c +Fg(\()p Ff(v)m(oid)p Fg(\))390 4190 y Ft(If)40 b(there)h(are)g(an)m(y)g (p)s(ending)e(signals,)44 b(call)e(Readline's)g(in)m(ternal)f(signal)g -(handling)f(functions)390 5230 y(to)j(pro)s(cess)g(them.)77 +(handling)f(functions)390 4299 y(to)j(pro)s(cess)g(them.)77 b Fs(rl_pending_signal\(\))38 b Ft(can)43 b(b)s(e)f(used)g(indep)s -(enden)m(tly)f(to)j(determine)390 5340 y(whether)30 b(or)g(not)h(there) -f(are)h(an)m(y)g(p)s(ending)e(signals.)p eop end -%%Page: 51 55 -TeXDict begin 51 54 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(51)275 -299 y(If)38 b(an)i(application)g(do)s(es)f(not)h(wish)f(Readline)h(to)g -(catc)m(h)h Fs(SIGWINCH)p Ft(,)e(it)h(ma)m(y)g(call)h -Fs(rl_resize_)150 408 y(terminal\(\))24 b Ft(or)j Fs -(rl_set_screen_size\(\))22 b Ft(to)28 b(force)g(Readline)f(to)h(up)s -(date)f(its)g(idea)h(of)f(the)g(terminal)150 518 y(size)k(when)f(it)h -(receiv)m(es)h(a)e Fs(SIGWINCH)p Ft(.)3350 703 y([F)-8 -b(unction])-3599 b Fh(void)54 b(rl_echo_signal_char)d -Fg(\()p Ff(in)m(t)33 b(sig)p Fg(\))390 813 y Ft(If)43 -b(an)g(application)i(wishes)e(to)i(install)f(its)g(o)m(wn)f(signal)i -(handlers,)h(but)c(still)j(ha)m(v)m(e)g(readline)390 -922 y(displa)m(y)31 b(c)m(haracters)h(that)f(generate)h(signals,)f -(calling)h(this)e(function)g(with)g Fj(sig)39 b Ft(set)31 -b(to)g Fs(SIGINT)p Ft(,)390 1032 y Fs(SIGQUIT)p Ft(,)e(or)h -Fs(SIGTSTP)e Ft(will)j(displa)m(y)g(the)f(c)m(haracter)i(generating)g -(that)f(signal.)3350 1217 y([F)-8 b(unction])-3599 b -Fh(void)54 b(rl_resize_terminal)c Fg(\()p Ff(v)m(oid)p -Fg(\))390 1326 y Ft(Up)s(date)30 b(Readline's)h(in)m(ternal)g(screen)g -(size)g(b)m(y)f(reading)h(v)-5 b(alues)31 b(from)f(the)g(k)m(ernel.) -3350 1511 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_set_screen_size)c +(enden)m(tly)f(to)j(determine)390 4409 y(whether)30 b(or)g(not)h(there) +f(are)h(an)m(y)g(p)s(ending)e(signals.)275 4600 y(If)38 +b(an)i(application)g(do)s(es)f(not)h(wish)f(Readline)h(to)g(catc)m(h)h +Fs(SIGWINCH)p Ft(,)e(it)h(ma)m(y)g(call)h Fs(rl_resize_)150 +4710 y(terminal\(\))24 b Ft(or)j Fs(rl_set_screen_size\(\))22 +b Ft(to)28 b(force)g(Readline)f(to)h(up)s(date)f(its)g(idea)h(of)f(the) +g(terminal)150 4820 y(size)k(when)f(it)h(receiv)m(es)h(a)e +Fs(SIGWINCH)p Ft(.)3350 5011 y([F)-8 b(unction])-3599 +b Fh(void)54 b(rl_echo_signal_char)d Fg(\()p Ff(in)m(t)33 +b(sig)p Fg(\))390 5121 y Ft(If)41 b(an)g(application)h(wishes)f(to)h +(install)g(its)f(o)m(wn)g(signal)h(handlers,)h(but)e(still)h(ha)m(v)m +(e)g(Readline)390 5230 y(displa)m(y)31 b(c)m(haracters)h(that)f +(generate)h(signals,)f(calling)h(this)e(function)g(with)g +Fj(sig)39 b Ft(set)31 b(to)g Fs(SIGINT)p Ft(,)390 5340 +y Fs(SIGQUIT)p Ft(,)e(or)h Fs(SIGTSTP)e Ft(will)j(displa)m(y)g(the)f(c) +m(haracter)i(generating)g(that)f(signal.)p eop end +%%Page: 53 57 +TeXDict begin 53 56 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(53)3350 +299 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_resize_terminal)c +Fg(\()p Ff(v)m(oid)p Fg(\))390 408 y Ft(Up)s(date)30 +b(Readline's)h(in)m(ternal)g(screen)g(size)g(b)m(y)f(reading)h(v)-5 +b(alues)31 b(from)f(the)g(k)m(ernel.)3350 592 y([F)-8 +b(unction])-3599 b Fh(void)54 b(rl_set_screen_size)c Fg(\()p Ff(in)m(t)34 b(ro)m(ws,)f(in)m(t)g(cols)p Fg(\))390 -1621 y Ft(Set)28 b(Readline's)h(idea)f(of)g(the)g(terminal)g(size)h(to) -g Fj(ro)m(ws)i Ft(ro)m(ws)d(and)f Fj(cols)33 b Ft(columns.)40 -b(If)27 b(either)h Fj(ro)m(ws)390 1730 y Ft(or)35 b Fj(columns)k +702 y Ft(Set)28 b(Readline's)h(idea)f(of)g(the)g(terminal)g(size)h(to)g +Fj(ro)m(ws)i Ft(ro)m(ws)d(and)f Fj(cols)33 b Ft(columns.)40 +b(If)27 b(either)h Fj(ro)m(ws)390 811 y Ft(or)35 b Fj(columns)k Ft(is)c(less)g(than)g(or)g(equal)h(to)g(0,)h(Readline's)f(idea)g(of)f -(that)h(terminal)f(dimension)g(is)390 1840 y(unc)m(hanged.)k(This)27 +(that)h(terminal)f(dimension)g(is)390 921 y(unc)m(hanged.)k(This)27 b(is)h(in)m(tended)g(to)g(tell)h(Readline)f(the)g(ph)m(ysical)g -(dimensions)f(of)h(the)g(terminal,)390 1949 y(and)44 +(dimensions)f(of)h(the)g(terminal,)390 1031 y(and)44 b(is)h(used)f(in)m(ternally)i(to)f(calculate)j(the)d(maxim)m(um)f(n)m (um)m(b)s(er)g(of)h(c)m(haracters)h(that)f(ma)m(y)390 -2059 y(app)s(ear)30 b(on)g(a)h(single)g(line)g(and)e(on)i(the)f -(screen.)275 2244 y(If)i(an)i(application)g(do)s(es)f(not)h(w)m(an)m(t) +1140 y(app)s(ear)30 b(on)g(a)h(single)g(line)g(and)e(on)i(the)f +(screen.)275 1324 y(If)i(an)i(application)g(do)s(es)f(not)h(w)m(an)m(t) g(to)g(install)g(a)g Fs(SIGWINCH)d Ft(handler,)j(but)e(is)i(still)g(in) -m(terested)g(in)150 2353 y(the)d(screen)f(dimensions,)g(it)h(ma)m(y)g +m(terested)g(in)150 1434 y(the)d(screen)f(dimensions,)g(it)h(ma)m(y)g (query)f(Readline's)h(idea)g(of)f(the)h(screen)f(size.)3350 -2538 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_get_screen_size)c +1618 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_get_screen_size)c Fg(\()p Ff(in)m(t)34 b(*ro)m(ws,)f(in)m(t)g(*cols)p Fg(\))390 -2648 y Ft(Return)c(Readline's)i(idea)g(of)f(the)g(terminal's)h(size)g +1727 y Ft(Return)c(Readline's)i(idea)g(of)f(the)g(terminal's)h(size)g (in)f(the)g(v)-5 b(ariables)31 b(p)s(oin)m(ted)f(to)g(b)m(y)g(the)h -(argu-)390 2758 y(men)m(ts.)3350 2942 y([F)-8 b(unction])-3599 +(argu-)390 1837 y(men)m(ts.)3350 2021 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_reset_screen_size)d Fg(\()p Ff(v)m(oid)p -Fg(\))390 3052 y Ft(Cause)30 b(Readline)h(to)g(reobtain)g(the)g(screen) -f(size)h(and)f(recalculate)j(its)e(dimensions.)275 3237 +Fg(\))390 2130 y Ft(Cause)30 b(Readline)h(to)g(reobtain)g(the)g(screen) +f(size)h(and)f(recalculate)j(its)e(dimensions.)275 2314 y(The)e(follo)m(wing)j(functions)e(install)h(and)f(remo)m(v)m(e)i -(Readline's)f(signal)g(handlers.)3350 3422 y([F)-8 b(unction])-3599 +(Readline's)f(signal)g(handlers.)3350 2498 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_set_signals)d Fg(\()p Ff(v)m(oid)p Fg(\))390 -3531 y Ft(Install)40 b(Readline's)h(signal)f(handler)f(for)h +2607 y Ft(Install)40 b(Readline's)h(signal)f(handler)f(for)h Fs(SIGINT)p Ft(,)h Fs(SIGQUIT)p Ft(,)f Fs(SIGTERM)p Ft(,)h -Fs(SIGHUP)p Ft(,)g Fs(SIGALRM)p Ft(,)390 3641 y Fs(SIGTSTP)p +Fs(SIGHUP)p Ft(,)g Fs(SIGALRM)p Ft(,)390 2717 y Fs(SIGTSTP)p Ft(,)35 b Fs(SIGTTIN)p Ft(,)f Fs(SIGTTOU)p Ft(,)h(and)g Fs(SIGWINCH)p Ft(,)f(dep)s(ending)g(on)h(the)g(v)-5 b(alues)36 -b(of)f Fs(rl_catch_)390 3750 y(signals)28 b Ft(and)i -Fs(rl_catch_sigwinch)p Ft(.)3350 3935 y([F)-8 b(unction])-3599 +b(of)f Fs(rl_catch_)390 2827 y(signals)28 b Ft(and)i +Fs(rl_catch_sigwinch)p Ft(.)3350 3010 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_clear_signals)e Fg(\()p Ff(v)m(oid)p -Fg(\))390 4045 y Ft(Remo)m(v)m(e)32 b(all)f(of)g(the)g(Readline)g +Fg(\))390 3120 y Ft(Remo)m(v)m(e)32 b(all)f(of)g(the)g(Readline)g (signal)g(handlers)e(installed)i(b)m(y)f Fs(rl_set_signals\(\))p -Ft(.)150 4286 y Fr(2.6)68 b(Custom)45 b(Completers)150 -4446 y Ft(T)m(ypically)-8 b(,)47 b(a)c(program)g(that)g(reads)f +Ft(.)150 3361 y Fr(2.6)68 b(Custom)45 b(Completers)150 +3520 y Ft(T)m(ypically)-8 b(,)47 b(a)c(program)g(that)g(reads)f (commands)h(from)f(the)g(user)g(has)h(a)g(w)m(a)m(y)g(of)g(disam)m -(biguating)150 4555 y(commands)35 b(and)g(data.)56 b(If)35 +(biguating)150 3630 y(commands)35 b(and)g(data.)56 b(If)35 b(y)m(our)h(program)f(is)g(one)h(of)g(these,)h(then)e(it)h(can)g(pro)m -(vide)f(completion)i(for)150 4665 y(commands,)29 b(data,)i(or)e(b)s +(vide)f(completion)i(for)150 3739 y(commands,)29 b(data,)i(or)e(b)s (oth.)39 b(The)29 b(follo)m(wing)i(sections)f(describ)s(e)e(ho)m(w)i(y) -m(our)f(program)g(and)f(Readline)150 4774 y(co)s(op)s(erate)j(to)h(pro) -m(vide)e(this)g(service.)150 4974 y Fi(2.6.1)63 b(Ho)m(w)40 -b(Completing)i(W)-10 b(orks)150 5121 y Ft(In)26 b(order)f(to)i +m(our)f(program)g(and)f(Readline)150 3849 y(co)s(op)s(erate)j(to)h(pro) +m(vide)e(this)g(service.)150 4048 y Fi(2.6.1)63 b(Ho)m(w)40 +b(Completing)i(W)-10 b(orks)150 4195 y Ft(In)26 b(order)f(to)i (complete)h(some)f(text,)h(the)f(full)f(list)h(of)f(p)s(ossible)g (completions)h(m)m(ust)g(b)s(e)e(a)m(v)-5 b(ailable.)42 -b(That)150 5230 y(is,)28 b(it)f(is)g(not)g(p)s(ossible)g(to)g +b(That)150 4304 y(is,)28 b(it)f(is)g(not)g(p)s(ossible)g(to)g (accurately)i(expand)d(a)h(partial)h(w)m(ord)f(without)f(kno)m(wing)i -(all)f(of)g(the)g(p)s(ossible)150 5340 y(w)m(ords)33 +(all)f(of)g(the)g(p)s(ossible)150 4414 y(w)m(ords)33 b(whic)m(h)g(mak)m(e)h(sense)f(in)g(that)g(con)m(text.)51 b(The)33 b(Readline)h(library)e(pro)m(vides)i(the)f(user)f(in)m -(terface)p eop end -%%Page: 52 56 -TeXDict begin 52 55 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(52)150 -299 y(to)29 b(completion,)h(and)e(t)m(w)m(o)i(of)e(the)h(most)f(common) -h(completion)h(functions:)39 b(\014lename)29 b(and)e(username.)150 -408 y(F)-8 b(or)39 b(completing)g(other)f(t)m(yp)s(es)g(of)h(text,)i(y) -m(ou)d(m)m(ust)g(write)g(y)m(our)g(o)m(wn)g(completion)h(function.)64 -b(This)150 518 y(section)32 b(describ)s(es)d(exactly)j(what)f(suc)m(h)f -(functions)g(m)m(ust)g(do,)g(and)g(pro)m(vides)g(an)h(example.)275 -644 y(There)e(are)i(three)g(ma)5 b(jor)30 b(functions)g(used)g(to)h(p)s -(erform)e(completion:)199 771 y(1.)61 b(The)43 b(user-in)m(terface)h -(function)f Fs(rl_complete\(\))p Ft(.)76 b(This)43 b(function)g(is)g -(called)i(with)e(the)h(same)330 880 y(argumen)m(ts)36 -b(as)g(other)g(bindable)f(Readline)h(functions:)51 b -Fj(coun)m(t)38 b Ft(and)d Fj(in)m(v)m(oking)p 3107 880 -28 4 v 41 w(k)m(ey)p Ft(.)57 b(It)36 b(isolates)330 990 -y(the)i(w)m(ord)f(to)h(b)s(e)f(completed)i(and)d(calls)j -Fs(rl_completion_matches\(\))31 b Ft(to)39 b(generate)g(a)f(list)g(of) -330 1100 y(p)s(ossible)31 b(completions.)44 b(It)31 b(then)g(either)g -(lists)h(the)f(p)s(ossible)g(completions,)h(inserts)f(the)g(p)s -(ossible)330 1209 y(completions,)50 b(or)45 b(actually)i(p)s(erforms)d -(the)h(completion,)50 b(dep)s(ending)44 b(on)h(whic)m(h)g(b)s(eha)m -(vior)g(is)330 1319 y(desired.)199 1445 y(2.)61 b(The)33 -b(in)m(ternal)h(function)g Fs(rl_completion_matches\(\))27 -b Ft(uses)33 b(an)g(application-supplied)h Fj(gener-)330 -1555 y(ator)44 b Ft(function)37 b(to)h(generate)g(the)f(list)h(of)f(p)s -(ossible)f(matc)m(hes,)k(and)d(then)f(returns)g(the)h(arra)m(y)h(of)330 -1664 y(these)h(matc)m(hes.)68 b(The)39 b(caller)h(should)e(place)i(the) -f(address)f(of)h(its)g(generator)i(function)d(in)h Fs(rl_)330 -1774 y(completion_entry_functio)o(n)p Ft(.)199 1900 y(3.)61 +(terface)150 4523 y(to)d(completion,)h(and)e(t)m(w)m(o)i(of)e(the)h +(most)f(common)h(completion)h(functions:)39 b(\014lename)29 +b(and)e(username.)150 4633 y(F)-8 b(or)39 b(completing)g(other)f(t)m +(yp)s(es)g(of)h(text,)i(y)m(ou)d(m)m(ust)g(write)g(y)m(our)g(o)m(wn)g +(completion)h(function.)64 b(This)150 4743 y(section)32 +b(describ)s(es)d(exactly)j(what)f(suc)m(h)f(functions)g(m)m(ust)g(do,)g +(and)g(pro)m(vides)g(an)h(example.)275 4877 y(There)e(are)i(three)g(ma) +5 b(jor)30 b(functions)g(used)g(to)h(p)s(erform)e(completion:)199 +5011 y(1.)61 b(The)43 b(user-in)m(terface)h(function)f +Fs(rl_complete\(\))p Ft(.)76 b(This)43 b(function)g(is)g(called)i(with) +e(the)h(same)330 5121 y(argumen)m(ts)36 b(as)g(other)g(bindable)f +(Readline)h(functions:)51 b Fj(coun)m(t)38 b Ft(and)d +Fj(in)m(v)m(oking)p 3107 5121 28 4 v 41 w(k)m(ey)p Ft(.)57 +b(It)36 b(isolates)330 5230 y(the)i(w)m(ord)f(to)h(b)s(e)f(completed)i +(and)d(calls)j Fs(rl_completion_matches\(\))31 b Ft(to)39 +b(generate)g(a)f(list)g(of)330 5340 y(p)s(ossible)31 +b(completions.)44 b(It)31 b(then)g(either)g(lists)h(the)f(p)s(ossible)g +(completions,)h(inserts)f(the)g(p)s(ossible)p eop end +%%Page: 54 58 +TeXDict begin 54 57 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(54)330 +299 y(completions,)50 b(or)45 b(actually)i(p)s(erforms)d(the)h +(completion,)50 b(dep)s(ending)44 b(on)h(whic)m(h)g(b)s(eha)m(vior)g +(is)330 408 y(desired.)199 552 y(2.)61 b(The)33 b(in)m(ternal)h +(function)g Fs(rl_completion_matches\(\))27 b Ft(uses)33 +b(an)g(application-supplied)h Fj(gener-)330 662 y(ator)44 +b Ft(function)37 b(to)h(generate)g(the)f(list)h(of)f(p)s(ossible)f +(matc)m(hes,)k(and)d(then)f(returns)g(the)h(arra)m(y)h(of)330 +771 y(these)h(matc)m(hes.)68 b(The)39 b(caller)h(should)e(place)i(the)f +(address)f(of)h(its)g(generator)i(function)d(in)h Fs(rl_)330 +881 y(completion_entry_functio)o(n)p Ft(.)199 1024 y(3.)61 b(The)22 b(generator)i(function)f(is)g(called)h(rep)s(eatedly)f(from)g -Fs(rl_completion_matches\(\))o Ft(,)c(returning)330 2010 +Fs(rl_completion_matches\(\))o Ft(,)c(returning)330 1134 y(a)33 b(string)g(eac)m(h)h(time.)48 b(The)32 b(argumen)m(ts)h(to)h (the)f(generator)h(function)e(are)h Fj(text)j Ft(and)c -Fj(state)p Ft(.)49 b Fj(text)330 2119 y Ft(is)32 b(the)g(partial)h(w)m +Fj(state)p Ft(.)49 b Fj(text)330 1244 y Ft(is)32 b(the)g(partial)h(w)m (ord)f(to)h(b)s(e)e(completed.)47 b Fj(state)38 b Ft(is)32 b(zero)h(the)f(\014rst)g(time)g(the)h(function)e(is)h(called,)330 -2229 y(allo)m(wing)46 b(the)e(generator)h(to)f(p)s(erform)f(an)m(y)h +1353 y(allo)m(wing)46 b(the)e(generator)h(to)f(p)s(erform)f(an)m(y)h (necessary)g(initialization,)51 b(and)43 b(a)h(p)s(ositiv)m(e)h(non-) -330 2339 y(zero)30 b(in)m(teger)h(for)d(eac)m(h)j(subsequen)m(t)d +330 1463 y(zero)30 b(in)m(teger)h(for)d(eac)m(h)j(subsequen)m(t)d (call.)42 b(The)29 b(generator)h(function)f(returns)f -Fs(\(char)h(*\)NULL)e Ft(to)330 2448 y(inform)37 b Fs +Fs(\(char)h(*\)NULL)e Ft(to)330 1572 y(inform)37 b Fs (rl_completion_matches\(\))32 b Ft(that)39 b(there)f(are)g(no)g(more)g -(p)s(ossibilities)h(left.)65 b(Usually)330 2558 y(the)39 +(p)s(ossibilities)h(left.)65 b(Usually)330 1682 y(the)39 b(generator)h(function)e(computes)h(the)g(list)g(of)g(p)s(ossible)f (completions)i(when)e Fj(state)45 b Ft(is)39 b(zero,)330 -2667 y(and)25 b(returns)f(them)i(one)f(at)i(a)f(time)g(on)f(subsequen)m +1792 y(and)25 b(returns)f(them)i(one)f(at)i(a)f(time)g(on)f(subsequen)m (t)g(calls.)40 b(Eac)m(h)26 b(string)g(the)g(generator)g(function)330 -2777 y(returns)31 b(as)h(a)g(matc)m(h)h(m)m(ust)f(b)s(e)f(allo)s(cated) +1901 y(returns)31 b(as)h(a)g(matc)m(h)h(m)m(ust)f(b)s(e)f(allo)s(cated) j(with)d Fs(malloc\(\))p Ft(;)g(Readline)h(frees)g(the)g(strings)g -(when)330 2887 y(it)i(has)g(\014nished)e(with)i(them.)51 +(when)330 2011 y(it)i(has)g(\014nished)e(with)i(them.)51 b(Suc)m(h)33 b(a)h(generator)h(function)f(is)g(referred)f(to)h(as)h(an) -e Fj(application-)330 2996 y(sp)s(eci\014c)d(completion)i(function)p -Ft(.)3350 3156 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_complete)c +e Fj(application-)330 2120 y(sp)s(eci\014c)d(completion)i(function)p +Ft(.)3350 2341 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_complete)c Fg(\()p Ff(in)m(t)34 b(ignore,)e(in)m(t)i(in)m(v)m(oking)p -2020 3156 30 5 v 43 w(k)m(ey)p Fg(\))390 3266 y Ft(Complete)d(the)g(w)m +2020 2341 30 5 v 43 w(k)m(ey)p Fg(\))390 2451 y Ft(Complete)d(the)g(w)m (ord)g(at)g(or)g(b)s(efore)f(p)s(oin)m(t.)41 b(Y)-8 b(ou)32 b(ha)m(v)m(e)g(supplied)d(the)i(function)f(that)h(do)s(es)g(the)390 -3375 y(initial)42 b(simple)f(matc)m(hing)i(selection)f(algorithm)h +2560 y(initial)42 b(simple)f(matc)m(hing)i(selection)f(algorithm)h (\(see)f Fs(rl_completion_matches\(\))o Ft(\).)67 b(The)390 -3485 y(default)31 b(is)f(to)h(do)f(\014lename)h(completion.)3371 -3645 y([V)-8 b(ariable])-3598 b Fh(rl_compentry_func_t)58 -b(*)53 b(rl_completion_entry_fun)q(cti)q(on)390 3754 +2670 y(default)31 b(is)f(to)h(do)f(\014lename)h(completion.)3371 +2890 y([V)-8 b(ariable])-3598 b Fh(rl_compentry_func_t)58 +b(*)53 b(rl_completion_entry_fun)q(cti)q(on)390 3000 y Ft(This)39 b(is)h(a)g(p)s(oin)m(ter)g(to)h(the)f(generator)h (function)f(for)f Fs(rl_completion_matches\(\))p Ft(.)63 -b(If)40 b(the)390 3864 y(v)-5 b(alue)24 b(of)g Fs +b(If)40 b(the)390 3110 y(v)-5 b(alue)24 b(of)g Fs (rl_completion_entry_funct)o(ion)17 b Ft(is)24 b Fs(NULL)f Ft(then)g(the)h(default)g(\014lename)g(generator)390 -3973 y(function,)49 b Fs(rl_filename_completion_)o(fun)o(ctio)o(n\(\))p +3219 y(function,)49 b Fs(rl_filename_completion_)o(fun)o(ctio)o(n\(\))p Ft(,)42 b(is)j(used.)84 b(An)44 b Fj(application-sp)s(eci\014c)390 -4083 y(completion)22 b(function)f Ft(is)g(a)h(function)e(whose)h +3329 y(completion)22 b(function)f Ft(is)g(a)h(function)e(whose)h (address)f(is)h(assigned)h(to)f Fs(rl_completion_entry_)390 -4193 y(function)28 b Ft(and)i(whose)g(return)f(v)-5 b(alues)31 +3438 y(function)28 b Ft(and)i(whose)g(return)f(v)-5 b(alues)31 b(are)g(used)e(to)j(generate)f(p)s(ossible)f(completions.)150 -4376 y Fi(2.6.2)63 b(Completion)41 b(F)-10 b(unctions)150 -4523 y Ft(Here)31 b(is)f(the)h(complete)h(list)f(of)f(callable)j +3656 y Fi(2.6.2)63 b(Completion)41 b(F)-10 b(unctions)150 +3803 y Ft(Here)31 b(is)f(the)h(complete)h(list)f(of)f(callable)j (completion)e(functions)f(presen)m(t)h(in)f(Readline.)3350 -4682 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_complete_internal)f -Fg(\()p Ff(in)m(t)33 b(what)p 1861 4682 V 44 w(to)p 1994 -4682 V 43 w(do)p Fg(\))390 4792 y Ft(Complete)k(the)g(w)m(ord)f(at)i -(or)e(b)s(efore)g(p)s(oin)m(t.)60 b Fj(what)p 2208 4792 -28 4 v 40 w(to)p 2328 4792 V 41 w(do)41 b Ft(sa)m(ys)c(what)f(to)i(do)e -(with)g(the)h(com-)390 4902 y(pletion.)44 b(A)31 b(v)-5 +4023 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_complete_internal)f +Fg(\()p Ff(in)m(t)33 b(what)p 1861 4023 V 44 w(to)p 1994 +4023 V 43 w(do)p Fg(\))390 4133 y Ft(Complete)k(the)g(w)m(ord)f(at)i +(or)e(b)s(efore)g(p)s(oin)m(t.)60 b Fj(what)p 2208 4133 +28 4 v 40 w(to)p 2328 4133 V 41 w(do)41 b Ft(sa)m(ys)c(what)f(to)i(do)e +(with)g(the)h(com-)390 4243 y(pletion.)44 b(A)31 b(v)-5 b(alue)32 b(of)f(`)p Fs(?)p Ft(')g(means)h(list)f(the)h(p)s(ossible)e (completions.)45 b(`)p Fs(TAB)p Ft(')31 b(means)g(do)g(standard)390 -5011 y(completion.)44 b(`)p Fs(*)p Ft(')32 b(means)f(insert)g(all)h(of) +4352 y(completion.)44 b(`)p Fs(*)p Ft(')32 b(means)f(insert)g(all)h(of) f(the)g(p)s(ossible)g(completions.)44 b(`)p Fs(!)p Ft(')32 -b(means)f(to)h(displa)m(y)f(all)390 5121 y(of)k(the)f(p)s(ossible)g +b(means)f(to)h(displa)m(y)f(all)390 4462 y(of)k(the)f(p)s(ossible)g (completions,)j(if)d(there)h(is)f(more)g(than)h(one,)g(as)g(w)m(ell)g -(as)g(p)s(erforming)e(partial)390 5230 y(completion.)41 +(as)g(p)s(erforming)e(partial)390 4571 y(completion.)41 b(`)p Fs(@)p Ft(')27 b(is)h(similar)f(to)h(`)p Fs(!)p Ft(',)h(but)d(p)s(ossible)h(completions)i(are)e(not)h(listed)g(if)f -(the)g(p)s(ossible)390 5340 y(completions)32 b(share)e(a)g(common)h -(pre\014x.)p eop end -%%Page: 53 57 -TeXDict begin 53 56 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(53)3350 -299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_complete)c -Fg(\()p Ff(in)m(t)34 b(ignore,)e(in)m(t)i(in)m(v)m(oking)p -2020 299 30 5 v 43 w(k)m(ey)p Fg(\))390 408 y Ft(Complete)42 -b(the)f(w)m(ord)g(at)h(or)f(b)s(efore)g(p)s(oin)m(t.)73 -b(Y)-8 b(ou)41 b(ha)m(v)m(e)i(supplied)c(the)j(function)f(that)g(do)s -(es)390 518 y(the)33 b(initial)h(simple)f(matc)m(hing)h(selection)h +(the)g(p)s(ossible)390 4681 y(completions)32 b(share)e(a)g(common)h +(pre\014x.)3350 4902 y([F)-8 b(unction])-3599 b Fh(int)53 +b(rl_complete)c Fg(\()p Ff(in)m(t)34 b(ignore,)e(in)m(t)i(in)m(v)m +(oking)p 2020 4902 30 5 v 43 w(k)m(ey)p Fg(\))390 5011 +y Ft(Complete)42 b(the)f(w)m(ord)g(at)h(or)f(b)s(efore)g(p)s(oin)m(t.) +73 b(Y)-8 b(ou)41 b(ha)m(v)m(e)i(supplied)c(the)j(function)f(that)g(do) +s(es)390 5121 y(the)33 b(initial)h(simple)f(matc)m(hing)h(selection)h (algorithm)f(\(see)g Fs(rl_completion_matches\(\))27 -b Ft(and)390 628 y Fs(rl_completion_entry_func)o(tion)o +b Ft(and)390 5230 y Fs(rl_completion_entry_func)o(tion)o Ft(\).)52 b(The)35 b(default)h(is)g(to)h(do)e(\014lename)h(completion.) -59 b(This)390 737 y(calls)32 b Fs(rl_complete_internal\(\))24 +59 b(This)390 5340 y(calls)32 b Fs(rl_complete_internal\(\))24 b Ft(with)30 b(an)g(argumen)m(t)h(dep)s(ending)e(on)h -Fj(in)m(v)m(oking)p 3314 737 28 4 v 41 w(k)m(ey)p Ft(.)3350 -923 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_possible_completio)q(ns)f +Fj(in)m(v)m(oking)p 3314 5340 28 4 v 41 w(k)m(ey)p Ft(.)p +eop end +%%Page: 55 59 +TeXDict begin 55 58 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(55)3350 +299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_possible_completio)q(ns)f Fg(\()p Ff(in)m(t)33 b(coun)m(t,)h(in)m(t)f(in)m(v)m(oking)p -2622 923 30 5 v 43 w(k)m(ey)p Fg(\))390 1032 y Ft(List)41 +2622 299 30 5 v 43 w(k)m(ey)p Fg(\))390 408 y Ft(List)41 b(the)f(p)s(ossible)g(completions.)73 b(See)40 b(description)h(of)g Fs(rl_complete)27 b(\(\))p Ft(.)70 b(This)40 b(calls)i -Fs(rl_)390 1142 y(complete_internal\(\))25 b Ft(with)30 -b(an)g(argumen)m(t)h(of)g(`)p Fs(?)p Ft('.)3350 1327 -y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_insert_completions)f +Fs(rl_)390 518 y(complete_internal\(\))25 b Ft(with)30 +b(an)g(argumen)m(t)h(of)g(`)p Fs(?)p Ft('.)3350 718 y([F)-8 +b(unction])-3599 b Fh(int)53 b(rl_insert_completions)f Fg(\()p Ff(in)m(t)34 b(coun)m(t,)f(in)m(t)g(in)m(v)m(oking)p -2517 1327 V 44 w(k)m(ey)p Fg(\))390 1437 y Ft(Insert)g(the)h(list)g(of) -g(p)s(ossible)f(completions)i(in)m(to)f(the)g(line,)h(deleting)g(the)f -(partially-completed)390 1546 y(w)m(ord.)44 b(See)32 -b(description)g(of)g Fs(rl_complete\(\))p Ft(.)41 b(This)31 -b(calls)i Fs(rl_complete_internal\(\))25 b Ft(with)390 -1656 y(an)30 b(argumen)m(t)h(of)g(`)p Fs(*)p Ft('.)3350 -1841 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_completion_mode)e -Fg(\()p Ff(rl)p 1455 1841 V 44 w(command)p 1919 1841 -V 44 w(func)p 2147 1841 V 46 w(t)33 b(*cfunc)p Fg(\))390 -1951 y Ft(Returns)40 b(the)i(appropriate)g(v)-5 b(alue)41 -b(to)i(pass)e(to)h Fs(rl_complete_internal\(\))35 b Ft(dep)s(ending)40 -b(on)390 2060 y(whether)g Fj(cfunc)46 b Ft(w)m(as)41 -b(called)h(t)m(wice)g(in)f(succession)g(and)f(the)h(v)-5 -b(alues)41 b(of)g(the)g Fs(show-all-if-)390 2170 y(ambiguous)25 -b Ft(and)i Fs(show-all-if-unmodified)21 b Ft(v)-5 b(ariables.)41 -b(Application-sp)s(eci\014c)29 b(completion)390 2279 -y(functions)h(ma)m(y)h(use)f(this)g(function)g(to)h(presen)m(t)g(the)f -(same)h(in)m(terface)h(as)f Fs(rl_complete\(\))p Ft(.)3350 -2465 y([F)-8 b(unction])-3599 b Fh(char)54 b(**)e -(rl_completion_matches)g Fg(\()p Ff(const)34 b(c)m(har)g(*text,)565 -2574 y(rl)p 639 2574 V 44 w(comp)s(en)m(try)p 1145 2574 -V 44 w(func)p 1373 2574 V 45 w(t)f(*en)m(try)p 1767 2574 -V 44 w(func)p Fg(\))390 2684 y Ft(Returns)k(an)h(arra)m(y)g(of)g -(strings)g(whic)m(h)f(is)h(a)g(list)h(of)f(completions)h(for)e -Fj(text)p Ft(.)64 b(If)38 b(there)g(are)g(no)390 2794 +2517 718 V 44 w(k)m(ey)p Fg(\))390 828 y Ft(Insert)g(the)h(list)g(of)g +(p)s(ossible)f(completions)i(in)m(to)f(the)g(line,)h(deleting)g(the)f +(partially-completed)390 937 y(w)m(ord.)44 b(See)32 b(description)g(of) +g Fs(rl_complete\(\))p Ft(.)41 b(This)31 b(calls)i Fs +(rl_complete_internal\(\))25 b Ft(with)390 1047 y(an)30 +b(argumen)m(t)h(of)g(`)p Fs(*)p Ft('.)3350 1247 y([F)-8 +b(unction])-3599 b Fh(int)53 b(rl_completion_mode)e Fg(\()p +Ff(rl)p 1455 1247 V 44 w(command)p 1919 1247 V 44 w(func)p +2147 1247 V 46 w(t)33 b(*cfunc)p Fg(\))390 1356 y Ft(Returns)40 +b(the)i(appropriate)g(v)-5 b(alue)41 b(to)i(pass)e(to)h +Fs(rl_complete_internal\(\))35 b Ft(dep)s(ending)40 b(on)390 +1466 y(whether)g Fj(cfunc)46 b Ft(w)m(as)41 b(called)h(t)m(wice)g(in)f +(succession)g(and)f(the)h(v)-5 b(alues)41 b(of)g(the)g +Fs(show-all-if-)390 1575 y(ambiguous)25 b Ft(and)i Fs +(show-all-if-unmodified)21 b Ft(v)-5 b(ariables.)41 b(Application-sp)s +(eci\014c)29 b(completion)390 1685 y(functions)h(ma)m(y)h(use)f(this)g +(function)g(to)h(presen)m(t)g(the)f(same)h(in)m(terface)h(as)f +Fs(rl_complete\(\))p Ft(.)3350 1885 y([F)-8 b(unction])-3599 +b Fh(char)54 b(**)e(rl_completion_matches)g Fg(\()p Ff(const)34 +b(c)m(har)g(*text,)565 1995 y(rl)p 639 1995 V 44 w(comp)s(en)m(try)p +1145 1995 V 44 w(func)p 1373 1995 V 45 w(t)f(*en)m(try)p +1767 1995 V 44 w(func)p Fg(\))390 2104 y Ft(Returns)k(an)h(arra)m(y)g +(of)g(strings)g(whic)m(h)f(is)h(a)g(list)h(of)f(completions)h(for)e +Fj(text)p Ft(.)64 b(If)38 b(there)g(are)g(no)390 2214 y(completions,)f(returns)c Fs(NULL)p Ft(.)52 b(The)34 b(\014rst)f(en)m(try)i(in)f(the)h(returned)e(arra)m(y)i(is)g(the)f -(substitution)390 2903 y(for)26 b Fj(text)p Ft(.)40 b(The)26 +(substitution)390 2323 y(for)26 b Fj(text)p Ft(.)40 b(The)26 b(remaining)h(en)m(tries)g(are)g(the)f(p)s(ossible)g(completions.)40 -b(The)26 b(arra)m(y)h(is)f(terminated)390 3013 y(with)k(a)h -Fs(NULL)e Ft(p)s(oin)m(ter.)390 3148 y Fj(en)m(try)p -603 3148 28 4 v 40 w(func)44 b Ft(is)c(a)g(function)f(of)h(t)m(w)m(o)g +b(The)26 b(arra)m(y)h(is)f(terminated)390 2433 y(with)k(a)h +Fs(NULL)e Ft(p)s(oin)m(ter.)390 2575 y Fj(en)m(try)p +603 2575 28 4 v 40 w(func)44 b Ft(is)c(a)g(function)f(of)h(t)m(w)m(o)g (args,)j(and)38 b(returns)h(a)g Fs(char)30 b(*)p Ft(.)67 -b(The)39 b(\014rst)g(argumen)m(t)h(is)390 3257 y Fj(text)p +b(The)39 b(\014rst)g(argumen)m(t)h(is)390 2685 y Fj(text)p Ft(.)66 b(The)39 b(second)f(is)h(a)g(state)h(argumen)m(t;)j(it)c(is)g (zero)g(on)g(the)g(\014rst)f(call,)k(and)c(non-zero)h(on)390 -3367 y(subsequen)m(t)33 b(calls.)52 b Fj(en)m(try)p 1320 -3367 V 41 w(func)38 b Ft(returns)33 b(a)h Fs(NULL)f Ft(p)s(oin)m(ter)g -(to)i(the)f(caller)h(when)e(there)h(are)g(no)390 3476 -y(more)d(matc)m(hes.)3350 3662 y([F)-8 b(unction])-3599 +2794 y(subsequen)m(t)33 b(calls.)52 b Fj(en)m(try)p 1320 +2794 V 41 w(func)38 b Ft(returns)33 b(a)h Fs(NULL)f Ft(p)s(oin)m(ter)g +(to)i(the)f(caller)h(when)e(there)h(are)g(no)390 2904 +y(more)d(matc)m(hes.)3350 3104 y([F)-8 b(unction])-3599 b Fh(char)54 b(*)e(rl_filename_completion)q(_fu)q(nct)q(ion)g -Fg(\()p Ff(const)34 b(c)m(har)g(*text,)e(in)m(t)565 3771 -y(state)p Fg(\))390 3881 y Ft(A)26 b(generator)h(function)e(for)g +Fg(\()p Ff(const)34 b(c)m(har)g(*text,)e(in)m(t)565 3213 +y(state)p Fg(\))390 3323 y Ft(A)26 b(generator)h(function)e(for)g (\014lename)h(completion)h(in)e(the)h(general)h(case.)40 -b Fj(text)28 b Ft(is)e(a)g(partial)h(\014le-)390 3991 +b Fj(text)28 b Ft(is)e(a)g(partial)h(\014le-)390 3433 y(name.)38 b(The)21 b(Bash)g(source)h(is)g(a)f(useful)g(reference)h (for)f(writing)h(application-sp)s(eci\014c)h(completion)390 -4100 y(functions)30 b(\(the)h(Bash)f(completion)i(functions)e(call)i -(this)e(and)g(other)g(Readline)h(functions\).)3350 4285 +3542 y(functions)30 b(\(the)h(Bash)f(completion)i(functions)e(call)i +(this)e(and)g(other)g(Readline)h(functions\).)3350 3742 y([F)-8 b(unction])-3599 b Fh(char)54 b(*)e(rl_username_completion)q (_fu)q(nct)q(ion)g Fg(\()p Ff(const)34 b(c)m(har)g(*text,)e(in)m(t)565 -4395 y(state)p Fg(\))390 4505 y Ft(A)d(completion)g(generator)h(for)e +3852 y(state)p Fg(\))390 3961 y Ft(A)d(completion)g(generator)h(for)e (usernames.)40 b Fj(text)31 b Ft(con)m(tains)f(a)f(partial)g(username)f -(preceded)g(b)m(y)390 4614 y(a)j(random)f(c)m(haracter)i(\(usually)e(`) +(preceded)g(b)m(y)390 4071 y(a)j(random)f(c)m(haracter)i(\(usually)e(`) p Fs(~)p Ft('\).)42 b(As)31 b(with)f(all)h(completion)h(generators,)g -Fj(state)37 b Ft(is)31 b(zero)g(on)390 4724 y(the)g(\014rst)e(call)j -(and)e(non-zero)h(for)f(subsequen)m(t)f(calls.)150 4924 +Fj(state)37 b Ft(is)31 b(zero)g(on)390 4180 y(the)g(\014rst)e(call)j +(and)e(non-zero)h(for)f(subsequen)m(t)f(calls.)150 4388 y Fi(2.6.3)63 b(Completion)41 b(V)-10 b(ariables)3371 -5121 y Ft([V)i(ariable])-3598 b Fh(rl_compentry_func_t)58 -b(*)53 b(rl_completion_entry_fun)q(cti)q(on)390 5230 +4592 y Ft([V)i(ariable])-3598 b Fh(rl_compentry_func_t)58 +b(*)53 b(rl_completion_entry_fun)q(cti)q(on)390 4702 y Ft(A)34 b(p)s(oin)m(ter)f(to)h(the)g(generator)h(function)e(for)g Fs(rl_completion_matches\(\))p Ft(.)44 b Fs(NULL)32 b -Ft(means)h(to)390 5340 y(use)d Fs(rl_filename_completion_fu)o(nct)o -(ion\()o(\))p Ft(,)25 b(the)30 b(default)h(\014lename)f(completer.)p -eop end -%%Page: 54 58 -TeXDict begin 54 57 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(54)3371 -299 y([V)-8 b(ariable])-3598 b Fh(rl_completion_func_t)58 +Ft(means)h(to)390 4811 y(use)d Fs(rl_filename_completion_fu)o(nct)o +(ion\()o(\))p Ft(,)25 b(the)30 b(default)h(\014lename)f(completer.)3371 +5011 y([V)-8 b(ariable])-3598 b Fh(rl_completion_func_t)58 b(*)53 b(rl_attempted_completio)q(n_f)q(unct)q(ion)390 -408 y Ft(A)35 b(p)s(oin)m(ter)g(to)g(an)g(alternativ)m(e)i(function)d +5121 y Ft(A)35 b(p)s(oin)m(ter)g(to)g(an)g(alternativ)m(e)i(function)d (to)i(create)g(matc)m(hes.)55 b(The)34 b(function)h(is)f(called)i(with) -390 518 y Fj(text)p Ft(,)26 b Fj(start)p Ft(,)f(and)d +390 5230 y Fj(text)p Ft(,)26 b Fj(start)p Ft(,)f(and)d Fj(end)p Ft(.)38 b Fj(start)25 b Ft(and)e Fj(end)j Ft(are)d(indices)g (in)g Fs(rl_line_buffer)c Ft(de\014ning)j(the)h(b)s(ound-)390 -628 y(aries)j(of)h Fj(text)p Ft(,)h(whic)m(h)d(is)h(a)h(c)m(haracter)g +5340 y(aries)j(of)h Fj(text)p Ft(,)h(whic)m(h)d(is)h(a)h(c)m(haracter)g (string.)39 b(If)26 b(this)g(function)f(exists)i(and)e(returns)g -Fs(NULL)p Ft(,)h(or)g(if)390 737 y(this)c(v)-5 b(ariable)22 -b(is)g(set)h(to)f Fs(NULL)p Ft(,)h(then)f Fs(rl_complete\(\))c -Ft(will)k(call)h(the)f(v)-5 b(alue)23 b(of)f Fs(rl_completion_)390 -847 y(entry_function)i Ft(to)30 b(generate)f(matc)m(hes,)i(otherwise)d -(the)h(arra)m(y)g(of)f(strings)h(returned)e(will)i(b)s(e)390 -956 y(used.)37 b(If)22 b(this)g(function)g(sets)h(the)g -Fs(rl_attempted_completion)o(_ove)o(r)16 b Ft(v)-5 b(ariable)24 -b(to)f(a)f(non-zero)390 1066 y(v)-5 b(alue,)35 b(Readline)g(will)f(not) -g(p)s(erform)f(its)h(default)g(completion)h(ev)m(en)g(if)f(this)g -(function)f(returns)390 1176 y(no)d(matc)m(hes.)3371 -1351 y([V)-8 b(ariable])-3598 b Fh(rl_quote_func_t)57 -b(*)52 b(rl_filename_quoting_)q(func)q(tio)q(n)390 1461 -y Ft(A)33 b(p)s(oin)m(ter)f(to)h(a)g(function)g(that)g(will)g(quote)g -(a)g(\014lename)f(in)h(an)f(application-sp)s(eci\014c)i(fashion.)390 -1570 y(This)k(is)i(called)g(if)f(\014lename)h(completion)g(is)f(b)s -(eing)g(attempted)i(and)d(one)i(of)f(the)g(c)m(haracters)390 -1680 y(in)33 b Fs(rl_filename_quote_charac)o(ter)o(s)27 +Fs(NULL)p Ft(,)h(or)g(if)p eop end +%%Page: 56 60 +TeXDict begin 56 59 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(56)390 +299 y(this)22 b(v)-5 b(ariable)22 b(is)g(set)h(to)f Fs(NULL)p +Ft(,)h(then)f Fs(rl_complete\(\))c Ft(will)k(call)h(the)f(v)-5 +b(alue)23 b(of)f Fs(rl_completion_)390 408 y(entry_function)i +Ft(to)30 b(generate)f(matc)m(hes,)i(otherwise)d(the)h(arra)m(y)g(of)f +(strings)h(returned)e(will)i(b)s(e)390 518 y(used.)37 +b(If)22 b(this)g(function)g(sets)h(the)g Fs(rl_attempted_completion)o +(_ove)o(r)16 b Ft(v)-5 b(ariable)24 b(to)f(a)f(non-zero)390 +628 y(v)-5 b(alue,)35 b(Readline)g(will)f(not)g(p)s(erform)f(its)h +(default)g(completion)h(ev)m(en)g(if)f(this)g(function)f(returns)390 +737 y(no)d(matc)m(hes.)3371 913 y([V)-8 b(ariable])-3598 +b Fh(rl_quote_func_t)57 b(*)52 b(rl_filename_quoting_)q(func)q(tio)q(n) +390 1022 y Ft(A)33 b(p)s(oin)m(ter)f(to)h(a)g(function)g(that)g(will)g +(quote)g(a)g(\014lename)f(in)h(an)f(application-sp)s(eci\014c)i +(fashion.)390 1132 y(This)k(is)i(called)g(if)f(\014lename)h(completion) +g(is)f(b)s(eing)g(attempted)i(and)d(one)i(of)f(the)g(c)m(haracters)390 +1241 y(in)33 b Fs(rl_filename_quote_charac)o(ter)o(s)27 b Ft(app)s(ears)33 b(in)g(a)g(completed)h(\014lename.)50 -b(The)32 b(function)390 1789 y(is)37 b(called)h(with)e -Fj(text)p Ft(,)k Fj(matc)m(h)p 1438 1789 28 4 v 41 w(t)m(yp)s(e)p -Ft(,)f(and)d Fj(quote)p 2119 1789 V 41 w(p)s(oin)m(ter)p +b(The)32 b(function)390 1351 y(is)37 b(called)h(with)e +Fj(text)p Ft(,)k Fj(matc)m(h)p 1438 1351 28 4 v 41 w(t)m(yp)s(e)p +Ft(,)f(and)d Fj(quote)p 2119 1351 V 41 w(p)s(oin)m(ter)p Ft(.)60 b(The)36 b Fj(text)k Ft(is)d(the)g(\014lename)g(to)h(b)s(e)390 -1899 y(quoted.)76 b(The)42 b Fj(matc)m(h)p 1210 1899 +1461 y(quoted.)76 b(The)42 b Fj(matc)m(h)p 1210 1461 V 41 w(t)m(yp)s(e)48 b Ft(is)42 b(either)h Fs(SINGLE_MATCH)p Ft(,)f(if)g(there)g(is)h(only)f(one)h(completion)390 -2008 y(matc)m(h,)33 b(or)e Fs(MULT_MATCH)p Ft(.)41 b(Some)31 +1570 y(matc)m(h,)33 b(or)e Fs(MULT_MATCH)p Ft(.)41 b(Some)31 b(functions)g(use)g(this)h(to)g(decide)f(whether)g(or)h(not)f(to)h -(insert)g(a)390 2118 y(closing)22 b(quote)f(c)m(haracter.)40 -b(The)20 b Fj(quote)p 1751 2118 V 41 w(p)s(oin)m(ter)27 +(insert)g(a)390 1680 y(closing)22 b(quote)f(c)m(haracter.)40 +b(The)20 b Fj(quote)p 1751 1680 V 41 w(p)s(oin)m(ter)27 b Ft(is)21 b(a)g(p)s(oin)m(ter)g(to)g(an)m(y)h(op)s(ening)e(quote)h(c)m -(haracter)390 2228 y(the)31 b(user)e(t)m(yp)s(ed.)41 +(haracter)390 1789 y(the)31 b(user)e(t)m(yp)s(ed.)41 b(Some)30 b(functions)g(c)m(ho)s(ose)h(to)g(reset)g(this)g(c)m -(haracter.)3371 2403 y([V)-8 b(ariable])-3598 b Fh(rl_dequote_func_t)57 -b(*)c(rl_filename_dequoting_)q(fun)q(cti)q(on)390 2513 +(haracter.)3371 1965 y([V)-8 b(ariable])-3598 b Fh(rl_dequote_func_t)57 +b(*)c(rl_filename_dequoting_)q(fun)q(cti)q(on)390 2074 y Ft(A)30 b(p)s(oin)m(ter)f(to)i(a)f(function)f(that)h(will)g(remo)m(v) m(e)h(application-sp)s(eci\014c)g(quoting)f(c)m(haracters)h(from)390 -2622 y(a)i(\014lename)g(b)s(efore)f(completion)h(is)g(attempted,)h(so)f +2184 y(a)i(\014lename)g(b)s(efore)f(completion)h(is)g(attempted,)h(so)f (those)g(c)m(haracters)h(do)e(not)h(in)m(terfere)g(with)390 -2732 y(matc)m(hing)39 b(the)f(text)i(against)f(names)f(in)g(the)g +2293 y(matc)m(hing)39 b(the)f(text)i(against)f(names)f(in)g(the)g (\014lesystem.)64 b(It)38 b(is)g(called)i(with)d Fj(text)p -Ft(,)42 b(the)c(text)390 2841 y(of)k(the)h(w)m(ord)f(to)g(b)s(e)g -(dequoted,)j(and)d Fj(quote)p 2014 2841 V 41 w(c)m(har)p +Ft(,)42 b(the)c(text)390 2403 y(of)k(the)h(w)m(ord)f(to)g(b)s(e)g +(dequoted,)j(and)d Fj(quote)p 2014 2403 V 41 w(c)m(har)p Ft(,)j(whic)m(h)d(is)h(the)f(quoting)h(c)m(haracter)g(that)390 -2951 y(delimits)33 b(the)f(\014lename)g(\(usually)h(`)p +2513 y(delimits)33 b(the)f(\014lename)g(\(usually)h(`)p Fs(')p Ft(')f(or)g(`)p Fs(")p Ft('\).)46 b(If)32 b Fj(quote)p -2368 2951 V 41 w(c)m(har)39 b Ft(is)32 b(zero,)i(the)e(\014lename)g(w)m -(as)h(not)390 3061 y(in)d(an)g(em)m(b)s(edded)g(string.)3371 -3236 y([V)-8 b(ariable])-3598 b Fh(rl_linebuf_func_t)57 -b(*)c(rl_char_is_quoted_p)390 3345 y Ft(A)37 b(p)s(oin)m(ter)g(to)g(a)g +2368 2513 V 41 w(c)m(har)39 b Ft(is)32 b(zero,)i(the)e(\014lename)g(w)m +(as)h(not)390 2622 y(in)d(an)g(em)m(b)s(edded)g(string.)3371 +2798 y([V)-8 b(ariable])-3598 b Fh(rl_linebuf_func_t)57 +b(*)c(rl_char_is_quoted_p)390 2907 y Ft(A)37 b(p)s(oin)m(ter)g(to)g(a)g (function)g(to)g(call)h(that)g(determines)f(whether)f(or)h(not)g(a)g -(sp)s(eci\014c)f(c)m(haracter)390 3455 y(in)e(the)h(line)f(bu\013er)g +(sp)s(eci\014c)f(c)m(haracter)390 3017 y(in)e(the)h(line)f(bu\013er)g (is)g(quoted,)i(according)g(to)f(whatev)m(er)g(quoting)g(mec)m(hanism)g -(the)f(program)390 3565 y(calling)26 b(Readline)g(uses.)38 +(the)f(program)390 3126 y(calling)26 b(Readline)g(uses.)38 b(The)24 b(function)h(is)g(called)h(with)e(t)m(w)m(o)i(argumen)m(ts:)39 -b Fj(text)p Ft(,)27 b(the)e(text)h(of)f(the)390 3674 +b Fj(text)p Ft(,)27 b(the)e(text)h(of)f(the)390 3236 y(line,)31 b(and)g Fj(index)p Ft(,)f(the)h(index)f(of)h(the)g(c)m (haracter)i(in)d(the)h(line.)42 b(It)31 b(is)g(used)f(to)h(decide)g -(whether)g(a)390 3784 y(c)m(haracter)h(found)d(in)g Fs +(whether)g(a)390 3345 y(c)m(haracter)h(found)d(in)g Fs (rl_completer_word_break_ch)o(ara)o(cter)o(s)24 b Ft(should)29 -b(b)s(e)h(used)f(to)i(break)390 3893 y(w)m(ords)f(for)g(the)h -(completer.)3371 4069 y([V)-8 b(ariable])-3598 b Fh +b(b)s(e)h(used)f(to)i(break)390 3455 y(w)m(ords)f(for)g(the)h +(completer.)3371 3630 y([V)-8 b(ariable])-3598 b Fh (rl_compignore_func_t)58 b(*)53 b(rl_ignore_some_complet)q(ion)q(s_fu)q -(nct)q(ion)390 4178 y Ft(This)37 b(function,)i(if)f(de\014ned,)g(is)g +(nct)q(ion)390 3740 y Ft(This)37 b(function,)i(if)f(de\014ned,)g(is)g (called)h(b)m(y)e(the)h(completer)h(when)e(real)h(\014lename)g -(completion)390 4288 y(is)c(done,)h(after)f(all)h(the)g(matc)m(hing)g +(completion)390 3850 y(is)c(done,)h(after)f(all)h(the)g(matc)m(hing)g (names)e(ha)m(v)m(e)j(b)s(een)d(generated.)53 b(It)34 -b(is)g(passed)f(a)i Fs(NULL)d Ft(ter-)390 4398 y(minated)f(arra)m(y)g +b(is)g(passed)f(a)i Fs(NULL)d Ft(ter-)390 3959 y(minated)f(arra)m(y)g (of)g(matc)m(hes.)43 b(The)31 b(\014rst)f(elemen)m(t)i(\()p Fs(matches[0])p Ft(\))d(is)h(the)h(maximal)h(substring)390 -4507 y(common)d(to)g(all)h(matc)m(hes.)41 b(This)28 b(function)h(can)g +4069 y(common)d(to)g(all)h(matc)m(hes.)41 b(This)28 b(function)h(can)g (re-arrange)g(the)g(list)h(of)f(matc)m(hes)g(as)g(required,)390 -4617 y(but)h(eac)m(h)h(elemen)m(t)h(deleted)f(from)f(the)h(arra)m(y)g -(m)m(ust)f(b)s(e)g(freed.)3371 4792 y([V)-8 b(ariable])-3598 +4178 y(but)h(eac)m(h)h(elemen)m(t)h(deleted)f(from)f(the)h(arra)m(y)g +(m)m(ust)f(b)s(e)g(freed.)3371 4354 y([V)-8 b(ariable])-3598 b Fh(rl_icppfunc_t)56 b(*)d(rl_directory_completio)q(n_ho)q(ok)390 -4902 y Ft(This)44 b(function,)49 b(if)d(de\014ned,)i(is)d(allo)m(w)m +4463 y Ft(This)44 b(function,)49 b(if)d(de\014ned,)i(is)d(allo)m(w)m (ed)i(to)f(mo)s(dify)e(the)i(directory)g(p)s(ortion)e(of)i(\014lenames) -390 5011 y(Readline)35 b(completes.)56 b(It)35 b(could)g(b)s(e)f(used)g +390 4573 y(Readline)35 b(completes.)56 b(It)35 b(could)g(b)s(e)f(used)g (to)i(expand)e(sym)m(b)s(olic)h(links)g(or)g(shell)g(v)-5 -b(ariables)35 b(in)390 5121 y(pathnames.)70 b(It)41 b(is)f(called)h +b(ariables)35 b(in)390 4682 y(pathnames.)70 b(It)41 b(is)f(called)h (with)f(the)h(address)e(of)i(a)g(string)f(\(the)h(curren)m(t)f -(directory)h(name\))390 5230 y(as)d(an)f(argumen)m(t,)j(and)d(ma)m(y)i +(directory)h(name\))390 4792 y(as)d(an)f(argumen)m(t,)j(and)d(ma)m(y)i (mo)s(dify)d(that)j(string.)62 b(If)37 b(the)h(string)f(is)h(replaced)g -(with)f(a)h(new)390 5340 y(string,)j(the)d(old)h(v)-5 +(with)f(a)h(new)390 4902 y(string,)j(the)d(old)h(v)-5 b(alue)39 b(should)e(b)s(e)h(freed.)64 b(An)m(y)39 b(mo)s(di\014ed)e -(directory)i(name)f(should)g(ha)m(v)m(e)i(a)p eop end -%%Page: 55 59 -TeXDict begin 55 58 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(55)390 -299 y(trailing)36 b(slash.)54 b(The)35 b(mo)s(di\014ed)e(v)-5 +(directory)i(name)f(should)g(ha)m(v)m(e)i(a)390 5011 +y(trailing)c(slash.)54 b(The)35 b(mo)s(di\014ed)e(v)-5 b(alue)36 b(will)f(b)s(e)f(used)g(as)i(part)e(of)h(the)h(completion,)h -(replacing)390 408 y(the)32 b(directory)g(p)s(ortion)f(of)h(the)g +(replacing)390 5121 y(the)32 b(directory)g(p)s(ortion)f(of)h(the)g (pathname)f(the)h(user)f(t)m(yp)s(ed.)44 b(A)m(t)33 b(the)f(least,)h -(ev)m(en)g(if)e(no)h(other)390 518 y(expansion)j(is)h(p)s(erformed,)f +(ev)m(en)g(if)e(no)h(other)390 5230 y(expansion)j(is)h(p)s(erformed,)f (this)h(function)f(should)g(remo)m(v)m(e)i(an)m(y)f(quote)g(c)m -(haracters)h(from)e(the)390 628 y(directory)c(name,)g(b)s(ecause)f(its) -h(result)f(will)h(b)s(e)e(passed)h(directly)h(to)g Fs(opendir\(\))p -Ft(.)390 768 y(The)25 b(directory)i(completion)g(ho)s(ok)e(returns)g -(an)h(in)m(teger)h(that)f(should)f(b)s(e)g(non-zero)i(if)e(the)i(func-) -390 878 y(tion)35 b(mo)s(di\014es)e(its)i(directory)f(argumen)m(t.)53 +(haracters)h(from)e(the)390 5340 y(directory)c(name,)g(b)s(ecause)f +(its)h(result)f(will)h(b)s(e)e(passed)h(directly)h(to)g +Fs(opendir\(\))p Ft(.)p eop end +%%Page: 57 61 +TeXDict begin 57 60 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(57)390 +299 y(The)25 b(directory)i(completion)g(ho)s(ok)e(returns)g(an)h(in)m +(teger)h(that)f(should)f(b)s(e)g(non-zero)i(if)e(the)i(func-)390 +408 y(tion)35 b(mo)s(di\014es)e(its)i(directory)f(argumen)m(t.)53 b(The)33 b(function)h(should)f(not)i(mo)s(dify)e(the)h(directory)390 -987 y(argumen)m(t)d(if)f(it)h(returns)e(0.)3371 1183 -y([V)-8 b(ariable])-3598 b Fh(rl_icppfunc_t)56 b(*)d -(rl_directory_rewrite_h)q(ook;)390 1293 y Ft(If)24 b(non-zero,)i(this)e -(is)h(the)f(address)g(of)g(a)h(function)f(to)h(call)g(when)f -(completing)h(a)g(directory)g(name.)390 1402 y(This)h(function)g(tak)m -(es)i(the)f(address)f(of)h(the)f(directory)h(name)g(to)g(b)s(e)f(mo)s -(di\014ed)g(as)h(an)f(argumen)m(t.)390 1512 y(Unlik)m(e)40 -b Fs(rl_directory_completion_h)o(ook)p Ft(,)35 b(it)40 -b(only)f(mo)s(di\014es)f(the)i(directory)f(name)h(used)390 -1622 y(in)35 b Fs(opendir)p Ft(,)g(not)g(what)h(is)f(displa)m(y)m(ed)h -(when)e(the)i(p)s(ossible)f(completions)h(are)g(prin)m(ted)f(or)g(in-) -390 1731 y(serted.)k(It)27 b(is)f(called)h(b)s(efore)f(rl)p -1463 1731 28 4 v 40 w(directory)p 1859 1731 V 41 w(completion)p -2333 1731 V 41 w(ho)s(ok.)39 b(A)m(t)27 b(the)g(least,)h(ev)m(en)f(if)g -(no)f(other)390 1841 y(expansion)35 b(is)h(p)s(erformed,)f(this)h +518 y(argumen)m(t)d(if)f(it)h(returns)e(0.)3371 720 y([V)-8 +b(ariable])-3598 b Fh(rl_icppfunc_t)56 b(*)d(rl_directory_rewrite_h)q +(ook;)390 830 y Ft(If)24 b(non-zero,)i(this)e(is)h(the)f(address)g(of)g +(a)h(function)f(to)h(call)g(when)f(completing)h(a)g(directory)g(name.) +390 939 y(This)h(function)g(tak)m(es)i(the)f(address)f(of)h(the)f +(directory)h(name)g(to)g(b)s(e)f(mo)s(di\014ed)g(as)h(an)f(argumen)m +(t.)390 1049 y(Unlik)m(e)40 b Fs(rl_directory_completion_h)o(ook)p +Ft(,)35 b(it)40 b(only)f(mo)s(di\014es)f(the)i(directory)f(name)h(used) +390 1159 y(in)35 b Fs(opendir)p Ft(,)g(not)g(what)h(is)f(displa)m(y)m +(ed)h(when)e(the)i(p)s(ossible)f(completions)h(are)g(prin)m(ted)f(or)g +(in-)390 1268 y(serted.)k(It)27 b(is)f(called)h(b)s(efore)f(rl)p +1463 1268 28 4 v 40 w(directory)p 1859 1268 V 41 w(completion)p +2333 1268 V 41 w(ho)s(ok.)39 b(A)m(t)27 b(the)g(least,)h(ev)m(en)f(if)g +(no)f(other)390 1378 y(expansion)35 b(is)h(p)s(erformed,)f(this)h (function)f(should)g(remo)m(v)m(e)i(an)m(y)f(quote)g(c)m(haracters)h -(from)e(the)390 1950 y(directory)c(name,)g(b)s(ecause)f(its)h(result)f +(from)e(the)390 1487 y(directory)c(name,)g(b)s(ecause)f(its)h(result)f (will)h(b)s(e)e(passed)h(directly)h(to)g Fs(opendir\(\))p -Ft(.)390 2091 y(The)37 b(directory)i(rewrite)f(ho)s(ok)f(returns)g(an)h +Ft(.)390 1631 y(The)37 b(directory)i(rewrite)f(ho)s(ok)f(returns)g(an)h (in)m(teger)h(that)f(should)f(b)s(e)g(non-zero)i(if)e(the)i(func-)390 -2200 y(tion)c(mo)s(di\014es)e(its)i(directory)f(argumen)m(t.)53 +1740 y(tion)c(mo)s(di\014es)e(its)i(directory)f(argumen)m(t.)53 b(The)33 b(function)h(should)f(not)i(mo)s(dify)e(the)h(directory)390 -2310 y(argumen)m(t)d(if)f(it)h(returns)e(0.)3371 2506 +1850 y(argumen)m(t)d(if)f(it)h(returns)e(0.)3371 2052 y([V)-8 b(ariable])-3598 b Fh(rl_icppfunc_t)56 b(*)d -(rl_filename_stat_hook)390 2616 y Ft(If)30 b(non-zero,)h(this)f(is)g +(rl_filename_stat_hook)390 2162 y Ft(If)30 b(non-zero,)h(this)f(is)g (the)g(address)f(of)h(a)h(function)f(for)f(the)i(completer)g(to)g(call) -g(b)s(efore)f(deciding)390 2725 y(whic)m(h)g(c)m(haracter)i(to)e(app)s +g(b)s(efore)f(deciding)390 2271 y(whic)m(h)g(c)m(haracter)i(to)e(app)s (end)f(to)i(a)f(completed)h(name.)41 b(This)29 b(function)h(mo)s -(di\014es)f(its)i(\014lename)390 2835 y(name)36 b(argumen)m(t,)h(and)e +(di\014es)f(its)i(\014lename)390 2381 y(name)36 b(argumen)m(t,)h(and)e (the)h(mo)s(di\014ed)e(v)-5 b(alue)36 b(is)g(passed)f(to)h Fs(stat\(\))e Ft(to)i(determine)g(the)g(\014le's)390 -2944 y(t)m(yp)s(e)41 b(and)f(c)m(haracteristics.)73 b(This)40 +2491 y(t)m(yp)s(e)41 b(and)f(c)m(haracteristics.)73 b(This)40 b(function)g(do)s(es)g(not)h(need)f(to)h(remo)m(v)m(e)h(quote)f(c)m -(haracters)390 3054 y(from)30 b(the)g(\014lename.)390 -3194 y(The)40 b(stat)h(ho)s(ok)f(returns)f(an)h(in)m(teger)h(that)g +(haracters)390 2600 y(from)30 b(the)g(\014lename.)390 +2744 y(The)40 b(stat)h(ho)s(ok)f(returns)f(an)h(in)m(teger)h(that)g (should)e(b)s(e)h(non-zero)g(if)h(the)f(function)g(mo)s(di\014es)390 -3304 y(its)32 b(directory)f(argumen)m(t.)44 b(The)31 +2853 y(its)32 b(directory)f(argumen)m(t.)44 b(The)31 b(function)f(should)h(not)g(mo)s(dify)g(the)g(directory)h(argumen)m(t)f -(if)g(it)390 3414 y(returns)e(0.)3371 3610 y([V)-8 b(ariable])-3598 +(if)g(it)390 2963 y(returns)e(0.)3371 3165 y([V)-8 b(ariable])-3598 b Fh(rl_dequote_func_t)57 b(*)c(rl_filename_rewrite_ho)q(ok)390 -3719 y Ft(If)39 b(non-zero,)k(this)d(is)f(the)h(address)f(of)h(a)g +3275 y Ft(If)39 b(non-zero,)k(this)d(is)f(the)h(address)f(of)h(a)g (function)g(called)g(when)f(reading)h(directory)g(en)m(tries)390 -3829 y(from)f(the)h(\014lesystem)g(for)g(completion)h(and)e(comparing)i +3384 y(from)f(the)h(\014lesystem)g(for)g(completion)h(and)e(comparing)i (them)e(to)i(the)f(partial)h(w)m(ord)e(to)i(b)s(e)390 -3938 y(completed.)g(The)26 b(function)h(should)f(p)s(erform)f(an)m(y)j +3494 y(completed.)g(The)26 b(function)h(should)f(p)s(erform)f(an)m(y)j (necessary)f(application)i(or)e(system-sp)s(eci\014c)390 -4048 y(con)m(v)m(ersion)35 b(on)g(the)f(\014lename,)i(suc)m(h)d(as)i +3603 y(con)m(v)m(ersion)35 b(on)g(the)f(\014lename,)i(suc)m(h)d(as)i (con)m(v)m(erting)h(b)s(et)m(w)m(een)f(c)m(haracter)g(sets)g(or)f(con)m -(v)m(erting)390 4158 y(from)f(a)g(\014lesystem)h(format)g(to)g(a)f(c)m +(v)m(erting)390 3713 y(from)f(a)g(\014lesystem)h(format)g(to)g(a)f(c)m (haracter)i(input)e(format.)50 b(The)32 b(function)h(tak)m(es)i(t)m(w)m -(o)g(argu-)390 4267 y(men)m(ts:)49 b Fj(fname)p Ft(,)36 +(o)g(argu-)390 3823 y(men)m(ts:)49 b Fj(fname)p Ft(,)36 b(the)e(\014lename)h(to)g(b)s(e)f(con)m(v)m(erted,)j(and)d Fj(fnlen)p Ft(,)h(its)g(length)g(in)f(b)m(ytes.)53 b(It)35 -b(m)m(ust)390 4377 y(either)24 b(return)e(its)h(\014rst)g(argumen)m(t)g +b(m)m(ust)390 3932 y(either)24 b(return)e(its)h(\014rst)g(argumen)m(t)g (\(if)h(no)f(con)m(v)m(ersion)h(tak)m(es)h(place\))g(or)e(the)g(con)m -(v)m(erted)i(\014lename)390 4486 y(in)j(newly-allo)s(cated)i(memory)-8 +(v)m(erted)i(\014lename)390 4042 y(in)j(newly-allo)s(cated)i(memory)-8 b(.)41 b(The)27 b(con)m(v)m(erted)j(form)e(is)g(used)g(to)h(compare)f -(against)i(the)e(w)m(ord)390 4596 y(to)g(b)s(e)e(completed,)j(and,)f +(against)i(the)e(w)m(ord)390 4151 y(to)g(b)s(e)e(completed,)j(and,)f (if)f(it)h(matc)m(hes,)h(is)e(added)f(to)i(the)g(list)f(of)h(matc)m -(hes.)41 b(Readline)27 b(will)h(free)390 4706 y(the)j(allo)s(cated)h -(string.)3371 4902 y([V)-8 b(ariable])-3598 b Fh(rl_compdisp_func_t)58 +(hes.)41 b(Readline)27 b(will)h(free)390 4261 y(the)j(allo)s(cated)h +(string.)3371 4463 y([V)-8 b(ariable])-3598 b Fh(rl_compdisp_func_t)58 b(*)52 b(rl_completion_display)q(_ma)q(tch)q(es_h)q(ook)390 -5011 y Ft(If)22 b(non-zero,)i(then)e(this)g(is)g(the)g(address)f(of)h +4573 y Ft(If)22 b(non-zero,)i(then)e(this)g(is)g(the)g(address)f(of)h (a)g(function)g(to)h(call)g(when)e(completing)i(a)g(w)m(ord)e(w)m(ould) -390 5121 y(normally)h(displa)m(y)h(the)f(list)h(of)f(p)s(ossible)g +390 4682 y(normally)h(displa)m(y)h(the)f(list)h(of)f(p)s(ossible)g (matc)m(hes.)39 b(This)21 b(function)h(is)g(called)i(in)e(lieu)g(of)g -(Readline)390 5230 y(displa)m(ying)37 b(the)h(list.)61 +(Readline)390 4792 y(displa)m(ying)37 b(the)h(list.)61 b(It)37 b(tak)m(es)i(three)e(argumen)m(ts:)54 b(\()p Fs(char)30 b(**)p Fj(matc)m(hes)p Ft(,)39 b Fs(int)d -Fj(n)m(um)p 3370 5230 V 40 w(matc)m(hes)p Ft(,)390 5340 -y Fs(int)26 b Fj(max)p 735 5340 V 40 w(length)p Ft(\))h(where)f +Fj(n)m(um)p 3370 4792 V 40 w(matc)m(hes)p Ft(,)390 4902 +y Fs(int)26 b Fj(max)p 735 4902 V 40 w(length)p Ft(\))h(where)f Fj(matc)m(hes)31 b Ft(is)c(the)f(arra)m(y)h(of)g(matc)m(hing)g -(strings,)h Fj(n)m(um)p 3152 5340 V 39 w(matc)m(hes)j -Ft(is)c(the)p eop end -%%Page: 56 60 -TeXDict begin 56 59 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(56)390 -299 y(n)m(um)m(b)s(er)35 b(of)i(strings)f(in)g(that)h(arra)m(y)-8 -b(,)39 b(and)d Fj(max)p 2073 299 28 4 v 40 w(length)h +(strings,)h Fj(n)m(um)p 3152 4902 V 39 w(matc)m(hes)j +Ft(is)c(the)390 5011 y(n)m(um)m(b)s(er)35 b(of)i(strings)f(in)g(that)h +(arra)m(y)-8 b(,)39 b(and)d Fj(max)p 2073 5011 V 40 w(length)h Ft(is)g(the)f(length)h(of)g(the)f(longest)i(string)390 -408 y(in)f(that)i(arra)m(y)-8 b(.)63 b(Readline)39 b(pro)m(vides)e(a)h +5121 y(in)f(that)i(arra)m(y)-8 b(.)63 b(Readline)39 b(pro)m(vides)e(a)h (con)m(v)m(enience)i(function,)f Fs(rl_display_match_list)p -Ft(,)390 518 y(that)33 b(tak)m(es)g(care)g(of)f(doing)g(the)g(displa)m +Ft(,)390 5230 y(that)33 b(tak)m(es)g(care)g(of)f(doing)g(the)g(displa)m (y)g(to)h(Readline's)g(output)e(stream.)46 b(Y)-8 b(ou)33 -b(ma)m(y)f(call)h(that)390 628 y(function)d(from)g(this)g(ho)s(ok.)3371 -810 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g -(rl_basic_word_break_ch)q(ara)q(cter)q(s)390 920 y Ft(The)44 +b(ma)m(y)f(call)h(that)390 5340 y(function)d(from)g(this)g(ho)s(ok.)p +eop end +%%Page: 58 62 +TeXDict begin 58 61 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(58)3371 +299 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g +(rl_basic_word_break_ch)q(ara)q(cter)q(s)390 408 y Ft(The)44 b(basic)g(list)h(of)f(c)m(haracters)i(that)f(signal)g(a)f(break)g(b)s (et)m(w)m(een)h(w)m(ords)f(for)g(the)g(completer)390 -1029 y(routine.)61 b(The)37 b(default)g(v)-5 b(alue)37 +518 y(routine.)61 b(The)37 b(default)g(v)-5 b(alue)37 b(of)h(this)f(v)-5 b(ariable)38 b(is)f(the)g(c)m(haracters)i(whic)m(h)e -(break)g(w)m(ords)f(for)390 1139 y(completion)c(in)e(Bash:)41 -b Fs(")30 b(\\t\\n\\"\\\\'`@$><=;|&{\(")p Ft(.)3371 1322 +(break)g(w)m(ords)f(for)390 628 y(completion)c(in)e(Bash:)41 +b Fs(")30 b(\\t\\n\\"\\\\'`@$><=;|&{\(")p Ft(.)3371 819 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g -(rl_basic_quote_charact)q(ers)390 1431 y Ft(A)30 b(list)i(of)e(quote)h +(rl_basic_quote_charact)q(ers)390 929 y Ft(A)30 b(list)i(of)e(quote)h (c)m(haracters)h(whic)m(h)e(can)h(cause)g(a)f(w)m(ord)g(break.)3371 -1614 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g -(rl_completer_word_brea)q(k_c)q(hara)q(cte)q(rs)390 1724 +1121 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g +(rl_completer_word_brea)q(k_c)q(hara)q(cte)q(rs)390 1230 y Ft(The)64 b(list)i(of)f(c)m(haracters)h(that)g(signal)g(a)f(break)g (b)s(et)m(w)m(een)g(w)m(ords)g(for)f Fs(rl_complete_)390 -1833 y(internal\(\))p Ft(.)38 b(The)30 b(default)g(list)h(is)g(the)f(v) +1340 y(internal\(\))p Ft(.)38 b(The)30 b(default)g(list)h(is)g(the)f(v) -5 b(alue)31 b(of)g Fs(rl_basic_word_break_cha)o(ract)o(ers)p -Ft(.)3371 2016 y([V)-8 b(ariable])-3598 b Fh(rl_cpvfunc_t)56 -b(*)d(rl_completion_word_brea)q(k_ho)q(ok)390 2125 y +Ft(.)3371 1532 y([V)-8 b(ariable])-3598 b Fh(rl_cpvfunc_t)56 +b(*)d(rl_completion_word_brea)q(k_ho)q(ok)390 1641 y Ft(If)31 b(non-zero,)i(this)e(is)h(the)f(address)g(of)g(a)h(function)g (to)g(call)h(when)d(Readline)i(is)g(deciding)f(where)390 -2235 y(to)k(separate)g(w)m(ords)f(for)g(w)m(ord)g(completion.)54 +1751 y(to)k(separate)g(w)m(ords)f(for)g(w)m(ord)g(completion.)54 b(It)34 b(should)f(return)g(a)i(c)m(haracter)h(string)e(lik)m(e)i -Fs(rl_)390 2345 y(completer_word_break_cha)o(ract)o(ers)26 +Fs(rl_)390 1861 y(completer_word_break_cha)o(ract)o(ers)26 b Ft(to)34 b(b)s(e)e(used)g(to)i(p)s(erform)e(the)h(curren)m(t)f -(completion.)390 2454 y(The)24 b(function)h(ma)m(y)g(c)m(ho)s(ose)h(to) +(completion.)390 1970 y(The)24 b(function)h(ma)m(y)g(c)m(ho)s(ose)h(to) f(set)g Fs(rl_completer_word_break_ch)o(arac)o(ter)o(s)19 -b Ft(itself.)39 b(If)25 b(the)390 2564 y(function)30 +b Ft(itself.)39 b(If)25 b(the)390 2080 y(function)30 b(returns)f Fs(NULL)p Ft(,)h Fs(rl_completer_word_break)o(_cha)o(rac)o -(ters)24 b Ft(is)30 b(used.)3371 2746 y([V)-8 b(ariable])-3598 +(ters)24 b Ft(is)30 b(used.)3371 2271 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g(rl_completer_quote_cha)q(rac)q(ters)390 -2856 y Ft(A)34 b(list)g(of)g(c)m(haracters)h(whic)m(h)e(can)h(b)s(e)g +2381 y Ft(A)34 b(list)g(of)g(c)m(haracters)h(whic)m(h)e(can)h(b)s(e)g (used)e(to)j(quote)f(a)g(substring)f(of)h(the)f(line.)51 -b(Completion)390 2966 y(o)s(ccurs)26 b(on)g(the)g(en)m(tire)i +b(Completion)390 2491 y(o)s(ccurs)26 b(on)g(the)g(en)m(tire)i (substring,)e(and)f(within)h(the)g(substring)g Fs -(rl_completer_word_break)o(_)390 3075 y(characters)32 +(rl_completer_word_break)o(_)390 2600 y(characters)32 b Ft(are)k(treated)g(as)f(an)m(y)h(other)f(c)m(haracter,)j(unless)d -(they)g(also)h(app)s(ear)e(within)h(this)390 3185 y(list.)3371 -3367 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g -(rl_filename_quote_char)q(act)q(ers)390 3477 y Ft(A)34 +(they)g(also)h(app)s(ear)e(within)h(this)390 2710 y(list.)3371 +2902 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g +(rl_filename_quote_char)q(act)q(ers)390 3011 y Ft(A)34 b(list)g(of)g(c)m(haracters)h(that)f(cause)h(a)f(\014lename)g(to)g(b)s (e)f(quoted)h(b)m(y)f(the)h(completer)h(when)e(they)390 -3587 y(app)s(ear)d(in)g(a)h(completed)g(\014lename.)41 +3121 y(app)s(ear)d(in)g(a)h(completed)g(\014lename.)41 b(The)30 b(default)g(is)h(the)f(n)m(ull)h(string.)3371 -3769 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g -(rl_special_prefixes)390 3879 y Ft(The)27 b(list)i(of)e(c)m(haracters)j +3313 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g +(rl_special_prefixes)390 3422 y Ft(The)27 b(list)i(of)e(c)m(haracters)j (that)e(are)g(w)m(ord)f(break)h(c)m(haracters,)i(but)d(should)f(b)s(e)h -(left)i(in)e Fj(text)k Ft(when)390 3988 y(it)25 b(is)g(passed)f(to)h +(left)i(in)e Fj(text)k Ft(when)390 3532 y(it)25 b(is)g(passed)f(to)h (the)g(completion)h(function.)38 b(Programs)25 b(can)g(use)f(this)h(to) -g(help)f(determine)h(what)390 4098 y(kind)i(of)h(completing)h(to)f(do.) +g(help)f(determine)h(what)390 3641 y(kind)i(of)h(completing)h(to)f(do.) 40 b(F)-8 b(or)29 b(instance,)g(Bash)f(sets)g(this)g(v)-5 b(ariable)28 b(to)h Fs(")p Ft($@)p Fs(")e Ft(so)h(that)g(it)h(can)390 -4208 y(complete)j(shell)e(v)-5 b(ariables)31 b(and)f(hostnames.)3371 -4390 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_query_i)q -(tems)390 4500 y Ft(Up)36 b(to)h(this)f(man)m(y)g(items)h(will)f(b)s(e) +3751 y(complete)j(shell)e(v)-5 b(ariables)31 b(and)f(hostnames.)3371 +3943 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_query_i)q +(tems)390 4052 y Ft(Up)36 b(to)h(this)f(man)m(y)g(items)h(will)f(b)s(e) g(displa)m(y)m(ed)h(in)e(resp)s(onse)h(to)h(a)f(p)s -(ossible-completions)h(call.)390 4609 y(After)28 b(that,)h(readline)f -(asks)g(the)g(user)f(if)h(she)f(is)h(sure)f(she)h(w)m(an)m(ts)g(to)h -(see)f(them)g(all.)40 b(The)28 b(default)390 4719 y(v)-5 -b(alue)31 b(is)f(100.)42 b(A)31 b(negativ)m(e)h(v)-5 -b(alue)31 b(indicates)g(that)g(Readline)g(should)f(nev)m(er)h(ask)f -(the)h(user.)3371 4902 y([V)-8 b(ariable])-3598 b Fh(int)53 -b(rl_completion_append_)q(char)q(act)q(er)390 5011 y -Ft(When)33 b(a)h(single)f(completion)i(alternativ)m(e)h(matc)m(hes)e -(at)g(the)f(end)g(of)g(the)h(command)f(line,)h(this)390 -5121 y(c)m(haracter)23 b(is)e(app)s(ended)f(to)i(the)g(inserted)f +(ossible-completions)h(call.)390 4162 y(After)44 b(that,)49 +b(Readline)c(asks)f(the)h(user)e(for)h(con\014rmation)h(b)s(efore)e +(displa)m(ying)i(them.)82 b(The)390 4271 y(default)36 +b(v)-5 b(alue)37 b(is)f(100.)58 b(A)36 b(negativ)m(e)i(v)-5 +b(alue)37 b(indicates)g(that)f(Readline)h(should)e(nev)m(er)h(ask)g +(for)390 4381 y(con\014rmation.)3371 4573 y([V)-8 b(ariable])-3598 +b Fh(int)53 b(rl_completion_append_)q(char)q(act)q(er)390 +4682 y Ft(When)33 b(a)h(single)f(completion)i(alternativ)m(e)h(matc)m +(hes)e(at)g(the)f(end)g(of)g(the)h(command)f(line,)h(this)390 +4792 y(c)m(haracter)23 b(is)e(app)s(ended)f(to)i(the)g(inserted)f (completion)i(text.)39 b(The)20 b(default)i(is)g(a)f(space)h(c)m -(haracter)390 5230 y(\(`)31 b('\).)40 b(Setting)27 b(this)g(to)g(the)g +(haracter)390 4902 y(\(`)31 b('\).)40 b(Setting)27 b(this)g(to)g(the)g (n)m(ull)f(c)m(haracter)j(\(`)p Fs(\\0)p Ft('\))e(prev)m(en)m(ts)g(an)m -(ything)g(b)s(eing)f(app)s(ended)f(auto-)390 5340 y(matically)-8 +(ything)g(b)s(eing)f(app)s(ended)f(auto-)390 5011 y(matically)-8 b(.)41 b(This)22 b(can)i(b)s(e)f(c)m(hanged)h(in)f(application-sp)s -(eci\014c)h(completion)h(functions)e(to)h(pro)m(vide)p -eop end -%%Page: 57 61 -TeXDict begin 57 60 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(57)390 -299 y(the)21 b(\\most)i(sensible)e(w)m(ord)g(separator)h(c)m(haracter") -h(according)f(to)g(an)f(application-sp)s(eci\014c)i(com-)390 -408 y(mand)28 b(line)i(syn)m(tax)f(sp)s(eci\014cation.)42 +(eci\014c)h(completion)h(functions)e(to)h(pro)m(vide)390 +5121 y(the)d(\\most)i(sensible)e(w)m(ord)g(separator)h(c)m(haracter")h +(according)f(to)g(an)f(application-sp)s(eci\014c)i(com-)390 +5230 y(mand)28 b(line)i(syn)m(tax)f(sp)s(eci\014cation.)42 b(It)29 b(is)g(set)h(to)g(the)f(default)g(b)s(efore)g(an)m(y)g -(application-sp)s(eci\014c)390 518 y(completion)j(function)e(is)g -(called,)i(and)e(ma)m(y)h(only)f(b)s(e)g(c)m(hanged)h(within)f(suc)m(h) -g(a)h(function.)3371 682 y([V)-8 b(ariable])-3598 b Fh(int)53 -b(rl_completion_suppres)q(s_ap)q(pen)q(d)390 792 y Ft(If)33 -b(non-zero,)i Fj(rl)p 949 792 28 4 v 39 w(completion)p -1421 792 V 42 w(app)s(end)p 1755 792 V 38 w(c)m(haracter)42 -b Ft(is)33 b(not)g(app)s(ended)f(to)i(matc)m(hes)g(at)g(the)g(end)390 -902 y(of)28 b(the)f(command)h(line,)h(as)e(describ)s(ed)g(ab)s(o)m(v)m -(e.)41 b(It)27 b(is)h(set)g(to)g(0)g(b)s(efore)g(an)m(y)f -(application-sp)s(eci\014c)390 1011 y(completion)32 b(function)e(is)g +(application-sp)s(eci\014c)390 5340 y(completion)j(function)e(is)g (called,)i(and)e(ma)m(y)h(only)f(b)s(e)g(c)m(hanged)h(within)f(suc)m(h) -g(a)h(function.)3371 1176 y([V)-8 b(ariable])-3598 b -Fh(int)53 b(rl_completion_quote_c)q(hara)q(cte)q(r)390 -1285 y Ft(When)36 b(Readline)h(is)f(completing)h(quoted)g(text,)h(as)f -(delimited)g(b)m(y)f(one)g(of)g(the)h(c)m(haracters)g(in)390 -1395 y Fj(rl)p 457 1395 V 40 w(completer)p 885 1395 V -41 w(quote)p 1145 1395 V 41 w(c)m(haracters)p Ft(,)43 -b(it)c(sets)g(this)g(v)-5 b(ariable)40 b(to)g(the)f(quoting)g(c)m -(haracter)i(found.)390 1504 y(This)30 b(is)g(set)h(b)s(efore)f(an)m(y)h -(application-sp)s(eci\014c)g(completion)h(function)e(is)h(called.)3371 -1669 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_suppres)q -(s_qu)q(ote)390 1778 y Ft(If)32 b(non-zero,)h(Readline)g(do)s(es)f(not) -h(app)s(end)d(a)j(matc)m(hing)g(quote)g(c)m(haracter)h(when)d(p)s -(erforming)390 1888 y(completion)25 b(on)e(a)h(quoted)g(string.)38 +g(a)h(function.)p eop end +%%Page: 59 63 +TeXDict begin 59 62 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(59)3371 +299 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_suppres)q +(s_ap)q(pen)q(d)390 408 y Ft(If)33 b(non-zero,)i Fj(rl)p +949 408 28 4 v 39 w(completion)p 1421 408 V 42 w(app)s(end)p +1755 408 V 38 w(c)m(haracter)42 b Ft(is)33 b(not)g(app)s(ended)f(to)i +(matc)m(hes)g(at)g(the)g(end)390 518 y(of)28 b(the)f(command)h(line,)h +(as)e(describ)s(ed)g(ab)s(o)m(v)m(e.)41 b(It)27 b(is)h(set)g(to)g(0)g +(b)s(efore)g(an)m(y)f(application-sp)s(eci\014c)390 628 +y(completion)32 b(function)e(is)g(called,)i(and)e(ma)m(y)h(only)f(b)s +(e)g(c)m(hanged)h(within)f(suc)m(h)g(a)h(function.)3371 +847 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_quote_c)q +(hara)q(cte)q(r)390 956 y Ft(When)36 b(Readline)h(is)f(completing)h +(quoted)g(text,)h(as)f(delimited)g(b)m(y)f(one)g(of)g(the)h(c)m +(haracters)g(in)390 1066 y Fj(rl)p 457 1066 V 40 w(completer)p +885 1066 V 41 w(quote)p 1145 1066 V 41 w(c)m(haracters)p +Ft(,)43 b(it)c(sets)g(this)g(v)-5 b(ariable)40 b(to)g(the)f(quoting)g +(c)m(haracter)i(found.)390 1176 y(This)30 b(is)g(set)h(b)s(efore)f(an)m +(y)h(application-sp)s(eci\014c)g(completion)h(function)e(is)h(called.) +3371 1395 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_suppres) +q(s_qu)q(ote)390 1504 y Ft(If)32 b(non-zero,)h(Readline)g(do)s(es)f +(not)h(app)s(end)d(a)j(matc)m(hing)g(quote)g(c)m(haracter)h(when)d(p)s +(erforming)390 1614 y(completion)25 b(on)e(a)h(quoted)g(string.)38 b(It)24 b(is)f(set)h(to)h(0)f(b)s(efore)f(an)m(y)h(application-sp)s -(eci\014c)h(completion)390 1998 y(function)30 b(is)g(called,)i(and)e +(eci\014c)h(completion)390 1724 y(function)30 b(is)g(called,)i(and)e (ma)m(y)h(only)g(b)s(e)e(c)m(hanged)i(within)f(suc)m(h)g(a)h(function.) -3371 2162 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_found_q) -q(uote)390 2271 y Ft(When)31 b(Readline)i(is)e(completing)i(quoted)f +3371 1943 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_found_q) +q(uote)390 2052 y Ft(When)31 b(Readline)i(is)e(completing)i(quoted)f (text,)h(it)f(sets)g(this)g(v)-5 b(ariable)32 b(to)h(a)f(non-zero)g(v) --5 b(alue)32 b(if)390 2381 y(the)21 b(w)m(ord)g(b)s(eing)g(completed)h +-5 b(alue)32 b(if)390 2162 y(the)21 b(w)m(ord)g(b)s(eing)g(completed)h (con)m(tains)g(or)f(is)g(delimited)h(b)m(y)f(an)m(y)g(quoting)h(c)m -(haracters,)i(including)390 2491 y(bac)m(kslashes.)42 +(haracters,)i(including)390 2271 y(bac)m(kslashes.)42 b(This)29 b(is)i(set)g(b)s(efore)f(an)m(y)g(application-sp)s(eci\014c)i -(completion)g(function)e(is)g(called.)3371 2655 y([V)-8 +(completion)g(function)e(is)g(called.)3371 2491 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_mark_sy)q(mlin)q(k_d)q -(irs)390 2765 y Ft(If)31 b(non-zero,)i(a)f(slash)g(will)g(b)s(e)f(app)s +(irs)390 2600 y Ft(If)31 b(non-zero,)i(a)f(slash)g(will)g(b)s(e)f(app)s (ended)f(to)j(completed)g(\014lenames)e(that)i(are)f(sym)m(b)s(olic)g -(links)390 2874 y(to)25 b(directory)g(names,)g(sub)5 +(links)390 2710 y(to)25 b(directory)g(names,)g(sub)5 b(ject)24 b(to)h(the)f(v)-5 b(alue)25 b(of)f(the)h(user-settable)g -Fj(mark-directories)k Ft(v)-5 b(ariable.)390 2984 y(This)27 +Fj(mark-directories)k Ft(v)-5 b(ariable.)390 2819 y(This)27 b(v)-5 b(ariable)28 b(exists)g(so)f(that)h(application-sp)s(eci\014c)h (completion)g(functions)e(can)g(o)m(v)m(erride)i(the)390 -3093 y(user's)42 b(global)h(preference)g(\(set)g(via)g(the)f +2929 y(user's)42 b(global)h(preference)g(\(set)g(via)g(the)f Fj(mark-symlink)m(ed-directories)48 b Ft(Readline)43 -b(v)-5 b(ariable\))390 3203 y(if)38 b(appropriate.)62 +b(v)-5 b(ariable\))390 3039 y(if)38 b(appropriate.)62 b(This)37 b(v)-5 b(ariable)38 b(is)g(set)g(to)g(the)g(user's)f -(preference)g(b)s(efore)g(an)m(y)h(application-)390 3313 +(preference)g(b)s(efore)g(an)m(y)h(application-)390 3148 y(sp)s(eci\014c)31 b(completion)i(function)f(is)f(called,)j(so)e (unless)f(that)h(function)f(mo)s(di\014es)g(the)h(v)-5 -b(alue,)33 b(the)390 3422 y(user's)d(preferences)g(are)h(honored.)3371 -3587 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_ignore_completion_)q -(dupl)q(ica)q(tes)390 3696 y Ft(If)30 b(non-zero,)h(then)f(duplicates)h +b(alue,)33 b(the)390 3258 y(user's)d(preferences)g(are)h(honored.)3371 +3477 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_ignore_completion_)q +(dupl)q(ica)q(tes)390 3587 y Ft(If)30 b(non-zero,)h(then)f(duplicates)h (in)f(the)h(matc)m(hes)g(are)g(remo)m(v)m(ed.)42 b(The)29 -b(default)i(is)f(1.)3371 3861 y([V)-8 b(ariable])-3598 +b(default)i(is)f(1.)3371 3806 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_filename_completio)q(n_de)q(sir)q(ed)390 -3970 y Ft(Non-zero)33 b(means)f(that)g(the)g(results)f(of)h(the)g(matc) +3915 y Ft(Non-zero)33 b(means)f(that)g(the)g(results)f(of)h(the)g(matc) m(hes)h(are)f(to)h(b)s(e)e(treated)i(as)f(\014lenames.)45 -b(This)390 4080 y(is)40 b Fk(always)49 b Ft(zero)41 b(when)e +b(This)390 4025 y(is)40 b Fk(always)49 b Ft(zero)41 b(when)e (completion)i(is)f(attempted,)j(and)d(can)g(only)g(b)s(e)f(c)m(hanged)i -(within)e(an)390 4189 y(application-sp)s(eci\014c)i(completion)g +(within)e(an)390 4134 y(application-sp)s(eci\014c)i(completion)g (function.)67 b(If)39 b(it)h(is)f(set)h(to)h(a)e(non-zero)h(v)-5 -b(alue)40 b(b)m(y)f(suc)m(h)h(a)390 4299 y(function,)24 +b(alue)40 b(b)m(y)f(suc)m(h)h(a)390 4244 y(function,)24 b(directory)f(names)f(ha)m(v)m(e)h(a)g(slash)f(app)s(ended)e(and)i -(Readline)h(attempts)g(to)g(quote)g(com-)390 4408 y(pleted)35 +(Readline)h(attempts)g(to)g(quote)g(com-)390 4354 y(pleted)35 b(\014lenames)g(if)g(they)h(con)m(tain)g(an)m(y)f(c)m(haracters)i(in)e -Fs(rl_filename_quote_chara)o(cter)o(s)390 4518 y Ft(and)30 +Fs(rl_filename_quote_chara)o(cter)o(s)390 4463 y Ft(and)30 b Fs(rl_filename_quoting_des)o(ired)24 b Ft(is)30 b(set)h(to)g(a)g (non-zero)g(v)-5 b(alue.)3371 4682 y([V)d(ariable])-3598 b Fh(int)53 b(rl_filename_quoting_d)q(esir)q(ed)390 4792 @@ -10820,9 +10980,9 @@ b(when)f(comple-)390 5121 y(tion)h(is)g(attempted,)h(and)e(can)h(only)g (e\013ected)i(via)e(a)h(call)g(to)g(the)f(function)g(p)s(oin)m(ted)g (to)g(b)m(y)g Fs(rl_filename_)390 5340 y(quoting_function)p Ft(.)p eop end -%%Page: 58 62 -TeXDict begin 58 61 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(58)3371 +%%Page: 60 64 +TeXDict begin 60 63 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(60)3371 299 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_attempted_completi)q (on_o)q(ver)390 408 y Ft(If)93 b(an)h(application-sp)s(eci\014c)i (completion)f(function)f(assigned)g(to)h Fs(rl_attempted_)390 @@ -10848,7 +11008,7 @@ b(rl_completion_type)390 1654 y Ft(Set)35 b(to)h(a)f(c)m(haracter)i (describing)e(the)g(t)m(yp)s(e)g(of)g(completion)i(Readline)e(is)g (curren)m(tly)h(attempt-)390 1763 y(ing;)f(see)f(the)g(description)f (of)g Fs(rl_complete_internal\(\))28 b Ft(\(see)34 b(Section)g(2.6.2)h -([Completion)390 1873 y(F)-8 b(unctions],)39 b(page)f(52\))f(for)g(the) +([Completion)390 1873 y(F)-8 b(unctions],)39 b(page)f(54\))f(for)g(the) g(list)g(of)g(c)m(haracters.)61 b(This)36 b(is)g(set)i(to)f(the)g (appropriate)f(v)-5 b(alue)390 1983 y(b)s(efore)31 b(an)m(y)h (application-sp)s(eci\014c)h(completion)g(function)f(is)f(called,)j @@ -10874,9 +11034,9 @@ b(is)f(a)g(small)h(application)g(demonstrating)f(the)h(use)e(of)i(the)f 150 3574 y(pro)m(vides)26 b(completion)i(of)e(command)g(names,)h(line)f (editing)h(features,)h(and)d(access)j(to)f(the)f(history)g(list.)p eop end -%%Page: 59 63 -TeXDict begin 59 62 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(59)390 +%%Page: 61 65 +TeXDict begin 61 64 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(61)390 299 y Fe(/*)40 b(fileman.c)h(--)f(A)f(tiny)h(application)i(which)e (demonstrates)i(how)e(to)g(use)g(the)508 386 y(GNU)g(Readline)h (library.)80 b(This)40 b(application)i(interactively)g(allows)f(users) @@ -10888,275 +11048,280 @@ b()390 1258 y(#endif)390 1345 y(#include)h()390 1519 y(#ifdef)g(HAVE_UNISTD_H)390 1606 y(#)79 b(include)40 b()390 1694 y(#endif)390 1868 y(#include)h()390 1955 y(#include)g()390 2042 y(#include)g()390 -2217 y(#if)f(defined)h(\(HAVE_STRING_H\))390 2304 y(#)79 -b(include)40 b()390 2391 y(#else)g(/*)g(!HAVE_STRING_H)i(*/) -390 2478 y(#)79 b(include)40 b()390 2565 y(#endif)h(/*)e -(!HAVE_STRING_H)k(*/)390 2740 y(#ifdef)e(HAVE_STDLIB_H)390 -2827 y(#)79 b(include)40 b()390 2914 y(#endif)390 -3088 y(#include)h()390 3263 y(#include)g() -390 3350 y(#include)g()390 3524 y(extern)g(char)f -(*xmalloc)h(PARAMS\(\(size_t\)\);)390 3699 y(/*)f(The)g(names)g(of)g +2130 y(#include)g()390 2304 y(#if)f(defined)h +(\(HAVE_STRING_H\))390 2391 y(#)79 b(include)40 b()390 +2478 y(#else)g(/*)g(!HAVE_STRING_H)i(*/)390 2565 y(#)79 +b(include)40 b()390 2653 y(#endif)h(/*)e(!HAVE_STRING_H)k +(*/)390 2827 y(#ifdef)e(HAVE_STDLIB_H)390 2914 y(#)79 +b(include)40 b()390 3001 y(#endif)390 3176 +y(#include)h()390 3350 y(#include)g()390 +3437 y(#include)g()390 3611 y(extern)g(char)f +(*xmalloc)h(PARAMS\(\(size_t\)\);)390 3786 y(/*)f(The)g(names)g(of)g (functions)h(that)f(actually)h(do)f(the)g(manipulation.)i(*/)390 -3786 y(int)e(com_list)h(PARAMS\(\(char)h(*\)\);)390 3873 -y(int)e(com_view)h(PARAMS\(\(char)h(*\)\);)390 3960 y(int)e(com_rename) -h(PARAMS\(\(char)h(*\)\);)390 4047 y(int)e(com_stat)h(PARAMS\(\(char)h -(*\)\);)390 4134 y(int)e(com_pwd)h(PARAMS\(\(char)h(*\)\);)390 -4222 y(int)e(com_delete)h(PARAMS\(\(char)h(*\)\);)390 -4309 y(int)e(com_help)h(PARAMS\(\(char)h(*\)\);)390 4396 -y(int)e(com_cd)g(PARAMS\(\(char)i(*\)\);)390 4483 y(int)e(com_quit)h -(PARAMS\(\(char)h(*\)\);)390 4658 y(/*)e(A)f(structure)i(which)g +3873 y(int)e(com_list)h(PARAMS\(\(char)h(*\)\);)390 3960 +y(int)e(com_view)h(PARAMS\(\(char)h(*\)\);)390 4047 y(int)e(com_rename) +h(PARAMS\(\(char)h(*\)\);)390 4134 y(int)e(com_stat)h(PARAMS\(\(char)h +(*\)\);)390 4222 y(int)e(com_pwd)h(PARAMS\(\(char)h(*\)\);)390 +4309 y(int)e(com_delete)h(PARAMS\(\(char)h(*\)\);)390 +4396 y(int)e(com_help)h(PARAMS\(\(char)h(*\)\);)390 4483 +y(int)e(com_cd)g(PARAMS\(\(char)i(*\)\);)390 4570 y(int)e(com_quit)h +(PARAMS\(\(char)h(*\)\);)390 4745 y(/*)e(A)f(structure)i(which)g (contains)g(information)h(on)d(the)h(commands)h(this)f(program)508 -4745 y(can)g(understand.)h(*/)390 4919 y(typedef)g(struct)f({)468 -5006 y(char)h(*name;)f(/*)g(User)g(printable)h(name)f(of)g(the)g -(function.)h(*/)468 5093 y(rl_icpfunc_t)h(*func;)f(/*)f(Function)h(to)e -(call)i(to)e(do)h(the)g(job.)g(*/)468 5181 y(char)h(*doc;)f(/*)g -(Documentation)i(for)e(this)g(function.)80 b(*/)390 5268 -y(})39 b(COMMAND;)p eop end -%%Page: 60 64 -TeXDict begin 60 63 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(60)390 -386 y Fe(COMMAND)41 b(commands[])g(=)f({)468 473 y({)g("cd",)g(com_cd,) -h("Change)g(to)f(directory)h(DIR")f(},)468 560 y({)g("delete",)h -(com_delete,)h("Delete)f(FILE")f(},)468 648 y({)g("help",)h(com_help,)g -("Display)g(this)f(text")h(},)468 735 y({)f("?",)g(com_help,)h -("Synonym)g(for)f(`help'")h(},)468 822 y({)f("list",)h(com_list,)g -("List)f(files)h(in)e(DIR")i(},)468 909 y({)f("ls",)g(com_list,)i -("Synonym)f(for)f(`list'")g(},)468 996 y({)g("pwd",)g(com_pwd,)i -("Print)e(the)g(current)h(working)g(directory")g(},)468 -1083 y({)f("quit",)h(com_quit,)g("Quit)f(using)h(Fileman")g(},)468 -1171 y({)f("rename",)h(com_rename,)h("Rename)f(FILE)f(to)g(NEWNAME")h -(},)468 1258 y({)f("stat",)h(com_stat,)g("Print)g(out)f(statistics)h -(on)f(FILE")g(},)468 1345 y({)g("view",)h(com_view,)g("View)f(the)g -(contents)h(of)f(FILE")g(},)468 1432 y({)g(\(char)g(*\)NULL,)h -(\(rl_icpfunc_t)h(*\)NULL,)f(\(char)f(*\)NULL)h(})390 -1519 y(};)390 1694 y(/*)f(Forward)g(declarations.)j(*/)390 -1781 y(char)d(*stripwhite)i(\(\);)390 1868 y(COMMAND)f(*find_command)h -(\(\);)390 2042 y(/*)e(The)g(name)g(of)f(this)i(program,)g(as)e(taken)i -(from)f(argv[0].)h(*/)390 2130 y(char)f(*progname;)390 -2304 y(/*)g(When)g(non-zero,)h(this)f(global)h(means)f(the)g(user)g(is) -g(done)g(using)g(this)h(program.)g(*/)390 2391 y(int)f(done;)390 -2565 y(char)g(*)390 2653 y(dupstr)h(\(s\))586 2740 y(char)f(*s;)390 -2827 y({)468 2914 y(char)h(*r;)468 3088 y(r)f(=)f(xmalloc)i(\(strlen)g -(\(s\))f(+)f(1\);)468 3176 y(strcpy)i(\(r,)f(s\);)468 -3263 y(return)h(\(r\);)390 3350 y(})390 3524 y(main)f(\(argc,)h(argv\)) -586 3611 y(int)f(argc;)586 3699 y(char)g(**argv;)390 -3786 y({)468 3873 y(char)h(*line,)f(*s;)468 4047 y(progname)h(=)f -(argv[0];)468 4222 y(initialize_readline)k(\(\);)c(/*)g(Bind)g(our)g -(completer.)h(*/)468 4396 y(/*)f(Loop)g(reading)h(and)f(executing)h -(lines)g(until)f(the)g(user)g(quits.)h(*/)468 4483 y(for)f(\()g(;)f -(done)h(==)g(0;)g(\))547 4570 y({)625 4658 y(line)g(=)g(readline)h -(\("FileMan:)h("\);)625 4832 y(if)e(\(!line\))704 4919 -y(break;)625 5093 y(/*)g(Remove)h(leading)f(and)g(trailing)h -(whitespace)h(from)e(the)g(line.)743 5181 y(Then,)g(if)g(there)g(is)g -(anything)h(left,)g(add)e(it)h(to)g(the)g(history)h(list)743 -5268 y(and)f(execute)h(it.)f(*/)p eop end -%%Page: 61 65 -TeXDict begin 61 64 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(61)625 -299 y Fe(s)40 b(=)f(stripwhite)j(\(line\);)625 473 y(if)e(\(*s\))704 -560 y({)782 648 y(add_history)i(\(s\);)782 735 y(execute_line)g(\(s\);) -704 822 y(})625 996 y(free)e(\(line\);)547 1083 y(})468 -1171 y(exit)h(\(0\);)390 1258 y(})390 1432 y(/*)f(Execute)g(a)g -(command)h(line.)f(*/)390 1519 y(int)390 1606 y(execute_line)i -(\(line\))586 1694 y(char)e(*line;)390 1781 y({)468 1868 -y(register)h(int)f(i;)468 1955 y(COMMAND)h(*command;)468 -2042 y(char)g(*word;)468 2217 y(/*)f(Isolate)h(the)f(command)h(word.)f -(*/)468 2304 y(i)g(=)f(0;)468 2391 y(while)i(\(line[i])g(&&)f -(whitespace)h(\(line[i]\)\))547 2478 y(i++;)468 2565 -y(word)g(=)e(line)h(+)g(i;)468 2740 y(while)h(\(line[i])g(&&)f -(!whitespace)h(\(line[i]\)\))547 2827 y(i++;)468 3001 -y(if)f(\(line[i]\))547 3088 y(line[i++])h(=)f('\\0';)468 -3263 y(command)h(=)f(find_command)i(\(word\);)468 3437 -y(if)e(\(!command\))547 3524 y({)625 3611 y(fprintf)h(\(stderr,)g -("\045s:)f(No)g(such)g(command)h(for)f(FileMan.\\n",)i(word\);)625 -3699 y(return)f(\(-1\);)547 3786 y(})468 3960 y(/*)f(Get)g(argument)h -(to)f(command,)h(if)f(any.)g(*/)468 4047 y(while)h(\(whitespace)h -(\(line[i]\)\))547 4134 y(i++;)468 4309 y(word)f(=)e(line)h(+)g(i;)468 -4483 y(/*)g(Call)g(the)g(function.)h(*/)468 4570 y(return)g -(\(\(*\(command->func\)\))j(\(word\)\);)390 4658 y(})390 -4832 y(/*)c(Look)g(up)f(NAME)i(as)e(the)h(name)g(of)g(a)g(command,)h -(and)e(return)i(a)f(pointer)g(to)g(that)508 4919 y(command.)80 -b(Return)41 b(a)e(NULL)h(pointer)h(if)f(NAME)g(isn't)g(a)g(command)g -(name.)h(*/)390 5006 y(COMMAND)g(*)390 5093 y(find_command)h(\(name\)) -586 5181 y(char)e(*name;)390 5268 y({)p eop end +4832 y(can)g(understand.)h(*/)390 5006 y(typedef)g(struct)f({)468 +5093 y(char)h(*name;)f(/*)g(User)g(printable)h(name)f(of)g(the)g +(function.)h(*/)468 5181 y(rl_icpfunc_t)h(*func;)f(/*)f(Function)h(to)e +(call)i(to)e(do)h(the)g(job.)g(*/)468 5268 y(char)h(*doc;)f(/*)g +(Documentation)i(for)e(this)g(function.)80 b(*/)p eop +end %%Page: 62 66 TeXDict begin 62 65 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(62)468 -299 y Fe(register)41 b(int)f(i;)468 473 y(for)g(\(i)g(=)f(0;)h -(commands[i].name;)j(i++\))547 560 y(if)d(\(strcmp)g(\(name,)h -(commands[i].name\))i(==)d(0\))625 648 y(return)h(\(&commands[i]\);)468 -822 y(return)g(\(\(COMMAND)g(*\)NULL\);)390 909 y(})390 -1083 y(/*)f(Strip)g(whitespace)i(from)e(the)g(start)g(and)g(end)g(of)f -(STRING.)81 b(Return)40 b(a)g(pointer)508 1171 y(into)g(STRING.)h(*/) -390 1258 y(char)f(*)390 1345 y(stripwhite)h(\(string\))586 -1432 y(char)f(*string;)390 1519 y({)468 1606 y(register)h(char)g(*s,)f -(*t;)468 1781 y(for)g(\(s)g(=)f(string;)i(whitespace)h(\(*s\);)e(s++\)) -547 1868 y(;)468 2042 y(if)g(\(*s)g(==)g(0\))547 2130 -y(return)g(\(s\);)468 2304 y(t)g(=)f(s)h(+)f(strlen)i(\(s\))f(-)f(1;) -468 2391 y(while)i(\(t)e(>)h(s)f(&&)h(whitespace)i(\(*t\)\))547 -2478 y(t--;)468 2565 y(*++t)f(=)e('\\0';)468 2740 y(return)i(s;)390 -2827 y(})390 3001 y(/*)f(******************************)q(*****)q(****) +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(62)390 +299 y Fe(})39 b(COMMAND;)390 473 y(COMMAND)i(commands[])g(=)f({)468 +560 y({)g("cd",)g(com_cd,)h("Change)g(to)f(directory)h(DIR")f(},)468 +648 y({)g("delete",)h(com_delete,)h("Delete)f(FILE")f(},)468 +735 y({)g("help",)h(com_help,)g("Display)g(this)f(text")h(},)468 +822 y({)f("?",)g(com_help,)h("Synonym)g(for)f(`help'")h(},)468 +909 y({)f("list",)h(com_list,)g("List)f(files)h(in)e(DIR")i(},)468 +996 y({)f("ls",)g(com_list,)i("Synonym)f(for)f(`list'")g(},)468 +1083 y({)g("pwd",)g(com_pwd,)i("Print)e(the)g(current)h(working)g +(directory")g(},)468 1171 y({)f("quit",)h(com_quit,)g("Quit)f(using)h +(Fileman")g(},)468 1258 y({)f("rename",)h(com_rename,)h("Rename)f(FILE) +f(to)g(NEWNAME")h(},)468 1345 y({)f("stat",)h(com_stat,)g("Print)g(out) +f(statistics)h(on)f(FILE")g(},)468 1432 y({)g("view",)h(com_view,)g +("View)f(the)g(contents)h(of)f(FILE")g(},)468 1519 y({)g(\(char)g +(*\)NULL,)h(\(rl_icpfunc_t)h(*\)NULL,)f(\(char)f(*\)NULL)h(})390 +1606 y(};)390 1781 y(/*)f(Forward)g(declarations.)j(*/)390 +1868 y(char)d(*stripwhite)i(\(\);)390 1955 y(COMMAND)f(*find_command)h +(\(\);)390 2130 y(/*)e(The)g(name)g(of)f(this)i(program,)g(as)e(taken)i +(from)f(argv[0].)h(*/)390 2217 y(char)f(*progname;)390 +2391 y(/*)g(When)g(non-zero,)h(this)f(global)h(means)f(the)g(user)g(is) +g(done)g(using)g(this)h(program.)g(*/)390 2478 y(int)f(done;)390 +2653 y(char)g(*)390 2740 y(dupstr)h(\(s\))586 2827 y(char)f(*s;)390 +2914 y({)468 3001 y(char)h(*r;)468 3176 y(r)f(=)f(xmalloc)i(\(strlen)g +(\(s\))f(+)f(1\);)468 3263 y(strcpy)i(\(r,)f(s\);)468 +3350 y(return)h(\(r\);)390 3437 y(})390 3611 y(main)f(\(argc,)h(argv\)) +586 3699 y(int)f(argc;)586 3786 y(char)g(**argv;)390 +3873 y({)468 3960 y(char)h(*line,)f(*s;)468 4134 y(setlocale)i +(\(LC_ALL,)f(""\);)468 4309 y(progname)g(=)f(argv[0];)468 +4483 y(initialize_readline)k(\(\);)c(/*)g(Bind)g(our)g(completer.)h(*/) +468 4658 y(/*)f(Loop)g(reading)h(and)f(executing)h(lines)g(until)f(the) +g(user)g(quits.)h(*/)468 4745 y(for)f(\()g(;)f(done)h(==)g(0;)g(\))547 +4832 y({)625 4919 y(line)g(=)g(readline)h(\("FileMan:)h("\);)625 +5093 y(if)e(\(!line\))704 5181 y(break;)p eop end +%%Page: 63 67 +TeXDict begin 63 66 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(63)625 +299 y Fe(/*)40 b(Remove)h(leading)f(and)g(trailing)h(whitespace)h(from) +e(the)g(line.)743 386 y(Then,)g(if)g(there)g(is)g(anything)h(left,)g +(add)e(it)h(to)g(the)g(history)h(list)743 473 y(and)f(execute)h(it.)f +(*/)625 560 y(s)g(=)f(stripwhite)j(\(line\);)625 735 +y(if)e(\(*s\))704 822 y({)782 909 y(add_history)i(\(s\);)782 +996 y(execute_line)g(\(s\);)704 1083 y(})625 1258 y(free)e(\(line\);) +547 1345 y(})468 1432 y(exit)h(\(0\);)390 1519 y(})390 +1694 y(/*)f(Execute)g(a)g(command)h(line.)f(*/)390 1781 +y(int)390 1868 y(execute_line)i(\(line\))586 1955 y(char)e(*line;)390 +2042 y({)468 2130 y(register)h(int)f(i;)468 2217 y(COMMAND)h(*command;) +468 2304 y(char)g(*word;)468 2478 y(/*)f(Isolate)h(the)f(command)h +(word.)f(*/)468 2565 y(i)g(=)f(0;)468 2653 y(while)i(\(line[i])g(&&)f +(whitespace)h(\(line[i]\)\))547 2740 y(i++;)468 2827 +y(word)g(=)e(line)h(+)g(i;)468 3001 y(while)h(\(line[i])g(&&)f +(!whitespace)h(\(line[i]\)\))547 3088 y(i++;)468 3263 +y(if)f(\(line[i]\))547 3350 y(line[i++])h(=)f('\\0';)468 +3524 y(command)h(=)f(find_command)i(\(word\);)468 3699 +y(if)e(\(!command\))547 3786 y({)625 3873 y(fprintf)h(\(stderr,)g +("\045s:)f(No)g(such)g(command)h(for)f(FileMan.\\n",)i(word\);)625 +3960 y(return)f(\(-1\);)547 4047 y(})468 4222 y(/*)f(Get)g(argument)h +(to)f(command,)h(if)f(any.)g(*/)468 4309 y(while)h(\(whitespace)h +(\(line[i]\)\))547 4396 y(i++;)468 4570 y(word)f(=)e(line)h(+)g(i;)468 +4745 y(/*)g(Call)g(the)g(function.)h(*/)468 4832 y(return)g +(\(\(*\(command->func\)\))j(\(word\)\);)390 4919 y(})390 +5093 y(/*)c(Look)g(up)f(NAME)i(as)e(the)h(name)g(of)g(a)g(command,)h +(and)e(return)i(a)f(pointer)g(to)g(that)508 5181 y(command.)80 +b(Return)41 b(a)e(NULL)h(pointer)h(if)f(NAME)g(isn't)g(a)g(command)g +(name.)h(*/)390 5268 y(COMMAND)g(*)p eop end +%%Page: 64 68 +TeXDict begin 64 67 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(64)390 +299 y Fe(find_command)42 b(\(name\))586 386 y(char)e(*name;)390 +473 y({)468 560 y(register)h(int)f(i;)468 735 y(for)g(\(i)g(=)f(0;)h +(commands[i].name;)j(i++\))547 822 y(if)d(\(strcmp)g(\(name,)h +(commands[i].name\))i(==)d(0\))625 909 y(return)h(\(&commands[i]\);)468 +1083 y(return)g(\(\(COMMAND)g(*\)NULL\);)390 1171 y(})390 +1345 y(/*)f(Strip)g(whitespace)i(from)e(the)g(start)g(and)g(end)g(of)f +(STRING.)81 b(Return)40 b(a)g(pointer)508 1432 y(into)g(STRING.)h(*/) +390 1519 y(char)f(*)390 1606 y(stripwhite)h(\(string\))586 +1694 y(char)f(*string;)390 1781 y({)468 1868 y(register)h(char)g(*s,)f +(*t;)468 2042 y(for)g(\(s)g(=)f(string;)i(whitespace)h(\(*s\);)e(s++\)) +547 2130 y(;)468 2304 y(if)g(\(*s)g(==)g(0\))547 2391 +y(return)g(\(s\);)468 2565 y(t)g(=)f(s)h(+)f(strlen)i(\(s\))f(-)f(1;) +468 2653 y(while)i(\(t)e(>)h(s)f(&&)h(whitespace)i(\(*t\)\))547 +2740 y(t--;)468 2827 y(*++t)f(=)e('\\0';)468 3001 y(return)i(s;)390 +3088 y(})390 3263 y(/*)f(******************************)q(*****)q(****) q(*****)q(****)q(****)q(*****)q(****)q(***)45 b(*/)390 -3088 y(/*)2589 b(*/)390 3176 y(/*)707 b(Interface)41 -b(to)f(Readline)h(Completion)629 b(*/)390 3263 y(/*)2589 -b(*/)390 3350 y(/*)40 b(******************************)q(*****)q(****)q +3350 y(/*)2589 b(*/)390 3437 y(/*)707 b(Interface)41 +b(to)f(Readline)h(Completion)629 b(*/)390 3524 y(/*)2589 +b(*/)390 3611 y(/*)40 b(******************************)q(*****)q(****)q (*****)q(****)q(****)q(*****)q(****)q(***)45 b(*/)390 -3524 y(char)40 b(*command_generator)j(PARAMS\(\(const)g(char)d(*,)f -(int\)\);)390 3611 y(char)h(**fileman_completion)k(PARAMS\(\(const)e -(char)e(*,)g(int,)g(int\)\);)390 3786 y(/*)g(Tell)g(the)g(GNU)g +3786 y(char)40 b(*command_generator)j(PARAMS\(\(const)g(char)d(*,)f +(int\)\);)390 3873 y(char)h(**fileman_completion)k(PARAMS\(\(const)e +(char)e(*,)g(int,)g(int\)\);)390 4047 y(/*)g(Tell)g(the)g(GNU)g (Readline)h(library)g(how)e(to)h(complete.)81 b(We)39 -b(want)h(to)g(try)g(to)g(complete)508 3873 y(on)f(command)i(names)g(if) +b(want)h(to)g(try)g(to)g(complete)508 4134 y(on)f(command)i(names)g(if) e(this)h(is)g(the)g(first)g(word)g(in)g(the)g(line,)g(or)g(on)g -(filenames)508 3960 y(if)f(not.)h(*/)390 4047 y(initialize_readline)k -(\(\))390 4134 y({)468 4222 y(/*)c(Allow)g(conditional)i(parsing)f(of)f -(the)g(~/.inputrc)h(file.)g(*/)468 4309 y(rl_readline_name)i(=)d -("FileMan";)468 4483 y(/*)g(Tell)g(the)g(completer)h(that)g(we)e(want)h -(a)g(crack)g(first.)h(*/)468 4570 y(rl_attempted_completion_fun)q(ctio) -q(n)k(=)39 b(fileman_completion;)390 4658 y(})390 4832 +(filenames)508 4222 y(if)f(not.)h(*/)390 4309 y(initialize_readline)k +(\(\))390 4396 y({)468 4483 y(/*)c(Allow)g(conditional)i(parsing)f(of)f +(the)g(~/.inputrc)h(file.)g(*/)468 4570 y(rl_readline_name)i(=)d +("FileMan";)468 4745 y(/*)g(Tell)g(the)g(completer)h(that)g(we)e(want)h +(a)g(crack)g(first.)h(*/)468 4832 y(rl_attempted_completion_fun)q(ctio) +q(n)k(=)39 b(fileman_completion;)390 4919 y(})390 5093 y(/*)h(Attempt)g(to)g(complete)h(on)f(the)g(contents)h(of)f(TEXT.)79 -b(START)41 b(and)e(END)h(bound)h(the)508 4919 y(region)f(of)g +b(START)41 b(and)e(END)h(bound)h(the)508 5181 y(region)f(of)g (rl_line_buffer)i(that)f(contains)g(the)e(word)i(to)e(complete.)81 -b(TEXT)40 b(is)508 5006 y(the)g(word)g(to)f(complete.)81 -b(We)40 b(can)g(use)f(the)h(entire)h(contents)g(of)f(rl_line_buffer)508 -5093 y(in)f(case)h(we)g(want)g(to)g(do)g(some)g(simple)g(parsing.)81 -b(Return)40 b(the)g(array)h(of)e(matches,)508 5181 y(or)g(NULL)h(if)g -(there)h(aren't)f(any.)g(*/)390 5268 y(char)g(**)p eop -end -%%Page: 63 67 -TeXDict begin 63 66 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(63)390 -299 y Fe(fileman_completion)43 b(\(text,)e(start,)g(end\))586 -386 y(const)f(char)h(*text;)586 473 y(int)f(start,)h(end;)390 -560 y({)468 648 y(char)g(**matches;)468 822 y(matches)g(=)f(\(char)g -(**\)NULL;)468 996 y(/*)g(If)g(this)g(word)g(is)g(at)f(the)h(start)h +b(TEXT)40 b(is)508 5268 y(the)g(word)g(to)f(complete.)81 +b(We)40 b(can)g(use)f(the)h(entire)h(contents)g(of)f(rl_line_buffer)p +eop end +%%Page: 65 69 +TeXDict begin 65 68 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(65)508 +299 y Fe(in)39 b(case)h(we)g(want)g(to)g(do)g(some)g(simple)g(parsing.) +81 b(Return)40 b(the)g(array)h(of)e(matches,)508 386 +y(or)g(NULL)h(if)g(there)h(aren't)f(any.)g(*/)390 473 +y(char)g(**)390 560 y(fileman_completion)j(\(text,)e(start,)g(end\))586 +648 y(const)f(char)h(*text;)586 735 y(int)f(start,)h(end;)390 +822 y({)468 909 y(char)g(**matches;)468 1083 y(matches)g(=)f(\(char)g +(**\)NULL;)468 1258 y(/*)g(If)g(this)g(word)g(is)g(at)f(the)h(start)h (of)e(the)h(line,)h(then)f(it)g(is)f(a)h(command)586 -1083 y(to)g(complete.)80 b(Otherwise)42 b(it)d(is)h(the)g(name)g(of)g -(a)f(file)h(in)g(the)g(current)586 1171 y(directory.)i(*/)468 -1258 y(if)e(\(start)h(==)e(0\))547 1345 y(matches)i(=)e +1345 y(to)g(complete.)80 b(Otherwise)42 b(it)d(is)h(the)g(name)g(of)g +(a)f(file)h(in)g(the)g(current)586 1432 y(directory.)i(*/)468 +1519 y(if)e(\(start)h(==)e(0\))547 1606 y(matches)i(=)e (rl_completion_matches)44 b(\(text,)d(command_generator\);)468 -1519 y(return)g(\(matches\);)390 1606 y(})390 1781 y(/*)f(Generator)h +1781 y(return)g(\(matches\);)390 1868 y(})390 2042 y(/*)f(Generator)h (function)g(for)f(command)h(completion.)81 b(STATE)40 -b(lets)g(us)g(know)g(whether)508 1868 y(to)f(start)i(from)f(scratch;)h +b(lets)g(us)g(know)g(whether)508 2130 y(to)f(start)i(from)f(scratch;)h (without)g(any)f(state)g(\(i.e.)g(STATE)h(==)e(0\),)h(then)g(we)508 -1955 y(start)g(at)g(the)g(top)g(of)f(the)h(list.)h(*/)390 -2042 y(char)f(*)390 2130 y(command_generator)j(\(text,)e(state\))586 -2217 y(const)f(char)h(*text;)586 2304 y(int)f(state;)390 -2391 y({)468 2478 y(static)h(int)f(list_index,)i(len;)468 -2565 y(char)f(*name;)468 2740 y(/*)f(If)g(this)g(is)g(a)f(new)h(word)g +2217 y(start)g(at)g(the)g(top)g(of)f(the)h(list.)h(*/)390 +2304 y(char)f(*)390 2391 y(command_generator)j(\(text,)e(state\))586 +2478 y(const)f(char)h(*text;)586 2565 y(int)f(state;)390 +2653 y({)468 2740 y(static)h(int)f(list_index,)i(len;)468 +2827 y(char)f(*name;)468 3001 y(/*)f(If)g(this)g(is)g(a)f(new)h(word)g (to)g(complete,)h(initialize)h(now.)79 b(This)40 b(includes)586 -2827 y(saving)h(the)f(length)g(of)g(TEXT)g(for)g(efficiency,)i(and)e -(initializing)i(the)d(index)586 2914 y(variable)i(to)f(0.)g(*/)468 -3001 y(if)g(\(!state\))547 3088 y({)625 3176 y(list_index)i(=)d(0;)625 -3263 y(len)h(=)g(strlen)g(\(text\);)547 3350 y(})468 -3524 y(/*)g(Return)h(the)f(next)g(name)g(which)g(partially)i(matches)e -(from)h(the)e(command)i(list.)g(*/)468 3611 y(while)g(\(name)f(=)g -(commands[list_index].name\))547 3699 y({)625 3786 y(list_index++;)625 -3960 y(if)g(\(strncmp)h(\(name,)g(text,)f(len\))g(==)g(0\))704 -4047 y(return)g(\(dupstr\(name\)\);)547 4134 y(})468 -4309 y(/*)g(If)g(no)f(names)i(matched,)g(then)f(return)h(NULL.)f(*/)468 -4396 y(return)h(\(\(char)g(*\)NULL\);)390 4483 y(})390 -4658 y(/*)f(******************************)q(*****)q(****)q(*****)q -(****)q(****)q(*****)q(****)q(***)45 b(*/)390 4745 y(/*)2589 -b(*/)390 4832 y(/*)903 b(FileMan)41 b(Commands)1060 b(*/)390 -4919 y(/*)2589 b(*/)390 5006 y(/*)40 b(******************************)q +3088 y(saving)h(the)f(length)g(of)g(TEXT)g(for)g(efficiency,)i(and)e +(initializing)i(the)d(index)586 3176 y(variable)i(to)f(0.)g(*/)468 +3263 y(if)g(\(!state\))547 3350 y({)625 3437 y(list_index)i(=)d(0;)625 +3524 y(len)h(=)g(strlen)g(\(text\);)547 3611 y(})468 +3786 y(/*)g(Return)h(the)f(next)g(name)g(which)g(partially)i(matches)e +(from)h(the)e(command)i(list.)g(*/)468 3873 y(while)g(\(name)f(=)g +(commands[list_index].name\))547 3960 y({)625 4047 y(list_index++;)625 +4222 y(if)g(\(strncmp)h(\(name,)g(text,)f(len\))g(==)g(0\))704 +4309 y(return)g(\(dupstr\(name\)\);)547 4396 y(})468 +4570 y(/*)g(If)g(no)f(names)i(matched,)g(then)f(return)h(NULL.)f(*/)468 +4658 y(return)h(\(\(char)g(*\)NULL\);)390 4745 y(})390 +4919 y(/*)f(******************************)q(*****)q(****)q(*****)q +(****)q(****)q(*****)q(****)q(***)45 b(*/)390 5006 y(/*)2589 +b(*/)390 5093 y(/*)903 b(FileMan)41 b(Commands)1060 b(*/)390 +5181 y(/*)2589 b(*/)390 5268 y(/*)40 b(******************************)q (*****)q(****)q(*****)q(****)q(****)q(*****)q(****)q(***)45 -b(*/)390 5181 y(/*)40 b(String)g(to)g(pass)g(to)g(system)g(\(\).)80 +b(*/)p eop end +%%Page: 66 70 +TeXDict begin 66 69 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(66)390 +386 y Fe(/*)40 b(String)g(to)g(pass)g(to)g(system)g(\(\).)80 b(This)40 b(is)f(for)h(the)g(LIST,)h(VIEW)f(and)g(RENAME)508 -5268 y(commands.)h(*/)p eop end -%%Page: 64 68 -TeXDict begin 64 67 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(64)390 -299 y Fe(static)41 b(char)f(syscom[1024];)390 473 y(/*)g(List)g(the)g -(file\(s\))h(named)f(in)g(arg.)g(*/)390 560 y(com_list)h(\(arg\))586 -648 y(char)f(*arg;)390 735 y({)468 822 y(if)g(\(!arg\))547 -909 y(arg)g(=)f("";)468 1083 y(sprintf)i(\(syscom,)g("ls)f(-FClg)h -(\045s",)f(arg\);)468 1171 y(return)h(\(system)g(\(syscom\)\);)390 -1258 y(})390 1432 y(com_view)g(\(arg\))586 1519 y(char)f(*arg;)390 -1606 y({)468 1694 y(if)g(\(!valid_argument)j(\("view",)e(arg\)\))547 -1781 y(return)f(1;)390 1955 y(#if)g(defined)h(\(__MSDOS__\))468 -2042 y(/*)f(more.com)h(doesn't)g(grok)f(slashes)h(in)f(pathnames)h(*/) -468 2130 y(sprintf)g(\(syscom,)g("less)g(\045s",)f(arg\);)390 -2217 y(#else)468 2304 y(sprintf)h(\(syscom,)g("more)g(\045s",)f(arg\);) -390 2391 y(#endif)468 2478 y(return)h(\(system)g(\(syscom\)\);)390 -2565 y(})390 2740 y(com_rename)g(\(arg\))586 2827 y(char)f(*arg;)390 -2914 y({)468 3001 y(too_dangerous)j(\("rename"\);)468 -3088 y(return)e(\(1\);)390 3176 y(})390 3350 y(com_stat)g(\(arg\))586 -3437 y(char)f(*arg;)390 3524 y({)468 3611 y(struct)h(stat)f(finfo;)468 -3786 y(if)g(\(!valid_argument)j(\("stat",)e(arg\)\))547 -3873 y(return)f(\(1\);)468 4047 y(if)g(\(stat)g(\(arg,)h(&finfo\))g(==) -e(-1\))547 4134 y({)625 4222 y(perror)i(\(arg\);)625 -4309 y(return)g(\(1\);)547 4396 y(})468 4570 y(printf)g(\("Statistics)h -(for)e(`\045s':\\n",)h(arg\);)468 4745 y(printf)g(\("\045s)f(has)g +473 y(commands.)h(*/)390 560 y(static)g(char)f(syscom[1024];)390 +735 y(/*)g(List)g(the)g(file\(s\))h(named)f(in)g(arg.)g(*/)390 +822 y(com_list)h(\(arg\))586 909 y(char)f(*arg;)390 996 +y({)468 1083 y(if)g(\(!arg\))547 1171 y(arg)g(=)f("";)468 +1345 y(sprintf)i(\(syscom,)g("ls)f(-FClg)h(\045s",)f(arg\);)468 +1432 y(return)h(\(system)g(\(syscom\)\);)390 1519 y(})390 +1694 y(com_view)g(\(arg\))586 1781 y(char)f(*arg;)390 +1868 y({)468 1955 y(if)g(\(!valid_argument)j(\("view",)e(arg\)\))547 +2042 y(return)f(1;)390 2217 y(#if)g(defined)h(\(__MSDOS__\))468 +2304 y(/*)f(more.com)h(doesn't)g(grok)f(slashes)h(in)f(pathnames)h(*/) +468 2391 y(sprintf)g(\(syscom,)g("less)g(\045s",)f(arg\);)390 +2478 y(#else)468 2565 y(sprintf)h(\(syscom,)g("more)g(\045s",)f(arg\);) +390 2653 y(#endif)468 2740 y(return)h(\(system)g(\(syscom\)\);)390 +2827 y(})390 3001 y(com_rename)g(\(arg\))586 3088 y(char)f(*arg;)390 +3176 y({)468 3263 y(too_dangerous)j(\("rename"\);)468 +3350 y(return)e(\(1\);)390 3437 y(})390 3611 y(com_stat)g(\(arg\))586 +3699 y(char)f(*arg;)390 3786 y({)468 3873 y(struct)h(stat)f(finfo;)468 +4047 y(if)g(\(!valid_argument)j(\("stat",)e(arg\)\))547 +4134 y(return)f(\(1\);)468 4309 y(if)g(\(stat)g(\(arg,)h(&finfo\))g(==) +e(-1\))547 4396 y({)625 4483 y(perror)i(\(arg\);)625 +4570 y(return)g(\(1\);)547 4658 y(})468 4832 y(printf)g(\("Statistics)h +(for)e(`\045s':\\n",)h(arg\);)468 5006 y(printf)g(\("\045s)f(has)g (\045d)g(link\045s,)h(and)f(is)f(\045d)h(byte\045s)g(in)g(length.\\n",) -468 4832 y(arg,)782 4919 y(finfo.st_nlink,)782 5006 y(\(finfo.st_nlink) -j(==)d(1\))f(?)h("")f(:)h("s",)782 5093 y(finfo.st_size,)782 -5181 y(\(finfo.st_size)j(==)c(1\))h(?)g("")f(:)h("s"\);)468 -5268 y(printf)h(\("Inode)g(Last)f(Change)h(at:)f(\045s",)g(ctime)g -(\(&finfo.st_ctime\)\);)p eop end -%%Page: 65 69 -TeXDict begin 65 68 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(65)468 -299 y Fe(printf)41 b(\(")236 b(Last)40 b(access)h(at:)f(\045s",)g -(ctime)g(\(&finfo.st_atime\)\);)468 386 y(printf)h(\(")157 -b(Last)41 b(modified)g(at:)f(\045s",)g(ctime)g(\(&finfo.st_mtime\)\);) -468 473 y(return)h(\(0\);)390 560 y(})390 735 y(com_delete)g(\(arg\)) -586 822 y(char)f(*arg;)390 909 y({)468 996 y(too_dangerous)j -(\("delete"\);)468 1083 y(return)e(\(1\);)390 1171 y(})390 -1345 y(/*)f(Print)g(out)g(help)g(for)g(ARG,)g(or)g(for)g(all)g(of)f -(the)h(commands)h(if)f(ARG)g(is)508 1432 y(not)g(present.)h(*/)390 -1519 y(com_help)g(\(arg\))586 1606 y(char)f(*arg;)390 -1694 y({)468 1781 y(register)h(int)f(i;)468 1868 y(int)g(printed)h(=)f -(0;)468 2042 y(for)g(\(i)g(=)f(0;)h(commands[i].name;)j(i++\))547 -2130 y({)625 2217 y(if)d(\(!*arg)h(||)e(\(strcmp)i(\(arg,)g -(commands[i].name\))i(==)c(0\)\))704 2304 y({)782 2391 +468 5093 y(arg,)782 5181 y(finfo.st_nlink,)782 5268 y(\(finfo.st_nlink) +j(==)d(1\))f(?)h("")f(:)h("s",)p eop end +%%Page: 67 71 +TeXDict begin 67 70 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(67)782 +299 y Fe(finfo.st_size,)782 386 y(\(finfo.st_size)43 +b(==)c(1\))h(?)g("")f(:)h("s"\);)468 473 y(printf)h(\("Inode)g(Last)f +(Change)h(at:)f(\045s",)g(ctime)g(\(&finfo.st_ctime\)\);)468 +560 y(printf)h(\(")236 b(Last)40 b(access)h(at:)f(\045s",)g(ctime)g +(\(&finfo.st_atime\)\);)468 648 y(printf)h(\(")157 b(Last)41 +b(modified)g(at:)f(\045s",)g(ctime)g(\(&finfo.st_mtime\)\);)468 +735 y(return)h(\(0\);)390 822 y(})390 996 y(com_delete)g(\(arg\))586 +1083 y(char)f(*arg;)390 1171 y({)468 1258 y(too_dangerous)j +(\("delete"\);)468 1345 y(return)e(\(1\);)390 1432 y(})390 +1606 y(/*)f(Print)g(out)g(help)g(for)g(ARG,)g(or)g(for)g(all)g(of)f +(the)h(commands)h(if)f(ARG)g(is)508 1694 y(not)g(present.)h(*/)390 +1781 y(com_help)g(\(arg\))586 1868 y(char)f(*arg;)390 +1955 y({)468 2042 y(register)h(int)f(i;)468 2130 y(int)g(printed)h(=)f +(0;)468 2304 y(for)g(\(i)g(=)f(0;)h(commands[i].name;)j(i++\))547 +2391 y({)625 2478 y(if)d(\(!*arg)h(||)e(\(strcmp)i(\(arg,)g +(commands[i].name\))i(==)c(0\)\))704 2565 y({)782 2653 y(printf)i(\("\045s\\t\\t\045s.\\n",)i(commands[i].name,)g -(commands[i].doc\);)782 2478 y(printed++;)704 2565 y(})547 -2653 y(})468 2827 y(if)d(\(!printed\))547 2914 y({)625 -3001 y(printf)h(\("No)f(commands)h(match)g(`\045s'.)79 -b(Possibilities)42 b(are:\\n",)f(arg\);)625 3176 y(for)f(\(i)g(=)f(0;)h -(commands[i].name;)j(i++\))704 3263 y({)782 3350 y(/*)d(Print)g(in)g -(six)g(columns.)h(*/)782 3437 y(if)f(\(printed)h(==)f(6\))861 -3524 y({)939 3611 y(printed)h(=)e(0;)939 3699 y(printf)i(\("\\n"\);)861 -3786 y(})782 3960 y(printf)g(\("\045s\\t",)g(commands[i].name\);)782 -4047 y(printed++;)704 4134 y(})625 4309 y(if)f(\(printed\))704 -4396 y(printf)g(\("\\n"\);)547 4483 y(})468 4570 y(return)h(\(0\);)390 -4658 y(})390 4832 y(/*)f(Change)g(to)g(the)g(directory)h(ARG.)f(*/)390 -4919 y(com_cd)h(\(arg\))586 5006 y(char)f(*arg;)390 5093 -y({)468 5181 y(if)g(\(chdir)h(\(arg\))f(==)g(-1\))547 -5268 y({)p eop end -%%Page: 66 70 -TeXDict begin 66 69 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(66)625 -299 y Fe(perror)41 b(\(arg\);)625 386 y(return)g(1;)547 -473 y(})468 648 y(com_pwd)g(\(""\);)468 735 y(return)g(\(0\);)390 -822 y(})390 996 y(/*)f(Print)g(out)g(the)g(current)h(working)g -(directory.)g(*/)390 1083 y(com_pwd)g(\(ignore\))586 -1171 y(char)f(*ignore;)390 1258 y({)468 1345 y(char)h(dir[1024],)g(*s;) -468 1519 y(s)f(=)f(getcwd)i(\(dir,)f(sizeof\(dir\))i(-)e(1\);)468 -1606 y(if)g(\(s)g(==)f(0\))547 1694 y({)625 1781 y(printf)i(\("Error)g -(getting)g(pwd:)f(\045s\\n",)g(dir\);)625 1868 y(return)h(1;)547 -1955 y(})468 2130 y(printf)g(\("Current)g(directory)h(is)d(\045s\\n",)i -(dir\);)468 2217 y(return)g(0;)390 2304 y(})390 2478 +(commands[i].doc\);)782 2740 y(printed++;)704 2827 y(})547 +2914 y(})468 3088 y(if)d(\(!printed\))547 3176 y({)625 +3263 y(printf)h(\("No)f(commands)h(match)g(`\045s'.)79 +b(Possibilities)42 b(are:\\n",)f(arg\);)625 3437 y(for)f(\(i)g(=)f(0;)h +(commands[i].name;)j(i++\))704 3524 y({)782 3611 y(/*)d(Print)g(in)g +(six)g(columns.)h(*/)782 3699 y(if)f(\(printed)h(==)f(6\))861 +3786 y({)939 3873 y(printed)h(=)e(0;)939 3960 y(printf)i(\("\\n"\);)861 +4047 y(})782 4222 y(printf)g(\("\045s\\t",)g(commands[i].name\);)782 +4309 y(printed++;)704 4396 y(})625 4570 y(if)f(\(printed\))704 +4658 y(printf)g(\("\\n"\);)547 4745 y(})468 4832 y(return)h(\(0\);)390 +4919 y(})390 5093 y(/*)f(Change)g(to)g(the)g(directory)h(ARG.)f(*/)390 +5181 y(com_cd)h(\(arg\))586 5268 y(char)f(*arg;)p eop +end +%%Page: 68 72 +TeXDict begin 68 71 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(68)390 +299 y Fe({)468 386 y(if)40 b(\(chdir)h(\(arg\))f(==)g(-1\))547 +473 y({)625 560 y(perror)h(\(arg\);)625 648 y(return)g(1;)547 +735 y(})468 909 y(com_pwd)g(\(""\);)468 996 y(return)g(\(0\);)390 +1083 y(})390 1258 y(/*)f(Print)g(out)g(the)g(current)h(working)g +(directory.)g(*/)390 1345 y(com_pwd)g(\(ignore\))586 +1432 y(char)f(*ignore;)390 1519 y({)468 1606 y(char)h(dir[1024],)g(*s;) +468 1781 y(s)f(=)f(getcwd)i(\(dir,)f(sizeof\(dir\))i(-)e(1\);)468 +1868 y(if)g(\(s)g(==)f(0\))547 1955 y({)625 2042 y(printf)i(\("Error)g +(getting)g(pwd:)f(\045s\\n",)g(dir\);)625 2130 y(return)h(1;)547 +2217 y(})468 2391 y(printf)g(\("Current)g(directory)h(is)d(\045s\\n",)i +(dir\);)468 2478 y(return)g(0;)390 2565 y(})390 2740 y(/*)f(The)g(user)g(wishes)g(to)g(quit)g(using)h(this)f(program.)80 -b(Just)40 b(set)g(DONE)g(non-zero.)h(*/)390 2565 y(com_quit)g(\(arg\)) -586 2653 y(char)f(*arg;)390 2740 y({)468 2827 y(done)h(=)e(1;)468 -2914 y(return)i(\(0\);)390 3001 y(})390 3176 y(/*)f(Function)h(which)f +b(Just)40 b(set)g(DONE)g(non-zero.)h(*/)390 2827 y(com_quit)g(\(arg\)) +586 2914 y(char)f(*arg;)390 3001 y({)468 3088 y(done)h(=)e(1;)468 +3176 y(return)i(\(0\);)390 3263 y(})390 3437 y(/*)f(Function)h(which)f (tells)g(you)g(that)h(you)e(can't)i(do)e(this.)i(*/)390 -3263 y(too_dangerous)h(\(caller\))586 3350 y(char)e(*caller;)390 -3437 y({)468 3524 y(fprintf)h(\(stderr,)821 3611 y("\045s:)g(Too)f +3524 y(too_dangerous)h(\(caller\))586 3611 y(char)e(*caller;)390 +3699 y({)468 3786 y(fprintf)h(\(stderr,)821 3873 y("\045s:)g(Too)f (dangerous)h(for)f(me)f(to)h(distribute.)81 b(Write)40 -b(it)g(yourself.\\n",)821 3699 y(caller\);)390 3786 y(})390 -3960 y(/*)g(Return)g(non-zero)h(if)f(ARG)g(is)g(a)f(valid)h(argument)h -(for)f(CALLER,)h(else)f(print)508 4047 y(an)f(error)i(message)g(and)e -(return)i(zero.)f(*/)390 4134 y(int)390 4222 y(valid_argument)i -(\(caller,)f(arg\))586 4309 y(char)f(*caller,)h(*arg;)390 -4396 y({)468 4483 y(if)f(\(!arg)g(||)g(!*arg\))547 4570 -y({)625 4658 y(fprintf)h(\(stderr,)g("\045s:)f(Argument)h -(required.\\n",)i(caller\);)625 4745 y(return)e(\(0\);)547 -4832 y(})468 5006 y(return)g(\(1\);)390 5093 y(})p eop -end -%%Page: 67 71 -TeXDict begin 67 70 bop 3659 -116 a Ft(67)150 299 y Fp(App)t(endix)52 +b(it)g(yourself.\\n",)821 3960 y(caller\);)390 4047 y(})390 +4222 y(/*)g(Return)g(non-zero)h(if)f(ARG)g(is)g(a)f(valid)h(argument)h +(for)f(CALLER,)h(else)f(print)508 4309 y(an)f(error)i(message)g(and)e +(return)i(zero.)f(*/)390 4396 y(int)390 4483 y(valid_argument)i +(\(caller,)f(arg\))586 4570 y(char)f(*caller,)h(*arg;)390 +4658 y({)468 4745 y(if)f(\(!arg)g(||)g(!*arg\))547 4832 +y({)625 4919 y(fprintf)h(\(stderr,)g("\045s:)f(Argument)h +(required.\\n",)i(caller\);)625 5006 y(return)e(\(0\);)547 +5093 y(})468 5268 y(return)g(\(1\);)p eop end +%%Page: 69 73 +TeXDict begin 69 72 bop 150 -116 a Ft(Chapter)30 b(2:)41 +b(Programming)30 b(with)g(GNU)h(Readline)1683 b(69)390 +299 y Fe(})p eop end +%%Page: 70 74 +TeXDict begin 70 73 bop 3659 -116 a Ft(70)150 299 y Fp(App)t(endix)52 b(A)81 b(GNU)54 b(F)-13 b(ree)53 b(Do)t(cumen)l(tation)e(License)1359 502 y Ft(V)-8 b(ersion)31 b(1.3,)g(3)g(No)m(v)m(em)m(b)s(er)h(2008)390 635 y(Cop)m(yrigh)m(t)842 632 y(c)817 635 y Fq(\015)e @@ -11237,10 +11402,10 @@ b(\\In)m(v)-5 b(arian)m(t)27 b(Sections")g(are)f(certain)g(Secondary)g 5340 y(b)s(eing)e(those)h(of)g(In)m(v)-5 b(arian)m(t)27 b(Sections,)i(in)d(the)h(notice)h(that)f(sa)m(ys)g(that)g(the)g(Do)s (cumen)m(t)g(is)g(released)p eop end -%%Page: 68 72 -TeXDict begin 68 71 bop 150 -116 a Ft(App)s(endix)29 +%%Page: 71 75 +TeXDict begin 71 74 bop 150 -116 a Ft(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 -b(68)330 299 y(under)26 b(this)i(License.)40 b(If)27 +b(71)330 299 y(under)26 b(this)i(License.)40 b(If)27 b(a)h(section)h(do)s(es)f(not)f(\014t)h(the)g(ab)s(o)m(v)m(e)h (de\014nition)e(of)h(Secondary)f(then)h(it)g(is)330 408 y(not)k(allo)m(w)m(ed)i(to)e(b)s(e)g(designated)g(as)g(In)m(v)-5 @@ -11331,10 +11496,10 @@ b(Disclaimers)f(are)g(considered)e(to)330 4970 y(b)s(e)k(included)g(b)m b(Disclaimers)f(ma)m(y)g(ha)m(v)m(e)g(is)f(v)m(oid)g(and)f(has)h(no)330 5189 y(e\013ect)32 b(on)e(the)h(meaning)f(of)h(this)f(License.)199 5340 y(2.)61 b(VERBA)-8 b(TIM)31 b(COPYING)p eop end -%%Page: 69 73 -TeXDict begin 69 72 bop 150 -116 a Ft(App)s(endix)29 +%%Page: 72 76 +TeXDict begin 72 75 bop 150 -116 a Ft(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 -b(69)330 299 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h +b(72)330 299 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h (the)g(Do)s(cumen)m(t)h(in)f(an)m(y)g(medium,)h(either)g(commercially)h (or)330 408 y(noncommercially)-8 b(,)48 b(pro)m(vided)42 b(that)h(this)f(License,)47 b(the)42 b(cop)m(yrigh)m(t)i(notices,)j @@ -11424,10 +11589,10 @@ b(in)f(the)h(Title)h(P)m(age)g(\(and)f(on)f(the)h(co)m(v)m(ers,)i(if)e 5340 y(Do)s(cumen)m(t,)j(and)d(from)g(those)i(of)f(previous)f(v)m (ersions)h(\(whic)m(h)g(should,)g(if)g(there)g(w)m(ere)g(an)m(y)-8 b(,)p eop end -%%Page: 70 74 -TeXDict begin 70 73 bop 150 -116 a Ft(App)s(endix)29 +%%Page: 73 77 +TeXDict begin 73 76 bop 150 -116 a Ft(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 -b(70)510 299 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g +b(73)510 299 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g (the)f(Do)s(cumen)m(t\).)45 b(Y)-8 b(ou)32 b(ma)m(y)g(use)f(the)g(same) h(title)h(as)510 408 y(a)e(previous)f(v)m(ersion)g(if)h(the)f(original) i(publisher)d(of)h(that)h(v)m(ersion)g(giv)m(es)h(p)s(ermission.)360 @@ -11506,10 +11671,10 @@ b(arran)m(t)m(y)32 b(Disclaimers.)330 5121 y(If)h(the)g(Mo)s(di\014ed)g (designate)h(some)e(or)h(all)g(of)f(these)h(sections)h(as)e(in)m(v)-5 b(arian)m(t.)48 b(T)-8 b(o)33 b(do)f(this,)h(add)f(their)p eop end -%%Page: 71 75 -TeXDict begin 71 74 bop 150 -116 a Ft(App)s(endix)29 +%%Page: 74 78 +TeXDict begin 74 77 bop 150 -116 a Ft(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 -b(71)330 299 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5 +b(74)330 299 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(in)f(the)h(Mo)s(di\014ed)f(V)-8 b(ersion's)36 b(license)g(notice.)57 b(These)330 408 y(titles)32 b(m)m(ust)e(b)s(e)g(distinct)h(from)e(an)m(y)i(other)g @@ -11594,10 +11759,10 @@ b(ma)m(y)g(extract)h(a)f(single)g(do)s(cumen)m(t)f(from)g(suc)m(h)g(a)h 5230 y(do)s(cumen)m(t,)d(and)f(follo)m(w)i(this)e(License)h(in)g(all)g (other)g(resp)s(ects)f(regarding)h(v)m(erbatim)g(cop)m(ying)h(of)330 5340 y(that)d(do)s(cumen)m(t.)p eop end -%%Page: 72 76 -TeXDict begin 72 75 bop 150 -116 a Ft(App)s(endix)29 +%%Page: 75 79 +TeXDict begin 75 78 bop 150 -116 a Ft(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 -b(72)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h +b(75)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h (W)m(ORKS)330 441 y(A)d(compilation)i(of)e(the)g(Do)s(cumen)m(t)h(or)f (its)g(deriv)-5 b(ativ)m(es)30 b(with)d(other)i(separate)g(and)e(indep) s(enden)m(t)330 551 y(do)s(cumen)m(ts)33 b(or)g(w)m(orks,)h(in)f(or)h @@ -11682,10 +11847,10 @@ b(ha)m(v)m(e)h(receiv)m(ed)h(copies)e(or)h(righ)m(ts)f(from)g(y)m(ou)g (reinstated,)i(receipt)f(of)f(a)g(cop)m(y)h(of)f(some)h(or)f(all)h(of)f (the)330 5340 y(same)31 b(material)h(do)s(es)e(not)g(giv)m(e)i(y)m(ou)f (an)m(y)g(righ)m(ts)f(to)i(use)e(it.)p eop end -%%Page: 73 77 -TeXDict begin 73 76 bop 150 -116 a Ft(App)s(endix)29 +%%Page: 76 80 +TeXDict begin 76 79 bop 150 -116 a Ft(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 -b(73)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE)330 +b(76)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE)330 433 y(The)41 b(F)-8 b(ree)43 b(Soft)m(w)m(are)f(F)-8 b(oundation)43 b(ma)m(y)f(publish)e(new,)k(revised)d(v)m(ersions)h(of)g (the)g(GNU)g(F)-8 b(ree)330 543 y(Do)s(cumen)m(tation)34 @@ -11749,10 +11914,10 @@ f(of)g(that)330 2944 y(license)31 b(published)e(b)m(y)h(that)h(same)g g(under)330 3895 y(CC-BY-SA)30 b(on)g(the)h(same)f(site)h(at)g(an)m(y)g (time)g(b)s(efore)e(August)h(1,)h(2009,)h(pro)m(vided)e(the)g(MMC)h(is) 330 4005 y(eligible)h(for)e(relicensing.)p eop end -%%Page: 74 78 -TeXDict begin 74 77 bop 150 -116 a Ft(App)s(endix)29 +%%Page: 77 81 +TeXDict begin 77 80 bop 150 -116 a Ft(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 -b(74)150 299 y Fr(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f +b(77)150 299 y Fr(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f (for)g(y)l(our)g(do)t(cumen)l(ts)150 458 y Ft(T)-8 b(o)35 b(use)f(this)h(License)g(in)f(a)h(do)s(cumen)m(t)g(y)m(ou)f(ha)m(v)m(e) i(written,)g(include)f(a)f(cop)m(y)i(of)f(the)f(License)h(in)g(the)150 @@ -11787,11 +11952,11 @@ y(If)23 b(y)m(our)h(do)s(cumen)m(t)f(con)m(tains)i(non)m(trivial)g b(as)g(the)g(GNU)150 2331 y(General)31 b(Public)f(License,)i(to)f(p)s (ermit)e(their)i(use)f(in)g(free)g(soft)m(w)m(are.)p eop end -%%Page: 75 79 -TeXDict begin 75 78 bop 150 -116 a Ft(Concept)31 b(Index)2927 -b(75)150 100 y Fp(Concept)52 b(Index)146 434 y Fr(A)150 +%%Page: 78 82 +TeXDict begin 78 81 bop 150 -116 a Ft(Concept)31 b(Index)2927 +b(78)150 100 y Fp(Concept)52 b(Index)146 434 y Fr(A)150 550 y Fb(application-sp)r(eci\014c)27 b(completion)f(functions)e -Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)37 b Fb(51)146 796 y +Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)37 b Fb(53)146 796 y Fr(C)150 913 y Fb(command)26 b(editing)6 b Fa(:)14 b(:)f(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(1)146 1159 @@ -11815,653 +11980,676 @@ g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g 32 b Fb(1)2021 970 y Fr(R)2025 1102 y Fb(readline,)26 b(function)18 b Fa(:)c(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 -b Fb(25)2021 1507 y Fr(V)2025 1639 y Fb(v)l(ariables,)27 +b Fb(26)2021 1507 y Fr(V)2025 1639 y Fb(v)l(ariables,)27 b(readline)11 b Fa(:)j(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) 26 b Fb(4)2021 2043 y Fr(Y)2025 2176 y Fb(y)n(anking)f(text)17 b Fa(:)12 b(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)32 b Fb(2)p eop end -%%Page: 76 80 -TeXDict begin 76 79 bop 3659 -116 a Ft(76)150 299 y Fp(F)-13 +%%Page: 79 83 +TeXDict begin 79 82 bop 3659 -116 a Ft(79)150 299 y Fp(F)-13 b(unction)52 b(and)h(V)-13 b(ariable)53 b(Index)p 156 -740 41 6 v 150 862 a Fe(_rl_digit_p)10 b Fa(:)16 b(:)d(:)g(:)g(:)h(:)f +740 41 6 v 150 860 a Fe(_rl_digit_p)10 b Fa(:)16 b(:)d(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(42)150 -951 y Fe(_rl_digit_value)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(44)150 +948 y Fe(_rl_digit_value)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)32 b Fb(43)150 1041 y Fe(_rl_lowercase_p)17 +(:)g(:)g(:)32 b Fb(44)150 1036 y Fe(_rl_lowercase_p)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 -b Fb(42)150 1130 y Fe(_rl_to_lower)8 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:) +b Fb(44)150 1125 y Fe(_rl_to_lower)8 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(43)150 -1219 y Fe(_rl_to_upper)8 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(44)150 +1213 y Fe(_rl_to_upper)8 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(42)150 1306 y Fe(_rl_uppercase_p)17 +(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(44)150 1300 y Fe(_rl_uppercase_p)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 -b Fb(42)146 1593 y Fr(A)150 1715 y Fe(abort)27 b(\(C-g\))17 +b Fb(44)146 1569 y Fr(A)150 1689 y Fe(abort)27 b(\(C-g\))17 b Fa(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)31 b Fb(22)150 1802 y Fe(accept-line)d(\(Newline)g(or)e(Return\))14 +(:)31 b Fb(23)150 1777 y Fe(accept-line)d(\(Newline)g(or)e(Return\))14 b Fa(:)g(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 -b Fb(17)146 2088 y Fr(B)150 2211 y Fe(backward-char)h(\(C-b\))14 +b Fb(18)150 1866 y(activ)n(e-region-end-color)20 b Fa(:)13 +b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)34 b Fb(5)150 1953 y(activ)n +(e-region-start-color)17 b Fa(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)31 +b Fb(5)146 2220 y Fr(B)150 2339 y Fe(backward-char)e(\(C-b\))14 b Fa(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28 b Fb(16)150 2300 +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28 b Fb(17)150 2428 y Fe(backward-delete-char)i(\(Rubout\))24 b Fa(:)14 b(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b Fb(19)150 2389 +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b Fb(20)150 2516 y Fe(backward-kill-line)30 b(\(C-x)c(Rubout\))7 b Fa(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)21 b -Fb(20)150 2478 y Fe(backward-kill-word)30 b(\(M-DEL\))13 +Fb(21)150 2604 y Fe(backward-kill-word)30 b(\(M-DEL\))13 b Fa(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)27 b Fb(20)150 2567 y Fe(backward-word)i(\(M-b\))14 +h(:)27 b Fb(21)150 2693 y Fe(backward-word)i(\(M-b\))14 b Fa(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28 b Fb(16)150 2656 +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28 b Fb(17)150 2781 y Fe(beginning-of-history)i(\(M-<\))13 b Fa(:)h(:)g(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(17)150 -2746 y Fe(beginning-of-line)i(\(C-a\))22 b Fa(:)13 b(:)h(:)f(:)g(:)g(:) +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(18)150 +2869 y Fe(beginning-of-line)i(\(C-a\))22 b Fa(:)13 b(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 -b Fb(16)150 2835 y(b)r(ell-st)n(yle)9 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g +b Fb(17)150 2958 y(b)r(ell-st)n(yle)9 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)24 -b Fb(5)150 2924 y(bind-tt)n(y-sp)r(ecial-c)n(hars)c Fa(:)13 +b Fb(5)150 3046 y(bind-tt)n(y-sp)r(ecial-c)n(hars)c Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(5)150 3013 +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(5)150 3134 y(blink-matc)n(hing-paren)6 b Fa(:)12 b(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)21 b Fb(5)150 3100 y Fe(bracketed-paste-begin)30 +g(:)21 b Fb(5)150 3222 y Fe(bracketed-paste-begin)30 b(\(\))18 b Fa(:)c(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(19)146 3387 y Fr(C)150 -3509 y Fe(call-last-kbd-macro)d(\(C-x)c(e\))17 b Fa(:)d(:)f(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(22)150 -3598 y Fe(capitalize-word)d(\(M-c\))9 b Fa(:)14 b(:)f(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(20)146 3491 y Fr(C)150 +3610 y Fe(call-last-kbd-macro)d(\(C-x)c(e\))17 b Fa(:)d(:)f(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(23)150 +3699 y Fe(capitalize-word)d(\(M-c\))9 b Fa(:)14 b(:)f(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -23 b Fb(19)150 3687 y Fe(character-search)29 b(\(C-]\))6 +23 b Fb(21)150 3787 y Fe(character-search)29 b(\(C-]\))6 b Fa(:)15 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(23)150 3777 y Fe +(:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(24)150 3875 y Fe (character-search-backward)31 b(\(M-C-]\))12 b Fa(:)j(:)e(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)27 b Fb(23)150 3866 y Fe(clear-display)i(\(M-C-l\))9 +(:)g(:)g(:)g(:)g(:)27 b Fb(24)150 3964 y Fe(clear-display)i(\(M-C-l\))9 b Fa(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)23 b Fb(16)150 3955 y +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)23 b Fb(17)150 4052 y Fe(clear-screen)28 b(\(C-l\))16 b Fa(:)f(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)31 b Fb(17)150 4044 y(colored-completion-pre\014x)9 +(:)31 b Fb(18)150 4140 y(colored-completion-pre\014x)9 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)24 b Fb(5)150 4133 y(colored-stats)17 +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)24 b Fb(5)150 4229 y(colored-stats)17 b Fa(:)d(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)31 b Fb(5)150 4222 y(commen)n(t-b)r(egin)6 b Fa(:)14 +(:)h(:)31 b Fb(6)150 4317 y(commen)n(t-b)r(egin)6 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 -b Fb(5)150 4312 y Fe(complete)27 b(\(TAB\))10 b Fa(:)k(:)f(:)g(:)h(:)f +b Fb(6)150 4405 y Fe(complete)27 b(\(TAB\))10 b Fa(:)k(:)f(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(21)150 4401 +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(22)150 4494 y(completion-displa)n(y-width)10 b Fa(:)k(:)f(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)25 -b Fb(5)150 4490 y(completion-ignore-case)c Fa(:)13 b(:)g(:)g(:)g(:)h(:) +b Fb(6)150 4582 y(completion-ignore-case)c Fa(:)13 b(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)34 b Fb(5)150 4579 y(completion-map-case)15 +(:)g(:)g(:)34 b Fb(6)150 4670 y(completion-map-case)15 b Fa(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)30 b Fb(5)150 -4668 y(completion-pre\014x-displa)n(y-length)14 b Fa(:)e(:)h(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)30 b Fb(6)150 +4759 y(completion-pre\014x-displa)n(y-length)14 b Fa(:)e(:)h(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)28 b -Fb(5)150 4758 y(completion-query-items)6 b Fa(:)13 b(:)g(:)g(:)g(:)g(:) +Fb(6)150 4847 y(completion-query-items)6 b Fa(:)13 b(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)21 b Fb(6)150 4847 y(con)n(v)n(ert-meta)9 +(:)g(:)g(:)21 b Fb(6)150 4936 y(con)n(v)n(ert-meta)9 b Fa(:)k(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)24 b Fb(6)150 4936 y Fe(copy-backward-word)30 +(:)h(:)24 b Fb(6)150 5024 y Fe(copy-backward-word)30 b(\(\))9 b Fa(:)k(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)23 b Fb(21)150 -5025 y Fe(copy-forward-word)29 b(\(\))11 b Fa(:)j(:)f(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)23 b Fb(22)150 +5112 y Fe(copy-forward-word)29 b(\(\))11 b Fa(:)j(:)f(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)26 b Fb(21)150 5112 y Fe(copy-region-as-kill)k(\(\))6 +g(:)26 b Fb(22)150 5199 y Fe(copy-region-as-kill)k(\(\))6 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(21)2021 817 y Fr(D)2025 -935 y Fe(delete-char)28 b(\(C-d\))20 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:) +(:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(22)2021 817 y Fr(D)2025 +933 y Fe(delete-char)28 b(\(C-d\))20 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)34 b Fb(18)2025 1023 y Fe(delete-char-or-list)c(\(\))6 +(:)g(:)g(:)g(:)34 b Fb(20)2025 1020 y Fe(delete-char-or-list)c(\(\))6 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(22)2025 1111 y Fe +(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(23)2025 1108 y Fe (delete-horizontal-space)31 b(\(\))13 b Fa(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)28 b Fb(20)2025 -1200 y Fe(digit-argument)h(\()p Fc(M-0)p Fe(,)d Fc(M-1)p +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)28 b Fb(22)2025 +1195 y Fe(digit-argument)h(\()p Fc(M-0)p Fe(,)d Fc(M-1)p Fe(,)h(...)f Fc(M--)p Fe(\))13 b Fa(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)28 b Fb(21)2025 1288 y(disable-completion)20 b Fa(:)13 +(:)28 b Fb(22)2025 1282 y(disable-completion)20 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 b Fb(6)2025 -1376 y Fe(do-lowercase-version)c(\(M-A,)d(M-B,)f(M-)p -Fc(x)p Fe(,)h(...\))12 b Fa(:)i(:)27 b Fb(22)2025 1464 +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 b Fb(7)2025 +1370 y Fe(do-lowercase-version)c(\(M-A,)d(M-B,)f(M-)p +Fc(x)p Fe(,)h(...\))12 b Fa(:)i(:)27 b Fb(23)2025 1457 y Fe(downcase-word)h(\(M-l\))14 b Fa(:)g(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)28 -b Fb(19)2025 1552 y Fe(dump-functions)h(\(\))19 b Fa(:)13 +b Fb(20)2025 1544 y Fe(dump-functions)h(\(\))19 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(23)2025 -1640 y Fe(dump-macros)28 b(\(\))10 b Fa(:)j(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(24)2025 +1631 y Fe(dump-macros)28 b(\(\))10 b Fa(:)j(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)24 b Fb(24)2025 1727 y Fe(dump-variables)29 +g(:)g(:)h(:)f(:)g(:)g(:)24 b Fb(25)2025 1719 y Fe(dump-variables)29 b(\(\))19 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 -b Fb(23)2021 1989 y Fr(E)2025 2108 y Fb(ec)n(ho-con)n(trol-c)n +b Fb(25)2021 1965 y Fr(E)2025 2081 y Fb(ec)n(ho-con)n(trol-c)n (haracters)13 b Fa(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)29 -b Fb(6)2025 2196 y(editing-mo)r(de)10 b Fa(:)j(:)g(:)g(:)g(:)g(:)g(:)h +b Fb(7)2025 2169 y(editing-mo)r(de)10 b Fa(:)j(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25 b Fb(6)2025 -2284 y Fe(emacs-editing-mode)k(\(C-e\))18 b Fa(:)d(:)e(:)g(:)g(:)g(:)h +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25 b Fb(7)2025 +2256 y Fe(emacs-editing-mode)k(\(C-e\))18 b Fa(:)d(:)e(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)33 -b Fb(24)2025 2372 y(emacs-mo)r(de-string)18 b Fa(:)c(:)f(:)g(:)g(:)g(:) +b Fb(25)2025 2343 y(emacs-mo)r(de-string)18 b Fa(:)c(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)33 b Fb(6)2025 2460 y(enable-brac)n(k)n -(eted-paste)18 b Fa(:)12 b(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)33 -b Fb(6)2025 2548 y(enable-k)n(eypad)7 b Fa(:)12 b(:)h(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(7)2025 -2636 y Fe(end-kbd-macro)28 b(\(C-x)f(\)\))16 b Fa(:)d(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)30 b Fb(22)2025 2724 y Fc(end-of-file)e Fe(\(usually)f(C-d\))d +(:)h(:)f(:)g(:)g(:)g(:)g(:)33 b Fb(7)2025 2431 y(enable-activ)n +(e-region)15 b Fa(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)30 +b Fb(7)2025 2518 y(enable-brac)n(k)n(eted-paste)18 b +Fa(:)12 b(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)33 b Fb(7)2025 +2605 y(enable-k)n(eypad)7 b Fa(:)12 b(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(7)2025 2692 y +Fe(end-kbd-macro)28 b(\(C-x)f(\)\))16 b Fa(:)d(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30 +b Fb(23)2025 2780 y Fc(end-of-file)e Fe(\(usually)f(C-d\))d Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)37 b Fb(18)2025 2812 y Fe(end-of-history)29 +(:)g(:)g(:)37 b Fb(19)2025 2867 y Fe(end-of-history)29 b(\(M->\))11 b Fa(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(17)2025 -2900 y Fe(end-of-line)i(\(C-e\))20 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(18)2025 +2954 y Fe(end-of-line)i(\(C-e\))20 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)34 b Fb(16)2025 2988 y Fe(exchange-point-and-mark)d(\(C-x) +g(:)g(:)g(:)34 b Fb(17)2025 3042 y Fe(exchange-point-and-mark)d(\(C-x) 26 b(C-x\))20 b Fa(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34 -b Fb(23)2025 3076 y(expand-tilde)19 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g +b Fb(24)2025 3129 y(expand-tilde)19 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)35 b Fb(7)2021 -3336 y Fr(F)2025 3455 y Fe(forward-backward-delete-char)d(\(\))17 +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)35 b Fb(8)2021 +3373 y Fr(F)2025 3490 y Fe(fetch-history)28 b(\(\))22 +b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 +b Fb(19)2025 3577 y Fe(forward-backward-delete-char)c(\(\))17 b Fa(:)d(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)32 -b Fb(19)2025 3543 y Fe(forward-char)c(\(C-f\))16 b Fa(:)f(:)e(:)g(:)g +b Fb(20)2025 3664 y Fe(forward-char)c(\(C-f\))16 b Fa(:)f(:)e(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)31 b Fb(16)2025 3631 y Fe(forward-search-history)f +h(:)f(:)g(:)g(:)g(:)31 b Fb(17)2025 3751 y Fe(forward-search-history)f (\(C-s\))8 b Fa(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)23 b Fb(17)2025 3718 y Fe(forward-word)28 +(:)g(:)g(:)23 b Fb(18)2025 3839 y Fe(forward-word)28 b(\(M-f\))16 b Fa(:)f(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)31 -b Fb(16)2021 3970 y Fr(H)2025 4089 y Fb(history-preserv)n(e-p)r(oin)n +b Fb(17)2021 4075 y Fr(H)2025 4191 y Fb(history-preserv)n(e-p)r(oin)n (t)15 b Fa(:)d(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)30 b Fb(7)2025 -4177 y Fe(history-search-backward)h(\(\))13 b Fa(:)g(:)g(:)h(:)f(:)g(:) +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)30 b Fb(8)2025 +4278 y Fe(history-search-backward)h(\(\))13 b Fa(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)28 b -Fb(17)2025 4265 y Fe(history-search-forward)i(\(\))16 +Fb(18)2025 4366 y Fe(history-search-forward)i(\(\))16 b Fa(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)30 b Fb(17)2025 4353 y(history-size)22 b Fa(:)13 +f(:)g(:)30 b Fb(18)2025 4453 y(history-size)22 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)37 b Fb(7)2025 4441 y Fe(history-substring-search-backw)q(ard)32 -b(\(\))22 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)36 b Fb(18)2025 -4529 y Fe(history-substring-search-forwa)q(rd)c(\(\))7 -b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)22 b Fb(18)2025 -4616 y(horizon)n(tal-scroll-mo)r(de)10 b Fa(:)15 b(:)e(:)h(:)f(:)g(:)g +g(:)37 b Fb(8)2025 4540 y Fe(history-substring-search-backw)q(ard)32 +b(\(\))22 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)36 b Fb(19)2025 +4628 y Fe(history-substring-search-forwa)q(rd)c(\(\))7 +b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)22 b Fb(19)2025 +4715 y(horizon)n(tal-scroll-mo)r(de)10 b Fa(:)15 b(:)e(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)25 b Fb(7)2021 4867 y Fr(I)2025 4986 y Fb(input-meta)9 +g(:)g(:)h(:)25 b Fb(8)2021 4950 y Fr(I)2025 5066 y Fb(input-meta)9 b Fa(:)j(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)24 b Fb(7)2025 5074 y Fe(insert-comment)29 +(:)g(:)g(:)g(:)24 b Fb(8)2025 5154 y Fe(insert-comment)29 b(\(M-#\))11 b Fa(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(23)2025 -5162 y Fe(insert-completions)j(\(M-*\))18 b Fa(:)d(:)e(:)g(:)g(:)g(:)h +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(24)2025 +5241 y Fe(insert-completions)j(\(M-*\))18 b Fa(:)d(:)e(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)33 -b Fb(21)2025 5249 y(isearc)n(h-terminators)9 b Fa(:)14 +b Fb(23)2025 5328 y(isearc)n(h-terminators)9 b Fa(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24 b Fb(7)p +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24 b Fb(8)p eop end -%%Page: 77 81 -TeXDict begin 77 80 bop 150 -116 a Ft(F)-8 b(unction)31 -b(and)f(V)-8 b(ariable)32 b(Index)2370 b(77)146 294 y +%%Page: 80 84 +TeXDict begin 80 83 bop 150 -116 a Ft(F)-8 b(unction)31 +b(and)f(V)-8 b(ariable)32 b(Index)2370 b(80)146 294 y Fr(K)150 423 y Fb(k)n(eymap)14 b Fa(:)e(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)29 b Fb(8)150 514 y Fe(kill-line)f(\(C-k\))7 b Fa(:)14 b(:)f(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(20)150 605 y +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(21)150 605 y Fe(kill-region)28 b(\(\))10 b Fa(:)j(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)24 b Fb(21)150 697 y Fe(kill-whole-line)29 +(:)f(:)g(:)g(:)g(:)24 b Fb(22)150 697 y Fe(kill-whole-line)29 b(\(\))16 b Fa(:)e(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)31 -b Fb(20)150 784 y Fe(kill-word)d(\(M-d\))7 b Fa(:)14 +b Fb(21)150 784 y Fe(kill-word)d(\(M-d\))7 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 -b Fb(20)146 1106 y Fr(M)150 1235 y Fb(mark-mo)r(di\014ed-lines)c +b Fb(21)146 1106 y Fr(M)150 1235 y Fb(mark-mo)r(di\014ed-lines)c Fa(:)c(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(8)150 +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(9)150 1326 y(mark-symlink)n(ed-directories)14 b Fa(:)f(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 -b Fb(8)150 1417 y(matc)n(h-hidden-\014les)7 b Fa(:)12 +b Fb(9)150 1417 y(matc)n(h-hidden-\014les)7 b Fa(:)12 b(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 -b Fb(8)150 1509 y Fe(menu-complete)29 b(\(\))22 b Fa(:)13 +b Fb(9)150 1509 y Fe(menu-complete)29 b(\(\))22 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(22)150 +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(23)150 1600 y Fe(menu-complete-backward)31 b(\(\))16 b Fa(:)d(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)30 -b Fb(22)150 1692 y(men)n(u-complete-displa)n(y-pre\014x)10 +b Fb(23)150 1692 y(men)n(u-complete-displa)n(y-pre\014x)10 b Fa(:)h(:)j(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)25 b Fb(8)150 1779 y(meta-\015ag)d Fa(:)13 +h(:)f(:)g(:)25 b Fb(9)150 1779 y(meta-\015ag)d Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)36 b Fb(7)146 2109 y Fr(N)150 2238 y Fe(next-history)28 +h(:)f(:)g(:)36 b Fb(8)146 2109 y Fr(N)150 2238 y Fe(next-history)28 b(\(C-n\))16 b Fa(:)f(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)31 -b Fb(17)150 2329 y Fe(next-screen-line)e(\(\))14 b Fa(:)g(:)f(:)g(:)g +b Fb(18)150 2329 y Fe(next-screen-line)e(\(\))14 b Fa(:)g(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)28 b Fb(16)150 2401 y Fe(non-incremental-forward-)227 +g(:)h(:)f(:)g(:)28 b Fb(17)150 2401 y Fe(non-incremental-forward-)227 2488 y(search-history)h(\(M-n\))7 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 -b Fb(17)150 2576 y Fe(non-incremental-reverse-)227 2663 +b Fb(18)150 2576 y Fe(non-incremental-reverse-)227 2663 y(search-history)29 b(\(M-p\))7 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 -b Fb(17)146 3004 y Fr(O)150 3133 y Fe(operate-and-get-next)30 +b Fb(18)146 3004 y Fr(O)150 3133 y Fe(operate-and-get-next)30 b(\(C-o\))13 b Fa(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)27 b Fb(18)150 3224 y(output-meta)18 +(:)g(:)g(:)g(:)h(:)27 b Fb(19)150 3224 y(output-meta)18 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)34 b Fb(8)150 3311 y Fe(overwrite-mode)29 b(\(\))19 +g(:)g(:)34 b Fb(9)150 3311 y Fe(overwrite-mode)29 b(\(\))19 b Fa(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(20)146 -3633 y Fr(P)150 3762 y Fb(page-completions)8 b Fa(:)15 -b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 -b Fb(9)150 3853 y Fe(possible-completions)30 b(\(M-?\))13 +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(21)146 +3633 y Fr(P)150 3762 y Fb(page-completions)6 b Fa(:)15 +b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)20 +b Fb(10)150 3853 y Fe(possible-completions)30 b(\(M-?\))13 b Fa(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)27 b Fb(21)150 3945 y Fe(prefix-meta)h(\(ESC\))20 +h(:)27 b Fb(22)150 3945 y Fe(prefix-meta)h(\(ESC\))20 b Fa(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(22)150 +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(24)150 4036 y Fe(previous-history)c(\(C-p\))6 b Fa(:)15 b(:)e(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)21 -b Fb(17)150 4128 y Fe(previous-screen-line)30 b(\(\))21 +b Fb(18)150 4128 y Fe(previous-screen-line)30 b(\(\))21 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)35 b Fb(16)150 4215 y Fe(print-last-kbd-macro)30 +(:)h(:)f(:)g(:)g(:)35 b Fb(17)150 4215 y Fe(print-last-kbd-macro)30 b(\(\))21 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 b Fb(22)146 4547 y +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 b Fb(23)146 4547 y Fr(Q)150 4672 y Fe(quoted-insert)29 b(\(C-q)d(or)g(C-v\))10 b Fa(:)k(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)24 b Fb(19)2021 294 y Fr(R)2025 410 y Fe(re-read-init-file)29 +g(:)g(:)24 b Fb(20)2021 294 y Fr(R)2025 410 y Fe(re-read-init-file)29 b(\(C-x)e(C-r\))17 b Fa(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)32 b Fb(22)2025 498 y Fe(readline)18 +(:)f(:)g(:)g(:)g(:)32 b Fb(23)2025 498 y Fe(readline)18 b Fa(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)33 b Fb(25)2025 585 y Fe(redraw-current-line)d(\(\))6 +(:)g(:)g(:)g(:)33 b Fb(26)2025 585 y Fe(redraw-current-line)d(\(\))6 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(17)2025 672 y Fe +(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(18)2025 672 y Fe (reverse-search-history)30 b(\(C-r\))8 b Fa(:)15 b(:)e(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(17)2025 -760 y(rev)n(ert-all-at-newline)10 b Fa(:)k(:)f(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)26 b Fb(9)2025 847 y Fe(revert-line)i(\(M-r\))20 +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(18)2025 +760 y(rev)n(ert-all-at-newline)8 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)23 b Fb(10)2025 847 y Fe(revert-line)28 b(\(M-r\))20 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(23)2025 +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(24)2025 935 y Fe(rl_activate_mark)15 b Fa(:)h(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)29 b Fb(44)2025 1022 y Fe(rl_add_defun)8 b Fa(:)15 +h(:)f(:)29 b Fb(45)2025 1022 y Fe(rl_add_defun)8 b Fa(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 -b Fb(33)2025 1109 y Fe(rl_add_funmap_entry)7 b Fa(:)17 +b Fb(35)2025 1109 y Fe(rl_add_funmap_entry)7 b Fa(:)17 b(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(37)2025 1197 y +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(39)2025 1197 y Fe(rl_add_undo)10 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(38)2025 1284 y Fe(rl_alphabetic)g +g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(39)2025 1284 y Fe(rl_alphabetic)g Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 -b Fb(42)2025 1371 y Fe(rl_begin_undo_group)7 b Fa(:)17 +b Fb(44)2025 1371 y Fe(rl_begin_undo_group)7 b Fa(:)17 b(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(38)2025 1459 y +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(39)2025 1459 y Fe(rl_bind_key)10 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(35)2025 1546 y Fe +g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(36)2025 1546 y Fe (rl_bind_key_if_unbound)16 b Fa(:)i(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)31 -b Fb(35)2025 1633 y Fe(rl_bind_key_if_unbound_in_map)16 +b Fb(36)2025 1633 y Fe(rl_bind_key_if_unbound_in_map)16 b Fa(:)j(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)30 -b Fb(35)2025 1721 y Fe(rl_bind_key_in_map)10 b Fa(:)17 +b Fb(36)2025 1721 y Fe(rl_bind_key_in_map)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(35)2025 1808 +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(36)2025 1808 y Fe(rl_bind_keyseq)f Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)34 b Fb(36)2025 1896 y Fe(rl_bind_keyseq_if_unbound)9 +h(:)f(:)34 b Fb(37)2025 1896 y Fe(rl_bind_keyseq_if_unbound)9 b Fa(:)18 b(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)23 b Fb(36)2025 1983 y Fe(rl_bind_keyseq_if_unbound_in_m)q +(:)g(:)h(:)23 b Fb(37)2025 1983 y Fe(rl_bind_keyseq_if_unbound_in_m)q (ap)8 b Fa(:)19 b(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)23 -b Fb(36)2025 2070 y Fe(rl_bind_keyseq_in_map)h Fa(:)13 +b Fb(37)2025 2070 y Fe(rl_bind_keyseq_in_map)h Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)34 b Fb(36)2025 2158 y Fe +(:)g(:)g(:)g(:)g(:)34 b Fb(37)2025 2158 y Fe (rl_callback_handler_install)27 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(44)2025 2245 y +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(46)2025 2245 y Fe(rl_callback_handler_remove)6 b Fa(:)19 b(:)13 b(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(45)2025 +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(46)2025 2332 y Fe(rl_callback_read_char)j Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 -b Fb(44)2025 2420 y Fe(rl_callback_sigcleanup)16 b Fa(:)i(:)13 +b Fb(46)2025 2420 y Fe(rl_callback_sigcleanup)16 b Fa(:)i(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)31 b Fb(44)2025 2507 y Fe(rl_check_signals)15 +(:)g(:)g(:)31 b Fb(46)2025 2507 y Fe(rl_check_signals)15 b Fa(:)h(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29 b -Fb(50)2025 2595 y Fe(rl_cleanup_after_signal)14 b Fa(:)k(:)13 +Fb(52)2025 2595 y Fe(rl_cleanup_after_signal)14 b Fa(:)k(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)28 b Fb(50)2025 2682 y Fe(rl_clear_history)15 +(:)h(:)28 b Fb(52)2025 2682 y Fe(rl_clear_history)15 b Fa(:)h(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29 b -Fb(43)2025 2769 y Fe(rl_clear_message)15 b Fa(:)h(:)d(:)g(:)h(:)f(:)g +Fb(45)2025 2769 y Fe(rl_clear_message)15 b Fa(:)h(:)d(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)29 b Fb(39)2025 2857 y Fe(rl_clear_pending_input)16 +g(:)g(:)g(:)h(:)f(:)29 b Fb(40)2025 2857 y Fe(rl_clear_pending_input)16 b Fa(:)i(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)31 b Fb(41)2025 2944 y Fe(rl_clear_signals)15 +(:)g(:)h(:)f(:)g(:)g(:)31 b Fb(42)2025 2944 y Fe(rl_clear_signals)15 b Fa(:)h(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29 b -Fb(51)2025 3031 y Fe(rl_clear_visible_line)24 b Fa(:)13 +Fb(53)2025 3031 y Fe(rl_clear_visible_line)24 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)34 b Fb(39)2025 3119 y Fe(rl_complete)17 -b Fa(:)e(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)31 -b Fb(52,)c(53)2025 3206 y Fe(rl_complete_internal)f Fa(:)13 -b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)36 b Fb(52)2025 3293 y Fe(rl_completion_matches) -24 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(53)2025 3381 y -Fe(rl_completion_mode)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 -b Fb(53)2025 3468 y Fe(rl_copy_keymap)f Fa(:)13 b(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 b Fb(34)2025 3556 y Fe(rl_copy_text)8 -b Fa(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -22 b Fb(40)2025 3643 y Fe(rl_crlf)g Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 -b Fb(39)2025 3730 y Fe(rl_deactivate_mark)10 b Fa(:)17 +(:)g(:)g(:)g(:)g(:)34 b Fb(40)2025 3119 y Fe(rl_complete)10 +b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)25 b Fb(54)2025 3206 y Fe(rl_complete_internal)h +Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)36 b Fb(54)2025 3293 y +Fe(rl_completion_matches)24 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 +b Fb(55)2025 3381 y Fe(rl_completion_mode)10 b Fa(:)17 +b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(55)2025 3468 +y Fe(rl_copy_keymap)f Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)34 b Fb(35)2025 3556 y Fe(rl_copy_text)8 b Fa(:)15 +b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 +b Fb(41)2025 3643 y Fe(rl_crlf)g Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 +b Fb(40)2025 3730 y Fe(rl_deactivate_mark)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(44)2025 3818 +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(45)2025 3818 y Fe(rl_delete_text)f Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)34 b Fb(40)2025 3905 y Fe(rl_deprep_terminal)10 +h(:)f(:)34 b Fb(41)2025 3905 y Fe(rl_deprep_terminal)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(41)2025 +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(43)2025 3992 y Fe(rl_ding)e Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(42)2025 +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(44)2025 4080 y Fe(rl_discard_keymap)12 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)27 b Fb(34)2025 4167 y Fe(rl_display_match_list)d +g(:)g(:)27 b Fb(35)2025 4167 y Fe(rl_display_match_list)d Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(42)2025 4255 y Fe(rl_do_undo)13 +(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(44)2025 4255 y Fe(rl_do_undo)13 b Fa(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)27 b Fb(38)2025 4342 y Fe(rl_echo_signal_char)7 +(:)h(:)27 b Fb(39)2025 4342 y Fe(rl_echo_signal_char)7 b Fa(:)17 b(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(51)2025 +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(52)2025 4429 y Fe(rl_empty_keymap)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)32 b Fb(34)2025 4517 y Fe(rl_end_undo_group)12 +g(:)g(:)g(:)32 b Fb(35)2025 4517 y Fe(rl_end_undo_group)12 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)27 b Fb(38)2025 +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)27 b Fb(39)2025 4604 y Fe(rl_execute_next)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)32 b Fb(41)2025 4691 y Fe(rl_expand_prompt)15 +g(:)g(:)g(:)32 b Fb(42)2025 4691 y Fe(rl_expand_prompt)15 b Fa(:)h(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29 b -Fb(39)2025 4779 y Fe(rl_extend_line_buffer)24 b Fa(:)13 +Fb(41)2025 4779 y Fe(rl_extend_line_buffer)24 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)34 b Fb(42)2025 4866 y Fe +(:)g(:)g(:)g(:)g(:)34 b Fb(44)2025 4866 y Fe (rl_filename_completion_functio)q(n)11 b Fa(:)19 b(:)13 -b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(53)2025 +b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(55)2025 4954 y Fe(rl_forced_update_display)11 b Fa(:)19 b(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)26 b Fb(38)2025 5041 y Fe(rl_free)c Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:) +(:)26 b Fb(40)2025 5041 y Fe(rl_free)c Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 -b Fb(42)2025 5128 y Fe(rl_free_keymap)23 b Fa(:)13 b(:)g(:)g(:)g(:)g(:) +b Fb(43)2025 5128 y Fe(rl_free_keymap)23 b Fa(:)13 b(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 b Fb(34)p eop end -%%Page: 78 82 -TeXDict begin 78 81 bop 150 -116 a Ft(F)-8 b(unction)31 -b(and)f(V)-8 b(ariable)32 b(Index)2370 b(78)150 260 y +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 b Fb(35)p eop end +%%Page: 81 85 +TeXDict begin 81 84 bop 150 -116 a Ft(F)-8 b(unction)31 +b(and)f(V)-8 b(ariable)32 b(Index)2370 b(81)150 260 y Fe(rl_free_line_state)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 -b Fb(50)150 347 y Fe(rl_free_undo_list)12 b Fa(:)17 b(:)c(:)g(:)h(:)f +b Fb(52)150 348 y Fe(rl_free_undo_list)12 b Fa(:)17 b(:)c(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)h(:)26 b Fb(38)150 434 y Fe(rl_function_dumper)10 +g(:)g(:)g(:)g(:)h(:)26 b Fb(39)150 437 y Fe(rl_function_dumper)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(37)150 -521 y Fe(rl_function_of_keyseq)g Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(38)150 +525 y Fe(rl_function_of_keyseq)g Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 -b Fb(37)150 609 y Fe(rl_function_of_keyseq_len)9 b Fa(:)19 +b Fb(38)150 614 y Fe(rl_function_of_keyseq_len)9 b Fa(:)19 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)23 b Fb(37)150 696 y Fe(rl_funmap_names)17 b Fa(:)g(:)c(:)g(:)g(:)g +g(:)23 b Fb(38)150 702 y Fe(rl_funmap_names)17 b Fa(:)g(:)c(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(37)150 783 y Fe(rl_generic_bind)17 +f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(39)150 791 y Fe(rl_generic_bind)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 -b Fb(36)150 870 y Fe(rl_get_keymap)25 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g +b Fb(37)150 879 y Fe(rl_get_keymap)25 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(34)150 957 y +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(35)150 968 y Fe(rl_get_keymap_by_name)24 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 -b Fb(34)150 1045 y Fe(rl_get_keymap_name)10 b Fa(:)17 +b Fb(36)150 1057 y Fe(rl_get_keymap_name)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(34)150 1132 +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(36)150 1145 y Fe(rl_get_screen_size)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -24 b Fb(51)150 1219 y Fe(rl_get_termcap)f Fa(:)13 b(:)g(:)g(:)g(:)h(:)f +24 b Fb(53)150 1234 y Fe(rl_get_termcap)f Fa(:)13 b(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(43)150 1306 y Fe(rl_getc)22 +g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(45)150 1322 y Fe(rl_getc)22 b Fa(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)35 b Fb(40)150 1393 y Fe(rl_initialize)25 +h(:)f(:)g(:)g(:)g(:)35 b Fb(42)150 1411 y Fe(rl_initialize)25 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 -b Fb(42)150 1481 y Fe(rl_insert_completions)24 b Fa(:)13 +b Fb(44)150 1499 y Fe(rl_insert_completions)24 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)33 b Fb(53)150 1568 y Fe(rl_insert_text)23 +(:)g(:)g(:)h(:)f(:)33 b Fb(55)150 1588 y Fe(rl_insert_text)23 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 -b Fb(40)150 1655 y Fe(rl_invoking_keyseqs)7 b Fa(:)17 +b Fb(41)150 1676 y Fe(rl_invoking_keyseqs)7 b Fa(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(37)150 1742 y +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(38)150 1765 y Fe(rl_invoking_keyseqs_in_map)7 b Fa(:)18 b(:)13 b(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(37)150 -1829 y Fe(rl_keep_mark_active)7 b Fa(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(38)150 +1853 y Fe(rl_keep_mark_active)7 b Fa(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -21 b Fb(44)150 1917 y Fe(rl_kill_text)8 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g +21 b Fb(46)150 1942 y Fe(rl_kill_text)8 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(40)150 -2004 y Fe(rl_list_funmap_names)k Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(41)150 +2030 y Fe(rl_list_funmap_names)k Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 -b Fb(37)150 2091 y Fe(rl_macro_bind)25 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g +b Fb(38)150 2119 y Fe(rl_macro_bind)25 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(43)150 2178 y +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(45)150 2207 y Fe(rl_macro_dumper)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)32 b Fb(43)150 2265 y Fe(rl_make_bare_keymap)7 b +g(:)32 b Fb(45)150 2296 y Fe(rl_make_bare_keymap)7 b Fa(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(34)150 -2353 y Fe(rl_make_keymap)i Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(35)150 +2384 y Fe(rl_make_keymap)i Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)34 b Fb(34)150 2440 y Fe(rl_mark_active_p)15 +(:)f(:)g(:)g(:)34 b Fb(35)150 2473 y Fe(rl_mark_active_p)15 b Fa(:)h(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b -Fb(44)150 2527 y Fe(rl_message)13 b Fa(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g +Fb(46)150 2561 y Fe(rl_message)13 b Fa(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(39)150 -2614 y Fe(rl_modifying)8 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(40)150 +2650 y Fe(rl_modifying)8 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(38)150 2701 y Fe(rl_named_function) +(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(40)150 2738 y Fe(rl_named_function) 12 b Fa(:)17 b(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)26 -b Fb(37)150 2789 y Fe(rl_on_new_line)d Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:) +b Fb(38)150 2827 y Fe(rl_on_new_line)d Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(38)150 2876 y Fe +(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(40)150 2915 y Fe (rl_on_new_line_with_prompt)7 b Fa(:)18 b(:)13 b(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(39)150 -2963 y Fe(rl_parse_and_bind)12 b Fa(:)17 b(:)c(:)g(:)h(:)f(:)g(:)g(:)g +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(40)150 +3004 y Fe(rl_parse_and_bind)12 b Fa(:)17 b(:)c(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)26 b Fb(36)150 3050 y Fe(rl_pending_signal)12 +g(:)h(:)26 b Fb(37)150 3092 y Fe(rl_pending_signal)12 b Fa(:)17 b(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(50)150 -3137 y Fe(rl_possible_completions)14 b Fa(:)k(:)13 b(:)h(:)f(:)g(:)g(:) +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(52)150 +3181 y Fe(rl_possible_completions)14 b Fa(:)k(:)13 b(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28 -b Fb(53)150 3225 y Fe(rl_prep_terminal)15 b Fa(:)h(:)e(:)f(:)g(:)g(:)g +b Fb(55)150 3269 y Fe(rl_prep_terminal)15 b Fa(:)h(:)e(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)29 b Fb(41)150 3312 y Fe(rl_push_macro_input)7 +g(:)h(:)f(:)g(:)g(:)29 b Fb(43)150 3358 y Fe(rl_push_macro_input)7 b Fa(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(40)150 -3399 y Fe(rl_read_init_file)12 b Fa(:)17 b(:)c(:)g(:)h(:)f(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(41)150 +3446 y Fe(rl_read_init_file)12 b Fa(:)17 b(:)c(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)26 b Fb(36)150 3486 y Fe(rl_read_key)10 b Fa(:)16 +g(:)h(:)26 b Fb(38)150 3535 y Fe(rl_read_key)10 b Fa(:)16 b(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 -b Fb(40)150 3573 y Fe(rl_redisplay)8 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:) +b Fb(42)150 3623 y Fe(rl_redisplay)8 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(38)150 -3661 y Fe(rl_replace_line)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(40)150 +3712 y Fe(rl_replace_line)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)32 b Fb(42)150 3748 y Fe(rl_reset_after_signal)24 +g(:)g(:)g(:)32 b Fb(43)150 3801 y Fe(rl_reset_after_signal)24 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(50)150 3835 y Fe +(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(52)150 3889 y Fe (rl_reset_line_state)7 b Fa(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 -b Fb(39)150 3922 y Fe(rl_reset_screen_size)26 b Fa(:)13 +b Fb(40)150 3978 y Fe(rl_reset_screen_size)26 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(51)150 4009 y Fe(rl_reset_terminal)12 +(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(53)150 4066 y Fe(rl_reset_terminal)12 b Fa(:)17 b(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(41)150 -4097 y Fe(rl_resize_terminal)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(43)150 +4155 y Fe(rl_resize_terminal)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)24 b Fb(51)150 4184 y Fe(rl_restore_prompt)12 b Fa(:)17 +g(:)24 b Fb(53)150 4243 y Fe(rl_restore_prompt)12 b Fa(:)17 b(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(39)150 -4271 y Fe(rl_restore_state)15 b Fa(:)h(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(41)150 +4332 y Fe(rl_restore_state)15 b Fa(:)h(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)29 b Fb(42)150 4358 y Fe(rl_save_prompt)23 b +g(:)g(:)29 b Fb(43)150 4420 y Fe(rl_save_prompt)23 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 -b Fb(39)150 4445 y Fe(rl_save_state)25 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g +b Fb(41)150 4509 y Fe(rl_save_state)25 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(41)150 4533 y +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(43)150 4597 y Fe(rl_set_key)13 b Fa(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(36)150 4620 y Fe +g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(37)150 4686 y Fe (rl_set_keyboard_input_timeout)17 b Fa(:)h(:)c(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(41)150 4707 y Fe(rl_set_keymap)25 +(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(42)150 4774 y Fe(rl_set_keymap)25 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 -b Fb(34)150 4794 y Fe(rl_set_keymap_name)10 b Fa(:)17 +b Fb(35)150 4863 y Fe(rl_set_keymap_name)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(34)150 4881 +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(36)150 4951 y Fe(rl_set_paren_blink_timeout)7 b Fa(:)18 b(:)13 b(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(43)150 -4969 y Fe(rl_set_prompt)k Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(45)150 +5040 y Fe(rl_set_prompt)k Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)37 b Fb(40)150 5056 y Fe(rl_set_screen_size)10 +g(:)g(:)g(:)g(:)37 b Fb(41)150 5128 y Fe(rl_set_screen_size)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(51)150 -5143 y Fe(rl_set_signals)f Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)34 b Fb(51)2025 260 y Fe(rl_show_char)8 -b Fa(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -22 b Fb(39)2025 348 y Fe(rl_stuff_char)j Fa(:)13 b(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(40)2025 436 y -Fe(rl_tty_set_default_bindings)27 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(41)2025 524 -y Fe(rl_tty_set_echoing)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -24 b Fb(41)2025 613 y Fe(rl_tty_unset_default_bindings)16 -b Fa(:)j(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)30 -b Fb(41)2025 701 y Fe(rl_unbind_command_in_map)11 b Fa(:)19 -b(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)26 b Fb(36)2025 789 y Fe(rl_unbind_function_in_map)9 -b Fa(:)18 b(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)23 b Fb(35)2025 877 y Fe(rl_unbind_key)i Fa(:)13 -b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 -b Fb(35)2025 965 y Fe(rl_unbind_key_in_map)26 b Fa(:)13 +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(53)2025 +260 y Fe(rl_set_signals)f Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)34 b Fb(53)2025 349 y Fe(rl_set_timeout)23 +b Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 +b Fb(42)2025 438 y Fe(rl_show_char)8 b Fa(:)15 b(:)f(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(40)2025 +527 y Fe(rl_stuff_char)j Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)37 b Fb(42)2025 615 y Fe(rl_timeout_remaining)26 +b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)36 b Fb(42)2025 704 y +Fe(rl_trim_arg_from_keyseq)14 b Fa(:)k(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)28 +b Fb(38)2025 793 y Fe(rl_tty_set_default_bindings)f Fa(:)13 +b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 +b Fb(43)2025 882 y Fe(rl_tty_set_echoing)10 b Fa(:)17 +b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(43)2025 971 +y Fe(rl_tty_unset_default_bindings)16 b Fa(:)j(:)13 b(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)30 b Fb(43)2025 1060 y +Fe(rl_unbind_command_in_map)11 b Fa(:)19 b(:)13 b(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 +b Fb(37)2025 1149 y Fe(rl_unbind_function_in_map)9 b +Fa(:)18 b(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)23 b Fb(37)2025 1238 y Fe(rl_unbind_key)i +Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 +b Fb(37)2025 1326 y Fe(rl_unbind_key_in_map)26 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)36 b Fb(35)2025 1053 y Fe +(:)g(:)g(:)h(:)f(:)g(:)36 b Fb(37)2025 1415 y Fe (rl_username_completion_functio)q(n)11 b Fa(:)19 b(:)13 -b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(53)2025 -1142 y Fe(rl_variable_bind)15 b Fa(:)h(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g +b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(55)2025 +1504 y Fe(rl_variable_bind)15 b Fa(:)h(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)29 b Fb(43)2025 1230 y Fe(rl_variable_dumper)10 +h(:)f(:)29 b Fb(45)2025 1593 y Fe(rl_variable_dumper)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(43)2025 -1317 y Fe(rl_variable_value)12 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)h(:)f(:)g +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(45)2025 +1680 y Fe(rl_variable_value)12 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)27 b Fb(43)2021 1573 y Fr(S)2025 1692 y Fe(self-insert)h(\(a,)e +g(:)g(:)27 b Fb(45)2021 1951 y Fr(S)2025 2072 y Fe(self-insert)h(\(a,)e (b,)g(A,)g(1,)g(!,)g(...)q(\))15 b Fa(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)29 b Fb(19)2025 1780 y Fe(set-mark)e(\(C-@\))10 +(:)g(:)g(:)h(:)f(:)29 b Fb(20)2025 2161 y Fe(set-mark)e(\(C-@\))10 b Fa(:)k(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24 -b Fb(23)2025 1868 y Fe(shell-transpose-words)30 b(\(M-C-t\))24 +b Fb(24)2025 2250 y Fe(shell-transpose-words)30 b(\(M-C-t\))24 b Fa(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)37 -b Fb(20)2025 1957 y(sho)n(w-all-if-am)n(biguous)22 b -Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 b Fb(9)2025 -2045 y(sho)n(w-all-if-unmo)r(di\014ed)11 b Fa(:)j(:)f(:)g(:)g(:)h(:)f +b Fb(21)2025 2339 y(sho)n(w-all-if-am)n(biguous)18 b +Fa(:)d(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(10)2025 2428 +y(sho)n(w-all-if-unmo)r(di\014ed)9 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)27 b Fb(9)2025 2133 y(sho)n(w-mo)r(de-in-prompt)15 -b Fa(:)d(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)30 b Fb(9)2025 -2221 y(skip-completed-text)17 b Fa(:)11 b(:)j(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)32 b Fb(9)2025 2309 y Fe(skip-csi-sequence)d(\(\))11 +g(:)24 b Fb(10)2025 2517 y(sho)n(w-mo)r(de-in-prompt)12 +b Fa(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)27 b Fb(10)2025 2606 +y(skip-completed-text)15 b Fa(:)c(:)i(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +29 b Fb(10)2025 2695 y Fe(skip-csi-sequence)g(\(\))11 b Fa(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(23)2025 2397 +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(24)2025 2782 y Fe(start-kbd-macro)j(\(C-x)d(\(\))10 b Fa(:)k(:)f(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)25 -b Fb(22)2021 2652 y Fr(T)2025 2771 y Fe(tab-insert)j(\(M-TAB\))16 +b Fb(23)2021 3052 y Fr(T)2025 3173 y Fe(tab-insert)j(\(M-TAB\))16 b Fa(:)f(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)31 b Fb(19)2025 -2859 y Fe(tilde-expand)d(\(M-~\))16 b Fa(:)f(:)e(:)g(:)g(:)g(:)g(:)h(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)31 b Fb(20)2025 +3262 y Fe(tilde-expand)d(\(M-~\))16 b Fa(:)f(:)e(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)31 b Fb(23)2025 2947 y Fe(transpose-chars)e(\(C-t\))9 +(:)g(:)31 b Fb(24)2025 3351 y Fe(transpose-chars)e(\(C-t\))9 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)23 b Fb(19)2025 3034 y +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)23 b Fb(20)2025 3438 y Fe(transpose-words)29 b(\(M-t\))9 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)23 -b Fb(19)2021 3300 y Fr(U)2025 3419 y Fe(undo)j(\(C-_)h(or)f(C-x)g +b Fb(20)2021 3718 y Fr(U)2025 3839 y Fe(undo)j(\(C-_)h(or)f(C-x)g (C-u\))12 b Fa(:)i(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)27 b Fb(23)2025 -3507 y Fe(universal-argument)i(\(\))9 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)27 b Fb(24)2025 +3928 y Fe(universal-argument)i(\(\))9 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -23 b Fb(21)2025 3595 y Fe(unix-filename-rubout)30 b(\(\))21 +23 b Fb(22)2025 4017 y Fe(unix-filename-rubout)30 b(\(\))21 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)35 b Fb(20)2025 3683 y Fe(unix-line-discard)29 +(:)g(:)g(:)h(:)f(:)35 b Fb(21)2025 4106 y Fe(unix-line-discard)29 b(\(C-u\))22 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(20)2025 3771 +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(21)2025 4195 y Fe(unix-word-rubout)29 b(\(C-w\))6 b Fa(:)14 b(:)g(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 -b Fb(20)2025 3859 y Fe(upcase-word)28 b(\(M-u\))20 b +b Fb(21)2025 4282 y Fe(upcase-word)28 b(\(M-u\))20 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(19)2021 -4124 y Fr(V)2025 4243 y Fb(vi-cmd-mo)r(de-string)18 b +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(20)2021 +4562 y Fr(V)2025 4683 y Fb(vi-cmd-mo)r(de-string)18 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(10)2025 -4331 y Fe(vi-editing-mode)c(\(M-C-j\))22 b Fa(:)13 b(:)g(:)g(:)h(:)f(:) +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(11)2025 +4772 y Fe(vi-editing-mode)c(\(M-C-j\))22 b Fa(:)13 b(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 -b Fb(24)2025 4419 y(vi-ins-mo)r(de-string)8 b Fa(:)13 +b Fb(25)2025 4861 y(vi-ins-mo)r(de-string)8 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(10)2025 -4506 y(visible-stats)11 b Fa(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(11)2025 +4948 y(visible-stats)11 b Fa(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(10)2021 4760 y -Fr(Y)2025 4879 y Fe(yank)g(\(C-y\))21 b Fa(:)13 b(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 b -Fb(21)2025 4968 y Fe(yank-last-arg)28 b(\(M-.)f(or)f(M-_\))10 -b Fa(:)k(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)24 b Fb(18)2025 5056 y Fe(yank-nth-arg)k(\(M-C-y\))11 -b Fa(:)k(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(18)2025 5143 -y Fe(yank-pop)h(\(M-y\))10 b Fa(:)k(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(11)p eop end +%%Page: 82 86 +TeXDict begin 82 85 bop 150 -116 a Ft(F)-8 b(unction)31 +b(and)f(V)-8 b(ariable)32 b(Index)2370 b(82)146 294 y +Fr(Y)150 410 y Fe(yank)27 b(\(C-y\))20 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)24 b Fb(21)p eop end +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b +Fb(22)150 497 y Fe(yank-last-arg)29 b(\(M-.)d(or)g(M-_\))10 +b Fa(:)k(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)24 b Fb(19)150 584 y Fe(yank-nth-arg)k(\(M-C-y\))11 +b Fa(:)k(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(19)150 671 y +Fe(yank-pop)h(\(M-y\))10 b Fa(:)k(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)24 b Fb(22)p eop end %%Trailer userdict /end-hook known{end-hook}if diff --git a/doc/readline_3.ps b/doc/readline_3.ps index 0870adc..91d94ef 100644 --- a/doc/readline_3.ps +++ b/doc/readline_3.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.22.4 -%%CreationDate: Fri Oct 30 10:07:47 2020 +%%CreationDate: Tue Sep 20 10:17:06 2022 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic @@ -344,8 +344,8 @@ le is read, and the k)108 616.8 R 1.459 -.15(ey b)-.1 H 1.159 (re).15 G(xample, placing)-2.65 E(M\255Control\255u: uni)144 698.4 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E(or)108 710.4 Q (C\255Meta\255u: uni)144 722.4 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument) --.18 E(GNU Readline 8.1)72 768 Q(2020 October 29)125.685 E(1)195.395 E 0 -Cg EP +-.18 E(GNU Readline 8.2)72 768 Q(2022 September 19)120.405 E(1)190.115 E +0 Cg EP %%Page: 2 2 %%BeginPageSetup BP @@ -441,7 +441,8 @@ tes should be used to indicate a macro de\214nition.)-.15 F .089 (Unquoted te)108 720 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 -(GNU Readline 8.1)72 768 Q(2020 October 29)125.685 E(2)195.395 E 0 Cg EP +(GNU Readline 8.2)72 768 Q(2022 September 19)120.405 E(2)190.115 E 0 Cg +EP %%Page: 3 3 %%BeginPageSetup BP @@ -480,1225 +481,1302 @@ E 5.043(.A)-.55 G -.25(va)-2.5 G .043(riable may be set in the).25 F F2 (ll other v)-5.468 F .468(alues are equi)-.25 F -.25(va)-.25 G .468 (lent to).25 F F1(Off)2.968 E F0 5.468(.T)C .467(he v)-5.468 F .467 (ariables and their def)-.25 F(ault)-.1 E -.25(va)108 247.2 S(lues are:) -.25 E F1(bell\255style \(audible\))108 264 Q F0 .01 -(Controls what happens when readline w)144 276 R .011 +.25 E F1(acti)108 264 Q -.1(ve)-.1 G.1 E(egion\255start\255color) +-.18 E F0 2.729(As)144 276 S .229(tring v)-2.729 F .229 +(ariable that controls the te)-.25 F .229 +(xt color and background when displaying the te)-.15 F .23 +(xt in the acti)-.15 F -.15(ve)-.25 G(re)144 288 Q 1.527 +(gion \(see the description of)-.15 F F1(enable\255acti)4.026 E -.1(ve) +-.1 G.1 E(egion)-.18 E F0(belo)4.026 E 4.026(w\). This)-.25 F +1.526(string must not tak)4.026 F 4.026(eu)-.1 G 4.026(pa)-4.026 G -.15 +(ny)-4.026 G(ph)144 300 Q .283 +(ysical character positions on the display)-.05 F 2.783(,s)-.65 G 2.784 +(oi)-2.783 G 2.784(ts)-2.784 G .284 +(hould consist only of terminal escape sequences.)-2.784 F .45 +(It is output to the terminal before displaying the te)144 312 R .45 +(xt in the acti)-.15 F .75 -.15(ve r)-.25 H -.15(eg).15 G 2.95 +(ion. This).15 F -.25(va)2.95 G .45(riable is reset to).25 F .378 +(the def)144 324 R .378(ault v)-.1 F .378(alue whene)-.25 F -.15(ve)-.25 +G 2.878(rt).15 G .379(he terminal type changes.)-2.878 F .379(The def) +5.379 F .379(ault v)-.1 F .379(alue is the string that puts the)-.25 F +.655(terminal in standout mode, as obtained from the terminal')144 336 R +3.154(st)-.55 G .654(erminfo description.)-3.154 F 3.154(As)5.654 G .654 +(ample v)-3.154 F(alue)-.25 E(might be)144 348 Q/F3 10/Courier@0 SF +("\\e[01;33m")2.5 E F0(.)A F1(acti)108 360 Q -.1(ve)-.1 G.1 E +(egion\255end\255color)-.18 E F0 3.908(As)144 372 S 1.408(tring v)-3.908 +F 1.408(ariable that "undoes" the ef)-.25 F 1.408(fects of)-.25 F F1 +(acti)3.908 E -.1(ve)-.1 G.1 E(egion\255start\255color)-.18 E F0 +1.409(and restores "normal")3.908 F .216 +(terminal display appearance after displaying te)144 384 R .216 +(xt in the acti)-.15 F .516 -.15(ve r)-.25 H -.15(eg).15 G 2.716 +(ion. This).15 F .216(string must not tak)2.716 F 2.716(eu)-.1 G(p) +-2.716 E(an)144 396 Q 3.737(yp)-.15 G -.05(hy)-3.737 G 1.237 +(sical character positions on the display).05 F 3.737(,s)-.65 G 3.737 +(oi)-3.737 G 3.737(ts)-3.737 G 1.238 +(hould consist only of terminal escape se-)-3.737 F 2.928(quences. It) +144 408 R .428(is output to the terminal after displaying the te)2.928 F +.427(xt in the acti)-.15 F .727 -.15(ve r)-.25 H -.15(eg).15 G 2.927 +(ion. This).15 F -.25(va)2.927 G .427(riable is).25 F .518 +(reset to the def)144 420 R .518(ault v)-.1 F .518(alue whene)-.25 F +-.15(ve)-.25 G 3.018(rt).15 G .518(he terminal type changes.)-3.018 F +.518(The def)5.518 F .518(ault v)-.1 F .518(alue is the string that)-.25 +F .252(restores the terminal from standout mode, as obtained from the t\ +erminal')144 432 R 2.751(st)-.55 G .251(erminfo description.)-2.751 F(A) +5.251 E(sample v)144 444 Q(alue might be)-.25 E F3("\\e[0m)2.5 E F0(".)A +F1(bell\255style \(audible\))108 456 Q F0 .01 +(Controls what happens when readline w)144 468 R .011 (ants to ring the terminal bell.)-.1 F .011(If set to)5.011 F F1(none) 2.511 E F0 2.511(,r)C .011(eadline ne)-2.511 F -.15(ve)-.25 G(r).15 E -.94(rings the bell.)144 288 R .94(If set to)5.94 F F1(visible)3.44 E F0 +.94(rings the bell.)144 480 R .94(If set to)5.94 F F1(visible)3.44 E F0 3.44(,r)C .94(eadline uses a visible bell if one is a)-3.44 F -.25(va) -.2 G 3.44(ilable. If).25 F .94(set to)3.44 F F1(audible)3.44 E F0(,)A -(readline attempts to ring the terminal')144 300 Q 2.5(sb)-.55 G(ell.) --2.5 E F1(bind\255tty\255special\255chars \(On\))108 312 Q F0 .333 -(If set to)144 324 R F1(On)2.833 E F0 .334(\(the def)2.833 F .334 +(readline attempts to ring the terminal')144 492 Q 2.5(sb)-.55 G(ell.) +-2.5 E F1(bind\255tty\255special\255chars \(On\))108 504 Q F0 .333 +(If set to)144 516 R F1(On)2.833 E F0 .334(\(the def)2.833 F .334 (ault\), readline attempts to bind the control characters)-.1 F .334 -(treated specially by the)7.834 F -.1(ke)144 336 S(rnel').1 E 2.5(st) +(treated specially by the)7.834 F -.1(ke)144 528 S(rnel').1 E 2.5(st) -.55 G(erminal dri)-2.5 E -.15(ve)-.25 G 2.5(rt).15 G 2.5(ot)-2.5 G (heir readline equi)-2.5 E -.25(va)-.25 G(lents.).25 E F1 -(blink\255matching\255par)108 348 Q(en \(Off\))-.18 E F0 .21(If set to) -144 360 R F1(On)2.71 E F0 2.71(,r)C .21 +(blink\255matching\255par)108 540 Q(en \(Off\))-.18 E F0 .21(If set to) +144 552 R F1(On)2.71 E F0 2.71(,r)C .21 (eadline attempts to brie\215y mo)-2.71 F .51 -.15(ve t)-.15 H .21 (he cursor to an opening parenthesis when a closing).15 F -(parenthesis is inserted.)144 372 Q F1(color)108 384 Q +(parenthesis is inserted.)144 564 Q F1(color)108 576 Q (ed\255completion\255pr)-.18 E(e\214x \(Off\))-.18 E F0 .515(If set to) -144 396 R F1(On)3.015 E F0 3.015(,w)C .515(hen listing completions, rea\ +144 588 R F1(On)3.015 E F0 3.015(,w)C .515(hen listing completions, rea\ dline displays the common pre\214x of the set of possible)-3.015 F 2.936 -(completions using a dif)144 408 R 2.936(ferent color)-.25 F 7.936(.T) +(completions using a dif)144 600 R 2.936(ferent color)-.25 F 7.936(.T) -.55 G 2.936(he color de\214nitions are tak)-7.936 F 2.935 -(en from the v)-.1 F 2.935(alue of the)-.25 F F1(LS_COLORS)144 420 Q F0 -(en)2.5 E(vironment v)-.4 E(ariable.)-.25 E F1(color)108 432 Q -(ed\255stats \(Off\))-.18 E F0 1.579(If set to)144 444 R F1(On)4.079 E +(en from the v)-.1 F 2.935(alue of the)-.25 F F1(LS_COLORS)144 612 Q F0 +(en)3.076 E .577(vironment v)-.4 F 3.077(ariable. If)-.25 F .577 +(there is a color de\214nition in)3.077 F F1($LS_COLORS)3.077 E F0 .577 +(for the cus-)3.077 F .135(tom suf)144 624 R .135(\214x "readline-color\ +ed-completion-pre\214x", readline uses this color for the common pre\ +\214x in-)-.25 F(stead of its def)144 636 Q(ault.)-.1 E F1(color)108 648 +Q(ed\255stats \(Off\))-.18 E F0 1.579(If set to)144 660 R F1(On)4.079 E F0 4.079(,r)C 1.579(eadline displays possible completions using dif) -4.079 F 1.58(ferent colors to indicate their \214le)-.25 F 2.5 -(type. The)144 456 R(color de\214nitions are tak)2.5 E(en from the v)-.1 +(type. The)144 672 R(color de\214nitions are tak)2.5 E(en from the v)-.1 E(alue of the)-.25 E F1(LS_COLORS)2.5 E F0(en)2.5 E(vironment v)-.4 E -(ariable.)-.25 E F1(comment\255begin \(`)108 468 Q(`#')-.63 E('\))-.63 E -F0 .062(The string that is inserted in)144 480 R F1(vi)2.562 E F0 .062 +(ariable.)-.25 E F1(comment\255begin \(`)108 684 Q(`#')-.63 E('\))-.63 E +F0 .062(The string that is inserted in)144 696 R F1(vi)2.562 E F0 .062 (mode when the)2.562 F F1(insert\255comment)2.562 E F0 .062 (command is e)2.562 F -.15(xe)-.15 G 2.562(cuted. This).15 F(com-)2.562 -E(mand is bound to)144 492 Q F1(M\255#)2.5 E F0(in emacs mode and to)2.5 -E F1(#)2.5 E F0(in vi command mode.)2.5 E F1 -(completion\255display\255width \(\2551\))108 504 Q F0 1.453(The number\ - of screen columns used to display possible matches when performing com\ -pletion.)144 516 R .194(The v)144 528 R .193(alue is ignored if it is l\ -ess than 0 or greater than the terminal screen width.)-.25 F 2.693(Av) +E(mand is bound to)144 708 Q F1(M\255#)2.5 E F0(in emacs mode and to)2.5 +E F1(#)2.5 E F0(in vi command mode.)2.5 E(GNU Readline 8.2)72 768 Q +(2022 September 19)120.405 E(3)190.115 E 0 Cg EP +%%Page: 4 4 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R +(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF +(completion\255display\255width \(\2551\))108 84 Q F0 1.453(The number \ +of screen columns used to display possible matches when performing comp\ +letion.)144 96 R .194(The v)144 108 R .193(alue is ignored if it is les\ +s than 0 or greater than the terminal screen width.)-.25 F 2.693(Av) 5.193 G .193(alue of 0 will)-2.943 F -(cause matches to be displayed one per line.)144 540 Q(The def)5 E -(ault v)-.1 E(alue is \2551.)-.25 E F1(completion\255ignor)108 552 Q -(e\255case \(Off\))-.18 E F0(If set to)144 564 Q F1(On)2.5 E F0 2.5(,r)C +(cause matches to be displayed one per line.)144 120 Q(The def)5 E +(ault v)-.1 E(alue is \2551.)-.25 E F1(completion\255ignor)108 132 Q +(e\255case \(Off\))-.18 E F0(If set to)144 144 Q F1(On)2.5 E F0 2.5(,r)C (eadline performs \214lename matching and completion in a case\255insen\ siti)-2.5 E .3 -.15(ve f)-.25 H(ashion.).05 E F1 -(completion\255map\255case \(Off\))108 576 Q F0 .093(If set to)144 588 R +(completion\255map\255case \(Off\))108 156 Q F0 .093(If set to)144 168 R F1(On)2.593 E F0 2.593(,a)C(nd)-2.593 E F1(completion\255ignor)2.593 E (e\255case)-.18 E F0 .093(is enabled, readline treats h)2.593 F .093 -(yphens \()-.05 F F2A F0 2.593(\)a)C .094(nd underscores)-2.593 F -(\()144 600 Q F2(_)A F0 2.5(\)a)C 2.5(se)-2.5 G(qui)-2.5 E -.25(va)-.25 -G(lent when performing case\255insensiti).25 E .3 -.15(ve \214)-.25 H -(lename matching and completion.).15 E F1(completion\255pr)108 612 Q -(e\214x\255display\255length \(0\))-.18 E F0 .829(The length in charact\ -ers of the common pre\214x of a list of possible completions that is di\ -splayed)144 624 R 1.274(without modi\214cation.)144 636 R 1.274 -(When set to a v)6.274 F 1.274(alue greater than zero, common pre\214x) --.25 F 1.275(es longer than this)-.15 F -.25(va)144 648 S(lue are repla\ -ced with an ellipsis when displaying possible completions.).25 E F1 -(completion\255query\255items \(100\))108 660 Q F0 .53 -(This determines when the user is queried about vie)144 672 R .529 +(yphens \()-.05 F/F2 10/Times-Italic@0 SFA F0 2.593(\)a)C .094 +(nd underscores)-2.593 F(\()144 180 Q F2(_)A F0 2.5(\)a)C 2.5(se)-2.5 G +(qui)-2.5 E -.25(va)-.25 G(lent when performing case\255insensiti).25 E +.3 -.15(ve \214)-.25 H(lename matching and completion.).15 E F1 +(completion\255pr)108 192 Q(e\214x\255display\255length \(0\))-.18 E F0 +.829(The length in characters of the common pre\214x of a list of possi\ +ble completions that is displayed)144 204 R 1.274 +(without modi\214cation.)144 216 R 1.274(When set to a v)6.274 F 1.274 +(alue greater than zero, common pre\214x)-.25 F 1.275 +(es longer than this)-.15 F -.25(va)144 228 S(lue are replaced with an \ +ellipsis when displaying possible completions.).25 E F1 +(completion\255query\255items \(100\))108 240 Q F0 .53 +(This determines when the user is queried about vie)144 252 R .529 (wing the number of possible completions gen-)-.25 F .56(erated by the) -144 684 R F1(possible\255completions)3.06 E F0 3.06(command. It)3.06 F +144 264 R F1(possible\255completions)3.06 E F0 3.06(command. It)3.06 F .561(may be set to an)3.061 F 3.061(yi)-.15 G(nte)-3.061 E .561(ger v) --.15 F .561(alue greater than or)-.25 F .783(equal to zero.)144 696 R +-.15 F .561(alue greater than or)-.25 F .783(equal to zero.)144 276 R .783(If the number of possible completions is greater than or equal to \ -the v)5.783 F .782(alue of this)-.25 F -.25(va)144 708 S .367 +the v)5.783 F .782(alue of this)-.25 F -.25(va)144 288 S .367 (riable, readline will ask whether or not the user wishes to vie).25 F 2.868(wt)-.25 G .368(hem; otherwise the)-2.868 F 2.868(ya)-.15 G .368 -(re simply)-2.868 F(listed on the terminal.)144 720 Q 2.5(An)5 G -2.25 +(re simply)-2.868 F(listed on the terminal.)144 300 Q 2.5(An)5 G -2.25 -.15(eg a)-2.5 H(ti).15 E .3 -.15(ve v)-.25 H (alue causes readline to ne)-.1 E -.15(ve)-.25 G 2.5(ra).15 G(sk.)-2.5 E -(GNU Readline 8.1)72 768 Q(2020 October 29)125.685 E(3)195.395 E 0 Cg EP -%%Page: 4 4 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R -(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF -(con)108 84 Q -.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .613(If set to)144 -96 R F1(On)3.113 E F0 3.113(,r)C .613(eadline will con)-3.113 F -.15(ve) --.4 G .613(rt characters with the eighth bit set to an ASCII k).15 F -.912 -.15(ey s)-.1 H .612(equence by).15 F 1.315(stripping the eighth b\ -it and pre\214xing it with an escape character \(in ef)144 108 R 1.316 -(fect, using escape as the)-.25 F/F2 10/Times-Italic@0 SF .503(meta pr) -144 120 R(e\214x)-.37 E F0 3.003(\). The)B(def)3.003 E .503(ault is)-.1 -F F2(On)3.003 E F0 3.003(,b)C .503(ut readline will set it to)-3.203 F -F2(Of)3.003 E(f)-.18 E F0 .502(if the locale contains eight-bit char) -3.003 F(-)-.2 E(acters.)144 132 Q F1(disable\255completion \(Off\))108 -144 Q F0 .038(If set to)144 156 R F1(On)2.538 E F0 2.538(,r)C .038 -(eadline will inhibit w)-2.538 F .038(ord completion.)-.1 F .038 +F1(con)108 312 Q -.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .613(If set to) +144 324 R F1(On)3.113 E F0 3.113(,r)C .613(eadline will con)-3.113 F +-.15(ve)-.4 G .613(rt characters with the eighth bit set to an ASCII k) +.15 F .912 -.15(ey s)-.1 H .612(equence by).15 F 1.315(stripping the ei\ +ghth bit and pre\214xing it with an escape character \(in ef)144 336 R +1.316(fect, using escape as the)-.25 F F2 .503(meta pr)144 348 R(e\214x) +-.37 E F0 3.003(\). The)B(def)3.003 E .503(ault is)-.1 F F2(On)3.003 E +F0 3.003(,b)C .503(ut readline will set it to)-3.203 F F2(Of)3.003 E(f) +-.18 E F0 .502(if the locale contains eight-bit char)3.003 F(-)-.2 E +3.049(acters. This)144 360 R -.25(va)3.049 G .549 +(riable is dependent on the).25 F F1(LC_CTYPE)3.049 E F0 .549 +(locale cate)3.049 F(gory)-.15 E 3.049(,a)-.65 G .55 +(nd may change if the lo-)-3.049 F(cale is changed.)144 372 Q F1 +(disable\255completion \(Off\))108 384 Q F0 .038(If set to)144 396 R F1 +(On)2.538 E F0 2.538(,r)C .038(eadline will inhibit w)-2.538 F .038 +(ord completion.)-.1 F .038 (Completion characters will be inserted into the)5.038 F(line as if the) -144 168 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F1(self-insert)2.5 E F0 -(.)A F1(echo\255contr)108 180 Q(ol\255characters \(On\))-.18 E F0 1.211 -(When set to)144 192 R F1(On)3.711 E F0 3.711(,o)C 3.711(no)-3.711 G -1.211(perating systems that indicate the)-3.711 F 3.711(ys)-.15 G 1.21 +144 408 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F1(self-insert)2.5 E F0 +(.)A F1(echo\255contr)108 420 Q(ol\255characters \(On\))-.18 E F0 1.21 +(When set to)144 432 R F1(On)3.71 E F0 3.71(,o)C 3.71(no)-3.71 G 1.211 +(perating systems that indicate the)-3.71 F 3.711(ys)-.15 G 1.211 (upport it, readline echoes a character)-3.711 F -(corresponding to a signal generated from the k)144 204 Q -.15(ey)-.1 G -(board.).15 E F1(editing\255mode \(emacs\))108 216 Q F0 .141 -(Controls whether readline be)144 228 R .141(gins with a set of k)-.15 F -.441 -.15(ey b)-.1 H .141(indings similar to).15 F F2(Emacs)2.642 E F0 -(or)2.642 E F2(vi)2.642 E F0(.)A F1(editing\255mode)5.142 E F0 -(can be set to either)144 240 Q F1(emacs)2.5 E F0(or)2.5 E F1(vi)2.5 E -F0(.)A F1(emacs\255mode\255string \(@\))108 252 Q F0 .518(If the)144 264 -R F2(show\255mode\255in\255pr)3.018 E(ompt)-.45 E F0 -.25(va)3.018 G -.517(riable is enabled, this string is displayed immediately before the) +(corresponding to a signal generated from the k)144 444 Q -.15(ey)-.1 G +(board.).15 E F1(editing\255mode \(emacs\))108 456 Q F0 .142 +(Controls whether readline be)144 468 R .141(gins with a set of k)-.15 F +.441 -.15(ey b)-.1 H .141(indings similar to).15 F F2(Emacs)2.641 E F0 +(or)2.641 E F2(vi)2.641 E F0(.)A F1(editing\255mode)5.141 E F0 +(can be set to either)144 480 Q F1(emacs)2.5 E F0(or)2.5 E F1(vi)2.5 E +F0(.)A F1(emacs\255mode\255string \(@\))108 492 Q F0 .517(If the)144 504 +R F2(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0 -.25(va)3.017 G +.518(riable is enabled, this string is displayed immediately before the) .25 F .622 -(last line of the primary prompt when emacs editing mode is acti)144 276 -R -.15(ve)-.25 G 5.622(.T).15 G .622(he v)-5.622 F .622(alue is e)-.25 F -.622(xpanded lik)-.15 F 3.122(ea)-.1 G -.1(ke)144 288 S 3.34(yb)-.05 G -.839(inding, so the standard set of meta- and control pre\214x)-3.34 F -.839(es and backslash escape sequences is)-.15 F -.2(av)144 300 S 2.798 +(last line of the primary prompt when emacs editing mode is acti)144 516 +R -.15(ve)-.25 G 5.622(.T).15 G .622(he v)-5.622 F .621(alue is e)-.25 F +.621(xpanded lik)-.15 F 3.121(ea)-.1 G -.1(ke)144 528 S 3.339(yb)-.05 G +.839(inding, so the standard set of meta- and control pre\214x)-3.339 F +.84(es and backslash escape sequences is)-.15 F -.2(av)144 540 S 2.798 (ailable. Use)-.05 F .298(the \\1 and \\2 escapes to be)2.798 F .298 (gin and end sequences of non-printing characters, which)-.15 F (can be used to embed a terminal control sequence into the mode string.) -144 312 Q F1(enable\255brack)108 324 Q(eted\255paste \(On\))-.1 E F0 -1.222(When set to)144 336 R F1(On)3.721 E F0 3.721(,r)C 1.221 -(eadline will con\214gure the terminal in a w)-3.721 F 1.221 -(ay that will enable it to insert each)-.1 F .353 -(paste into the editing b)144 348 R(uf)-.2 E .353(fer as a single strin\ -g of characters, instead of treating each character as if)-.25 F .544 -(it had been read from the k)144 360 R -.15(ey)-.1 G 3.043(board. This) -.15 F .543(can pre)3.043 F -.15(ve)-.25 G .543 -(nt pasted characters from being interpreted as).15 F(editing commands.) -144 372 Q F1(enable\255k)108 384 Q(eypad \(Off\))-.1 E F0 .892 -(When set to)144 396 R F1(On)3.393 E F0 3.393(,r)C .893 +144 552 Q F1(enable\255acti)108 564 Q -.1(ve)-.1 G.1 E +(egion \(On\))-.18 E F0(The)144 576 Q F2(point)3.245 E F0 .746 +(is the current cursor position, and)3.245 F F2(mark)3.246 E F0 .746 +(refers to a sa)3.246 F -.15(ve)-.2 G 3.246(dc).15 G .746 +(ursor position.)-3.246 F .746(The te)5.746 F .746(xt be-)-.15 F .344 +(tween the point and mark is referred to as the)144 588 R F2 -.37(re) +2.844 G(gion)-.03 E F0 5.344(.W)C .344(hen this v)-5.344 F .344 +(ariable is set to)-.25 F F2(On)2.844 E F0 2.844(,r)C .344(eadline al-) +-2.844 F(lo)144 600 Q .098(ws certain commands to designate the re)-.25 +F .098(gion as)-.15 F F2(active)2.598 E F0 5.098(.W)C .098(hen the re) +-5.098 F .098(gion is acti)-.15 F -.15(ve)-.25 G 2.598(,r).15 G .098 +(eadline high-)-2.598 F .971(lights the te)144 612 R .971(xt in the re) +-.15 F .971(gion using the v)-.15 F .971(alue of the)-.25 F F1(acti)3.47 +E -.1(ve)-.1 G.1 E(egion\255start\255color)-.18 E F0 3.47(,w)C .97 +(hich def)-3.47 F .97(aults to)-.1 F .484 +(the string that enables the terminal')144 624 R 2.985(ss)-.55 G .485 +(tandout mode.)-2.985 F .485(The acti)5.485 F .785 -.15(ve r)-.25 H -.15 +(eg).15 G .485(ion sho).15 F .485(ws the te)-.25 F .485(xt inserted by) +-.15 F(brack)144 636 Q(eted-paste and an)-.1 E 2.5(ym)-.15 G(atching te) +-2.5 E(xt found by incremental and non-incremental history searches.) +-.15 E F1(enable\255brack)108 648 Q(eted\255paste \(On\))-.1 E F0 .841 +(When set to)144 660 R F1(On)3.341 E F0 3.341(,r)C .841(eadline con\214\ +gures the terminal to insert each paste into the editing b)-3.341 F(uf) +-.2 E .84(fer as a)-.25 F .799(single string of characters, instead of \ +treating each character as if it had been read from the k)144 672 R -.15 +(ey)-.1 G(-).15 E 3.159(board. This)144 684 R(pre)3.159 E -.15(ve)-.25 G +.659(nts readline from e).15 F -.15(xe)-.15 G .659(cuting an).15 F 3.158 +(ye)-.15 G .658(diting commands bound to k)-3.158 F .958 -.15(ey s)-.1 H +.658(equences ap-).15 F(pearing in the pasted te)144 696 Q(xt.)-.15 E +(GNU Readline 8.2)72 768 Q(2022 September 19)120.405 E(4)190.115 E 0 Cg +EP +%%Page: 5 5 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R +(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF +(enable\255k)108 84 Q(eypad \(Off\))-.1 E F0 .892(When set to)144 96 R +F1(On)3.393 E F0 3.393(,r)C .893 (eadline will try to enable the application k)-3.393 F -.15(ey)-.1 G .893(pad when it is called.).15 F .893(Some sys-)5.893 F -(tems need this to enable the arro)144 408 Q 2.5(wk)-.25 G -.15(ey)-2.6 -G(s.).15 E F1(enable\255meta\255k)108 420 Q(ey \(On\))-.1 E F0 .64 -(When set to)144 432 R F1(On)3.14 E F0 3.14(,r)C .64 +(tems need this to enable the arro)144 108 Q 2.5(wk)-.25 G -.15(ey)-2.6 +G(s.).15 E F1(enable\255meta\255k)108 120 Q(ey \(On\))-.1 E F0 .64 +(When set to)144 132 R F1(On)3.14 E F0 3.14(,r)C .64 (eadline will try to enable an)-3.14 F 3.14(ym)-.15 G .64 (eta modi\214er k)-3.14 F .94 -.15(ey t)-.1 H .64 -(he terminal claims to support).15 F(when it is called.)144 444 Q +(he terminal claims to support).15 F(when it is called.)144 144 Q (On man)5 E 2.5(yt)-.15 G(erminals, the meta k)-2.5 E .3 -.15(ey i)-.1 H 2.5(su).15 G(sed to send eight-bit characters.)-2.5 E F1 -(expand\255tilde \(Off\))108 456 Q F0(If set to)144 468 Q F1(On)2.5 E F0 +(expand\255tilde \(Off\))108 156 Q F0(If set to)144 168 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\255pr)108 480 Q(eser)-.18 E -.1 -(ve)-.1 G(\255point \(Off\)).1 E F0 .552(If set to)144 492 R F1(On)3.052 +-.15 E(ord completion.)-.1 E F1(history\255pr)108 180 Q(eser)-.18 E -.1 +(ve)-.1 G(\255point \(Off\)).1 E F0 .552(If set to)144 192 R F1(On)3.052 E F0 3.052(,t)C .552(he history code attempts to place point at the sam\ -e location on each history line re-)-3.052 F(trie)144 504 Q -.15(ve)-.25 +e location on each history line re-)-3.052 F(trie)144 204 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(history\255size \(unset\)) -108 516 Q F0 .949(Set the maximum number of history entries sa)144 528 R +108 216 Q F0 .949(Set the maximum number of history entries sa)144 228 R -.15(ve)-.2 G 3.448(di).15 G 3.448(nt)-3.448 G .948(he history list.) -3.448 F .948(If set to zero, an)5.948 F 3.448(ye)-.15 G(xisting)-3.598 -E .482(history entries are deleted and no ne)144 540 R 2.982(we)-.25 G +E .482(history entries are deleted and no ne)144 240 R 2.982(we)-.25 G .483(ntries are sa)-2.982 F -.15(ve)-.2 G 2.983(d. If).15 F .483 (set to a v)2.983 F .483(alue less than zero, the num-)-.25 F .356 -(ber of history entries is not limited.)144 552 R .356(By def)5.356 F +(ber of history entries is not limited.)144 252 R .356(By def)5.356 F .355(ault, the number of history entries is not limited.)-.1 F .355 -(If an)5.355 F .82(attempt is made to set)144 564 R F2(history\255size) -3.32 E F0 .821(to a non-numeric v)3.321 F .821 +(If an)5.355 F .82(attempt is made to set)144 264 R/F2 10/Times-Italic@0 +SF(history\255size)3.32 E F0 .821(to a non-numeric v)3.321 F .821 (alue, the maximum number of history en-)-.25 F -(tries will be set to 500.)144 576 Q F1(horizontal\255scr)108 588 Q -(oll\255mode \(Off\))-.18 E F0 .449(When set to)144 600 R F1(On)2.949 E +(tries will be set to 500.)144 276 Q F1(horizontal\255scr)108 288 Q +(oll\255mode \(Off\))-.18 E F0 .449(When set to)144 300 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 612 R(w)-.25 E 2.5(line. This)144 624 R + ne)144 312 R(w)-.25 E 2.5(line. This)144 324 R (setting is automatically enabled for terminals of height 1.)2.5 E F1 -(input\255meta \(Off\))108 636 Q F0 .367(If set to)144 648 R F1(On)2.867 +(input\255meta \(Off\))108 336 Q F0 .367(If set to)144 348 R F1(On)2.867 E F0 2.867(,r)C .367(eadline will enable eight-bit input \(that is, it \ will not clear the eighth bit in the char)-2.867 F(-)-.2 E .956 -(acters it reads\), re)144 660 R -.05(ga)-.15 G .956 +(acters it reads\), re)144 360 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 672 Q +5.956 F F1(meta\255\215ag)3.457 E F0 .957(is a)3.457 F(synon)144 372 Q .77(ym for this v)-.15 F 3.27(ariable. The)-.25 F(def)3.27 E .77 (ault is)-.1 F F2(Of)3.27 E(f)-.18 E F0 3.27(,b)C .77 (ut readline will set it to)-3.47 F F2(On)3.27 E F0 .77 -(if the locale contains)3.27 F(eight-bit characters.)144 684 Q F1(isear) -108 696 Q(ch\255terminators \(`)-.18 E(`C\255[ C\255J')-.63 E('\))-.63 E -F0 .439(The string of characters that should terminate an incremental s\ -earch without subsequently e)144 708 R -.15(xe)-.15 G(cut-).15 E .935 -(ing the character as a command.)144 720 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(GNU Readline 8.1)72 768 -Q(2020 October 29)125.685 E(4)195.395 E 0 Cg EP -%%Page: 5 5 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R -(Functions Manual)2.5 E(READLINE\(3\))119.855 E(and)144 84 Q/F1 10 -/Times-Italic@0 SF(C\255J)2.5 E F0 -(will terminate an incremental search.)2.5 E/F2 10/Times-Bold@0 SF -.1 -(ke)108 96 S(ymap \(emacs\)).1 E F0 2.323(Set the current readline k)144 -108 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 F1 -2.324(emacs, emacs-standar)4.823 F(d,)-.37 E .782 -(emacs-meta, emacs-ctlx, vi, vi-mo)144 120 R(ve)-.1 E 3.282(,v)-.1 G -(i-command)-3.282 E F0 3.282(,a)C(nd)-3.282 E F1(vi-insert)3.572 E F0(.) -.68 E F1(vi)5.782 E F0 .782(is equi)3.282 F -.25(va)-.25 G .781(lent to) -.25 F F1(vi-command)3.281 E F0(;)A F1(emacs)144 132 Q F0 .682(is equi) -3.182 F -.25(va)-.25 G .682(lent to).25 F F1(emacs-standar)3.182 E(d) +(if the locale contains)3.27 F 1.866(eight-bit characters.)144 384 R +1.866(This v)6.866 F 1.867(ariable is dependent on the)-.25 F F1 +(LC_CTYPE)4.367 E F0 1.867(locale cate)4.367 F(gory)-.15 E 4.367(,a)-.65 +G 1.867(nd may)-4.367 F(change if the locale is changed.)144 396 Q F1 +(isear)108 408 Q(ch\255terminators \(`)-.18 E(`C\255[ C\255J')-.63 E +('\))-.63 E F0 .439(The string of characters that should terminate an i\ +ncremental search without subsequently e)144 420 R -.15(xe)-.15 G(cut-) +.15 E .934(ing the character as a command.)144 432 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(ESC)3.435 E F0(and)144 444 Q F2 +(C\255J)2.5 E F0(will terminate an incremental search.)2.5 E F1 -.1(ke) +108 456 S(ymap \(emacs\)).1 E F0 2.323(Set the current readline k)144 +468 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 .781 +(emacs-meta, emacs-ctlx, vi, vi-mo)144 480 R(ve)-.1 E 3.282(,v)-.1 G +(i-command)-3.282 E F0 3.282(,a)C(nd)-3.282 E F2(vi-insert)3.572 E F0(.) +.68 E F2(vi)5.782 E F0 .782(is equi)3.282 F -.25(va)-.25 G .782(lent to) +.25 F F2(vi-command)3.282 E F0(;)A F2(emacs)144 492 Q F0 .683(is equi) +3.183 F -.25(va)-.25 G .683(lent to).25 F F2(emacs-standar)3.183 E(d) -.37 E F0 5.682(.T)C .682(he def)-5.682 F .682(ault v)-.1 F .682 -(alue is)-.25 F F1(emacs)3.372 E F0 5.683(.T).27 G .683(he v)-5.683 F -.683(alue of)-.25 F F2(editing\255mode)3.183 E F0(also af)144 144 Q -(fects the def)-.25 E(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F2 -.1(ke) -108 156 S(yseq\255timeout \(500\)).1 E F0 .368(Speci\214es the duration) -144 168 R F1 -.37(re)2.867 G(adline).37 E F0 .367(will w)2.867 F .367 -(ait for a character when reading an ambiguous k)-.1 F .667 -.15(ey s) --.1 H(equence).15 E .524(\(one that can form a complete k)144 180 R .824 +(alue is)-.25 F F2(emacs)3.372 E F0 5.682(.T).27 G .682(he v)-5.682 F +.682(alue of)-.25 F F1(editing\255mode)3.182 E F0(also af)144 504 Q +(fects the def)-.25 E(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F1 -.1(ke) +108 516 S(yseq\255timeout \(500\)).1 E F0 .367(Speci\214es the duration) +144 528 R F2 -.37(re)2.867 G(adline).37 E F0 .367(will w)2.867 F .367 +(ait for a character when reading an ambiguous k)-.1 F .668 -.15(ey s) +-.1 H(equence).15 E .525(\(one that can form a complete k)144 540 R .825 -.15(ey s)-.1 H .524(equence using the input read so f).15 F(ar)-.1 E -3.025(,o)-.4 G 3.025(rc)-3.025 G .525(an tak)-3.025 F 3.025(ea)-.1 G -.525(dditional in-)-3.025 F .807(put to complete a longer k)144 192 R +3.024(,o)-.4 G 3.024(rc)-3.024 G .524(an tak)-3.024 F 3.024(ea)-.1 G +.524(dditional in-)-3.024 F .806(put to complete a longer k)144 552 R 1.106 -.15(ey s)-.1 H 3.306(equence\). If).15 F .806(no input is recei) -3.306 F -.15(ve)-.25 G 3.306(dw).15 G .806(ithin the timeout,)-3.306 F -F1 -.37(re)3.306 G(adline).37 E F0(will)3.306 E .906(use the shorter b) -144 204 R .907(ut complete k)-.2 F 1.207 -.15(ey s)-.1 H 3.407 +3.306 F -.15(ve)-.25 G 3.306(dw).15 G .807(ithin the timeout,)-3.306 F +F2 -.37(re)3.307 G(adline).37 E F0(will)3.307 E .907(use the shorter b) +144 564 R .907(ut complete k)-.2 F 1.207 -.15(ey s)-.1 H 3.407 (equence. The).15 F -.25(va)3.407 G .907 -(lue is speci\214ed in milliseconds, so a v).25 F .907(alue of)-.25 F -.05(1000 means that)144 216 R F1 -.37(re)2.55 G(adline).37 E F0 .05 +(lue is speci\214ed in milliseconds, so a v).25 F .906(alue of)-.25 F +.05(1000 means that)144 576 R F2 -.37(re)2.55 G(adline).37 E F0 .05 (will w)2.55 F .05(ait one second for additional input.)-.1 F .05 (If this v)5.05 F .05(ariable is set to a v)-.25 F(alue)-.25 E .051 -(less than or equal to zero, or to a non-numeric v)144 228 R(alue,)-.25 -E F1 -.37(re)2.551 G(adline).37 E F0 .051(will w)2.551 F .051 -(ait until another k)-.1 F .352 -.15(ey i)-.1 H 2.552(sp).15 G(ressed) --2.552 E(to decide which k)144 240 Q .3 -.15(ey s)-.1 H -(equence to complete.).15 E F2(mark\255dir)108 252 Q(ectories \(On\)) --.18 E F0(If set to)144 264 Q F2(On)2.5 E F0 2.5(,c)C +(less than or equal to zero, or to a non-numeric v)144 588 R(alue,)-.25 +E F2 -.37(re)2.551 G(adline).37 E F0 .051(will w)2.551 F .051 +(ait until another k)-.1 F .351 -.15(ey i)-.1 H 2.551(sp).15 G(ressed) +-2.551 E(to decide which k)144 600 Q .3 -.15(ey s)-.1 H +(equence to complete.).15 E F1(mark\255dir)108 612 Q(ectories \(On\)) +-.18 E F0(If set to)144 624 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 F2(mark\255modi\214ed\255lines \(Off\))108 276 Q F0(If set to)144 -288 Q F2(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 F2 -(*)A F0(\).)A F2(mark\255symlink)108 300 Q(ed\255dir)-.1 E -(ectories \(Off\))-.18 E F0 .175(If set to)144 312 R F2(On)2.675 E F0 +.15 E F1(mark\255modi\214ed\255lines \(Off\))108 636 Q F0(If set to)144 +648 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(mark\255symlink)108 660 Q(ed\255dir)-.1 E +(ectories \(Off\))-.18 E F0 .175(If set to)144 672 R F1(On)2.675 E F0 2.675(,c)C .175 (ompleted names which are symbolic links to directories ha)-2.675 F .475 --.15(ve a s)-.2 H .175(lash appended \(sub-).15 F(ject to the v)144 324 -Q(alue of)-.25 E F2(mark\255dir)2.5 E(ectories)-.18 E F0(\).)A F2 -(match\255hidden\255\214les \(On\))108 336 Q F0 .192(This v)144 348 R -.192(ariable, when set to)-.25 F F2(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 .457 -(\214les\) when performing \214lename completion.)144 360 R .456 -(If set to)5.456 F F2(Off)2.956 E F0 2.956(,t)C .456(he leading `.) --2.956 F 2.956('m)-.7 G .456(ust be supplied by the)-2.956 F -(user in the \214lename to be completed.)144 372 Q F2 -(menu\255complete\255display\255pr)108 384 Q(e\214x \(Off\))-.18 E F0 -1.585(If set to)144 396 R F2(On)4.085 E F0 4.085(,m)C 1.585(enu complet\ +-.15(ve a s)-.2 H .175(lash appended \(sub-).15 F(ject to the v)144 684 +Q(alue of)-.25 E F1(mark\255dir)2.5 E(ectories)-.18 E F0(\).)A F1 +(match\255hidden\255\214les \(On\))108 696 Q F0 .193(This v)144 708 R +.193(ariable, when set to)-.25 F F1(On)2.693 E F0 2.693(,c)C .192 +(auses readline to match \214les whose names be)-2.693 F .192 +(gin with a `.)-.15 F 2.692('\()-.7 G(hidden)-2.692 E .456 +(\214les\) when performing \214lename completion.)144 720 R .456 +(If set to)5.456 F F1(Off)2.956 E F0 2.956(,t)C .456(he leading `.) +-2.956 F 2.956('m)-.7 G .457(ust be supplied by the)-2.956 F +(GNU Readline 8.2)72 768 Q(2022 September 19)120.405 E(5)190.115 E 0 Cg +EP +%%Page: 6 6 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R +(Functions Manual)2.5 E(READLINE\(3\))119.855 E +(user in the \214lename to be completed.)144 84 Q/F1 10/Times-Bold@0 SF +(menu\255complete\255display\255pr)108 96 Q(e\214x \(Off\))-.18 E F0 +1.586(If set to)144 108 R F1(On)4.086 E F0 4.086(,m)C 1.585(enu complet\ ion displays the common pre\214x of the list of possible completions) --4.085 F(\(which may be empty\) before c)144 408 Q -(ycling through the list.)-.15 E F2(output\255meta \(Off\))108 420 Q F0 -.507(If set to)144 432 R F2(On)3.007 E F0 3.007(,r)C .507(eadline will \ +-4.086 F(\(which may be empty\) before c)144 120 Q +(ycling through the list.)-.15 E F1(output\255meta \(Off\))108 132 Q F0 +.506(If set to)144 144 R F1(On)3.006 E F0 3.006(,r)C .507(eadline will \ display characters with the eighth bit set directly rather than as a me\ -ta-)-3.007 F(pre\214x)144 444 Q .884(ed escape sequence.)-.15 F .884 -(The def)5.884 F .884(ault is)-.1 F F1(Of)3.384 E(f)-.18 E F0 3.384(,b)C -.884(ut readline will set it to)-3.584 F F1(On)3.384 E F0 .885 -(if the locale contains)3.384 F(eight-bit characters.)144 456 Q F2 -(page\255completions \(On\))108 468 Q F0 .809(If set to)144 480 R F2(On) -3.308 E F0 3.308(,r)C .808(eadline uses an internal)-3.308 F F1(mor) +ta-)-3.006 F(pre\214x)144 156 Q .885(ed escape sequence.)-.15 F .884 +(The def)5.884 F .884(ault is)-.1 F/F2 10/Times-Italic@0 SF(Of)3.384 E +(f)-.18 E F0 3.384(,b)C .884(ut readline will set it to)-3.584 F F2(On) +3.384 E F0 .884(if the locale contains)3.384 F 1.866 +(eight-bit characters.)144 168 R 1.866(This v)6.866 F 1.867 +(ariable is dependent on the)-.25 F F1(LC_CTYPE)4.367 E F0 1.867 +(locale cate)4.367 F(gory)-.15 E 4.367(,a)-.65 G 1.867(nd may)-4.367 F +(change if the locale is changed.)144 180 Q F1 +(page\255completions \(On\))108 192 Q F0 .809(If set to)144 204 R F1(On) +3.308 E F0 3.308(,r)C .808(eadline uses an internal)-3.308 F F2(mor) 3.308 E(e)-.37 E F0(-lik)A 3.308(ep)-.1 G .808 (ager to display a screenful of possible comple-)-3.308 F -(tions at a time.)144 492 Q F2 -(print\255completions\255horizontally \(Off\))108 504 Q F0 .227 -(If set to)144 516 R F2(On)2.727 E F0 2.727(,r)C .227(eadline will disp\ +(tions at a time.)144 216 Q F1 +(print\255completions\255horizontally \(Off\))108 228 Q F0 .227 +(If set to)144 240 R F1(On)2.727 E F0 2.727(,r)C .227(eadline will disp\ lay completions with matches sorted horizontally in alphabetical or) --2.727 F(-)-.2 E(der)144 528 Q 2.5(,r)-.4 G(ather than do)-2.5 E -(wn the screen.)-.25 E F2 -2.29 -.18(re v)108 540 T -(ert\255all\255at\255newline \(Off\)).08 E F0 .699(If set to)144 552 R -F2(On)3.199 E F0 3.199(,r)C .699 +-2.727 F(-)-.2 E(der)144 252 Q 2.5(,r)-.4 G(ather than do)-2.5 E +(wn the screen.)-.25 E F1 -2.29 -.18(re v)108 264 T +(ert\255all\255at\255newline \(Off\)).08 E F0 .699(If set to)144 276 R +F1(On)3.199 E F0 3.199(,r)C .699 (eadline will undo all changes to history lines before returning when) --3.199 F F2(accept\255line)3.198 E F0(is)3.198 E -.15(exe)144 564 S +-3.199 F F1(accept\255line)3.198 E F0(is)3.198 E -.15(exe)144 288 S 2.686(cuted. By).15 F(def)2.686 E .186 (ault, history lines may be modi\214ed and retain indi)-.1 F .186 -(vidual undo lists across calls to)-.25 F F2 -.18(re)144 576 S(adline) -.18 E F0(.)A F2(sho)108 588 Q(w\255all\255if\255ambiguous \(Off\))-.1 E -F0 .304(This alters the def)144 600 R .304(ault beha)-.1 F .304 -(vior of the completion functions.)-.2 F .304(If set to)5.304 F F2(On) +(vidual undo lists across calls to)-.25 F F1 -.18(re)144 300 S(adline) +.18 E F0(.)A F1(sho)108 312 Q(w\255all\255if\255ambiguous \(Off\))-.1 E +F0 .304(This alters the def)144 324 R .304(ault beha)-.1 F .304 +(vior of the completion functions.)-.2 F .304(If set to)5.304 F F1(On) 2.804 E F0 2.803(,w)C .303(ords which ha)-2.903 F .603 -.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 612 R(bell.)144 624 Q F2 -(sho)108 636 Q(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.346 -(This alters the def)144 648 R 5.346(ault beha)-.1 F 5.345 +isted immediately instead of ringing the)144 336 R(bell.)144 348 Q F1 +(sho)108 360 Q(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.346 +(This alters the def)144 372 R 5.346(ault beha)-.1 F 5.345 (vior of the completion functions in a f)-.2 F 5.345(ashion similar to) --.1 F F2(sho)144 660 Q(w\255all\255if\255ambiguous)-.1 E F0 6.69(.I)C -4.19(fs)-6.69 G 1.691(et to)-4.19 F F2(On)4.191 E F0 4.191(,w)C 1.691 +-.1 F F1(sho)144 384 Q(w\255all\255if\255ambiguous)-.1 E F0 6.69(.I)C +4.19(fs)-6.69 G 1.691(et to)-4.19 F F1(On)4.191 E F0 4.191(,w)C 1.691 (ords which ha)-4.291 F 1.991 -.15(ve m)-.2 H 1.691 -(ore than one possible completion).15 F 1.04(without an)144 672 R 3.54 +(ore than one possible completion).15 F 1.04(without an)144 396 R 3.54 (yp)-.15 G 1.039 (ossible partial completion \(the possible completions don')-3.54 F 3.539(ts)-.18 G 1.039(hare a common pre\214x\))-3.539 F(cause the match\ -es to be listed immediately instead of ringing the bell.)144 684 Q F2 -(sho)108 696 Q(w\255mode\255in\255pr)-.1 E(ompt \(Off\))-.18 E F0 1.021 -(If set to)144 708 R F2(On)3.521 E F0 3.521(,a)C 1.022 +es to be listed immediately instead of ringing the bell.)144 408 Q F1 +(sho)108 420 Q(w\255mode\255in\255pr)-.1 E(ompt \(Off\))-.18 E F0 1.021 +(If set to)144 432 R F1(On)3.521 E F0 3.521(,a)C 1.022 (dd a string to the be)-3.521 F 1.022 (ginning of the prompt indicating the editing mode: emacs, vi)-.15 F -(command, or vi insertion.)144 720 Q(The mode strings are user)5 E -(-settable \(e.g.,)-.2 E F1(emacs\255mode\255string)2.5 E F0(\).)A -(GNU Readline 8.1)72 768 Q(2020 October 29)125.685 E(5)195.395 E 0 Cg EP -%%Page: 6 6 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R -(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF -(skip\255completed\255text \(Off\))108 84 Q F0 .095(If set to)144 96 R +(command, or vi insertion.)144 444 Q(The mode strings are user)5 E +(-settable \(e.g.,)-.2 E F2(emacs\255mode\255string)2.5 E F0(\).)A F1 +(skip\255completed\255text \(Off\))108 456 Q F0 .095(If set to)144 468 R F1(On)2.595 E F0 2.595(,t)C .095(his alters the def)-2.595 F .095 (ault completion beha)-.1 F .094 -(vior when inserting a single match into the line.)-.2 F(It')144 108 Q +(vior when inserting a single match into the line.)-.2 F(It')144 480 Q 2.545(so)-.55 G .045(nly acti)-2.545 F .345 -.15(ve w)-.25 H .046 (hen performing completion in the middle of a w).15 F 2.546(ord. If)-.1 F .046(enabled, readline does not)2.546 F 1.394(insert characters from \ -the completion that match characters after point in the w)144 120 R -1.394(ord being com-)-.1 F(pleted, so portions of the w)144 132 Q +the completion that match characters after point in the w)144 492 R +1.394(ord being com-)-.1 F(pleted, so portions of the w)144 504 Q (ord follo)-.1 E(wing the cursor are not duplicated.)-.25 E F1 -(vi\255cmd\255mode\255string \(\(cmd\)\))108 144 Q F0 .517(If the)144 -156 R/F2 10/Times-Italic@0 SF(show\255mode\255in\255pr)3.017 E(ompt)-.45 -E F0 -.25(va)3.017 G .518 -(riable is enabled, this string is displayed immediately before the).25 -F .475(last line of the primary prompt when vi editing mode is acti)144 -168 R .775 -.15(ve a)-.25 H .475(nd in command mode.).15 F .475(The v) -5.475 F(alue)-.25 E .33(is e)144 180 R .33(xpanded lik)-.15 F 2.83(eak) --.1 G .63 -.15(ey b)-2.93 H .33 +(vi\255cmd\255mode\255string \(\(cmd\)\))108 516 Q F0 .517(If the)144 +528 R F2(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0 -.25(va)3.017 G +.518(riable is enabled, this string is displayed immediately before the) +.25 F .475(last line of the primary prompt when vi editing mode is acti) +144 540 R .775 -.15(ve a)-.25 H .475(nd in command mode.).15 F .475 +(The v)5.475 F(alue)-.25 E .33(is e)144 552 R .33(xpanded lik)-.15 F +2.83(eak)-.1 G .63 -.15(ey b)-2.93 H .33 (inding, so the standard set of meta- and control pre\214x).15 F .33 -(es and backslash es-)-.15 F .245(cape sequences is a)144 192 R -.25(va) +(es and backslash es-)-.15 F .245(cape sequences is a)144 564 R -.25(va) -.2 G 2.745(ilable. Use).25 F .244(the \\1 and \\2 escapes to be)2.745 F .244(gin and end sequences of non-printing)-.15 F(characters, which can\ be used to embed a terminal control sequence into the mode string.)144 -204 Q F1(vi\255ins\255mode\255string \(\(ins\)\))108 216 Q F0 .517 -(If the)144 228 R F2(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0 +576 Q F1(vi\255ins\255mode\255string \(\(ins\)\))108 588 Q F0 .517 +(If the)144 600 R F2(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0 -.25(va)3.017 G .518 (riable is enabled, this string is displayed immediately before the).25 F .186(last line of the primary prompt when vi editing mode is acti)144 -240 R .486 -.15(ve a)-.25 H .186(nd in insertion mode.).15 F .186(The v) -5.186 F .186(alue is)-.25 F -.15(ex)144 252 S .923(panded lik).15 F +612 R .486 -.15(ve a)-.25 H .186(nd in insertion mode.).15 F .186(The v) +5.186 F .186(alue is)-.25 F -.15(ex)144 624 S .923(panded lik).15 F 3.423(eak)-.1 G 1.223 -.15(ey b)-3.523 H .924 (inding, so the standard set of meta- and control pre\214x).15 F .924 -(es and backslash es-)-.15 F .245(cape sequences is a)144 264 R -.25(va) +(es and backslash es-)-.15 F .245(cape sequences is a)144 636 R -.25(va) -.2 G 2.745(ilable. Use).25 F .244(the \\1 and \\2 escapes to be)2.745 F .244(gin and end sequences of non-printing)-.15 F(characters, which can\ be used to embed a terminal control sequence into the mode string.)144 -276 Q F1(visible\255stats \(Off\))108 288 Q F0 .846(If set to)144 300 R +648 Q F1(visible\255stats \(Off\))108 660 Q F0 .846(If set to)144 672 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 312 Q F1(Conditional Constructs) -87 328.8 Q F0 .05(Readline implements a f)108 340.8 R .05(acility simil\ +(when listing possible completions.)144 684 Q F1(Conditional Constructs) +87 700.8 Q F0 .05(Readline implements a f)108 712.8 R .05(acility simil\ ar in spirit to the conditional compilation features of the C preproces\ -sor)-.1 F .096(which allo)108 352.8 R .096(ws k)-.25 F .396 -.15(ey b) +sor)-.1 F .096(which allo)108 724.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 364.8 Q -.15(ve)-.25 G 2.5 -(su).15 G(sed.)-2.5 E F1($if)108 381.6 Q F0(The)144 381.6 Q F1($if)2.963 -E F0 .463(construct allo)2.963 F .462(ws bindings to be made based on t\ -he editing mode, the terminal being used,)-.25 F .961 -(or the application using readline.)144 393.6 R .961(The te)5.961 F .961 -(xt of the test, after an)-.15 F 3.462(yc)-.15 G .962 -(omparison operator)-3.462 F 3.462(,e)-.4 G .962(xtends to)-3.612 F(the\ - end of the line; unless otherwise noted, no characters are required to\ - isolate it.)144 405.6 Q F1(mode)144 422.4 Q F0(The)180 422.4 Q F1 +(There are four parser)5.096 F(GNU Readline 8.2)72 768 Q +(2022 September 19)120.405 E(6)190.115 E 0 Cg EP +%%Page: 7 7 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R +(Functions Manual)2.5 E(READLINE\(3\))119.855 E(directi)108 84 Q -.15 +(ve)-.25 G 2.5(su).15 G(sed.)-2.5 E/F1 10/Times-Bold@0 SF($if)108 100.8 +Q F0(The)144 100.8 Q 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 u\ +sed,)-.25 F .961(or the application using readline.)144 112.8 R .961 +(The te)5.961 F .961(xt of the test, after an)-.15 F 3.462(yc)-.15 G +.962(omparison operator)-3.462 F 3.462(,e)-.4 G .962(xtends to)-3.612 F +(the end of the line; unless otherwise noted, no characters are require\ +d to isolate it.)144 124.8 Q F1(mode)144 141.6 Q F0(The)180 141.6 Q 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 434.4 R .565(may be used in conjunction with the)3.065 F +(mode. This)180 153.6 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 446.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 458.4 -Q F1(term)144 475.2 Q F0(The)180 475.2 Q F1(term=)3.196 E F0 .696 +3.065 F .03(set bindings in the)180 165.6 R/F2 10/Times-Italic@0 SF +(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 177.6 Q F1(term)144 194.4 Q F0(The)180 194.4 Q 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 487.2 R +(ey b)-.1 H .697(indings, perhaps to bind).15 F .654(the k)180 206.4 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 499.2 Q F1(=)3.003 +(wo)3.154 G .654(rd on the right side of).1 F(the)180 218.4 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 -511.2 Q F12.5 E F0 5(.T)C(his allo)-5 E(ws)-.25 E F2(sun)2.84 E F0 +230.4 Q F12.5 E F0 5(.T)C(his allo)-5 E(ws)-.25 E F2(sun)2.84 E F0 (to match both)2.74 E F2(sun)2.84 E F0(and)2.74 E F2(sun\255cmd)2.84 E -F0 2.5(,f).77 G(or instance.)-2.5 E F1 -.1(ve)144 528 S(rsion).1 E F0 -(The)180 540 Q F1 -.1(ve)3.109 G(rsion).1 E F0 .608 +F0 2.5(,f).77 G(or instance.)-2.5 E F1 -.1(ve)144 247.2 S(rsion).1 E F0 +(The)180 259.2 Q F1 -.1(ve)3.109 G(rsion).1 E F0 .608 (test may be used to perform comparisons ag)3.109 F .608 -(ainst speci\214c readline v)-.05 F(ersions.)-.15 E(The)180 552 Q F1 -.1 -(ve)2.771 G(rsion).1 E F0 -.15(ex)2.771 G .271 +(ainst speci\214c readline v)-.05 F(ersions.)-.15 E(The)180 271.2 Q F1 +-.1(ve)2.771 G(rsion).1 E F0 -.15(ex)2.771 G .271 (pands to the current readline v).15 F 2.772(ersion. The)-.15 F .272 -(set of comparison operators in-)2.772 F(cludes)180 564 Q F1(=)3.064 E +(set of comparison operators in-)2.772 F(cludes)180 283.2 Q F1(=)3.064 E F0 3.064(,\()C(and)-3.064 E F1(==)3.064 E F0(\),)A F1(!=)3.064 E F0(,)A F1(<=)3.064 E F0(,)A F1(>=)3.064 E F0(,)A F1(<)3.064 E F0 3.064(,a)C(nd) -3.064 E F1(>)3.064 E F0 5.563(.T)C .563(he v)-5.563 F .563 (ersion number supplied on the right side)-.15 F .318 -(of the operator consists of a major v)180 576 R .318(ersion number)-.15 -F 2.818(,a)-.4 G 2.818(no)-2.818 G .318 -(ptional decimal point, and an op-)-2.818 F .101(tional minor v)180 588 -R .101(ersion \(e.g.,)-.15 F F1(7.1)2.601 E F0 .101(\). If the minor v)B -.1(ersion is omitted, it is assumed to be)-.15 F F1(0)2.6 E F0 5.1(.T)C -(he)-5.1 E .06(operator may be separated from the string)180 600 R F1 --.1(ve)2.56 G(rsion).1 E F0 .06(and from the v)2.56 F .06 -(ersion number ar)-.15 F(gument)-.18 E(by whitespace.)180 612 Q F1 -(application)144 628.8 Q F0(The)180 640.8 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 -652.8 R F2 .114(application name)2.614 F F0 2.614(,a)C .114 +(of the operator consists of a major v)180 295.2 R .318(ersion number) +-.15 F 2.818(,a)-.4 G 2.818(no)-2.818 G .318 +(ptional decimal point, and an op-)-2.818 F .101(tional minor v)180 +307.2 R .101(ersion \(e.g.,)-.15 F F1(7.1)2.601 E F0 .101 +(\). If the minor v)B .1(ersion is omitted, it is assumed to be)-.15 F +F1(0)2.6 E F0 5.1(.T)C(he)-5.1 E .06 +(operator may be separated from the string)180 319.2 R F1 -.1(ve)2.56 G +(rsion).1 E F0 .06(and from the v)2.56 F .06(ersion number ar)-.15 F +(gument)-.18 E(by whitespace.)180 331.2 Q F1(application)144 348 Q F0 +(The)180 360 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 +372 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 664.8 R 3.001(alue. This)-.25 F .501(could be used to bind k)3.001 F +180 384 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 676.8 R -.15(Fo)5.396 G 2.896(ri).15 G .396 +.396(ci\214c program.)180 396 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 688.8 -Q(vious w)-.25 E(ord in)-.1 E F1(bash)2.5 E F0(:)A F1($if)180 712.8 Q F0 -(Bash)2.5 E 2.5(#Q)180 724.8 S(uote the current or pre)-2.5 E(vious w) --.25 E(ord)-.1 E(GNU Readline 8.1)72 768 Q(2020 October 29)125.685 E(6) -195.395 E 0 Cg EP -%%Page: 7 7 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R -(Functions Manual)2.5 E(READLINE\(3\))119.855 E -("\\C-xq": "\\eb\\"\\ef\\"")180 84 Q/F1 10/Times-Bold@0 SF($endif)180 96 -Q/F2 10/Times-Italic@0 SF(variable)144 112.8 Q F0(The)180 124.8 Q F2 -(variable)3.777 E F0 1.277(construct pro)3.777 F 1.276 -(vides simple equality tests for readline v)-.15 F 1.276(ariables and v) --.25 F(alues.)-.25 E .079(The permitted comparison operators are)180 -136.8 R F2(=)2.579 E F0(,)A F2(==)2.579 E F0 2.579(,a)C(nd)-2.579 E F2 -(!=)2.579 E F0 5.079(.T)C .079(he v)-5.079 F .08 -(ariable name must be sepa-)-.25 F .98(rated from the comparison operat\ -or by whitespace; the operator may be separated from)180 148.8 R .129 -(the v)180 160.8 R .129(alue on the right hand side by whitespace.)-.25 -F .13(Both string and boolean v)5.129 F .13(ariables may be)-.25 F -(tested. Boolean v)180 172.8 Q(ariables must be tested ag)-.25 E +(ey s)-.1 H .397(equence that quotes the).15 F(current or pre)180 408 Q +(vious w)-.25 E(ord in)-.1 E F1(bash)2.5 E F0(:)A F1($if)180 432 Q F0 +(Bash)2.5 E 2.5(#Q)180 444 S(uote the current or pre)-2.5 E(vious w)-.25 +E(ord)-.1 E("\\C-xq": "\\eb\\"\\ef\\"")180 456 Q F1($endif)180 468 Q F2 +(variable)144 484.8 Q F0(The)180 496.8 Q F2(variable)3.777 E F0 1.277 +(construct pro)3.777 F 1.276(vides simple equality tests for readline v) +-.15 F 1.276(ariables and v)-.25 F(alues.)-.25 E .079 +(The permitted comparison operators are)180 508.8 R F2(=)2.579 E F0(,)A +F2(==)2.579 E F0 2.579(,a)C(nd)-2.579 E F2(!=)2.579 E F0 5.079(.T)C .079 +(he v)-5.079 F .08(ariable name must be sepa-)-.25 F .98(rated from the\ + comparison operator by whitespace; the operator may be separated from) +180 520.8 R .129(the v)180 532.8 R .129 +(alue on the right hand side by whitespace.)-.25 F .13 +(Both string and boolean v)5.129 F .13(ariables may be)-.25 F +(tested. Boolean v)180 544.8 Q(ariables must be tested ag)-.25 E (ainst the v)-.05 E(alues)-.25 E F2(on)2.5 E F0(and)2.5 E F2(of)2.5 E(f) --.18 E F0(.)A F1($endif)108 189.6 Q F0(This command, as seen in the pre) -144 189.6 Q(vious e)-.25 E(xample, terminates an)-.15 E F1($if)2.5 E F0 -(command.)2.5 E F1($else)108 206.4 Q F0(Commands in this branch of the) -144 206.4 Q F1($if)2.5 E F0(directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E +-.18 E F0(.)A F1($endif)108 561.6 Q F0(This command, as seen in the pre) +144 561.6 Q(vious e)-.25 E(xample, terminates an)-.15 E F1($if)2.5 E F0 +(command.)2.5 E F1($else)108 578.4 Q F0(Commands in this branch of the) +144 578.4 Q 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 -223.2 Q F0 .357(This directi)144 235.2 R .657 -.15(ve t)-.25 H(ak).15 E +595.2 Q F0 .357(This directi)144 607.2 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 247.2 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)-.25 E .3 +144 619.2 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(/etc/inputr)2.5 E(c)-.37 E F0(:)A F1 -($include)144 271.2 Q F2(/etc/inputr)5.833 E(c)-.37 E/F3 10.95 -/Times-Bold@0 SF(SEARCHING)72 288 Q F0 1.003(Readline pro)108 300 R +($include)144 643.2 Q F2(/etc/inputr)5.833 E(c)-.37 E/F3 10.95 +/Times-Bold@0 SF(SEARCHING)72 660 Q F0 1.003(Readline pro)108 672 R 1.003(vides commands for searching through the command history for line\ -s containing a speci\214ed)-.15 F 2.5(string. There)108 312 R(are tw)2.5 +s containing a speci\214ed)-.15 F 2.5(string. There)108 684 R(are tw)2.5 E 2.5(os)-.1 G(earch modes:)-2.5 E F2(incr)2.51 E(emental)-.37 E F0(and) 3.01 E F2(non-incr)2.86 E(emental)-.37 E F0(.).51 E .698 -(Incremental searches be)108 328.8 R .698 +(Incremental searches be)108 700.8 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 340.8 R .112 +(search string is typed, readline displays the ne)108 712.8 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 352.8 R 3.045(yc)-.15 G +(incremental search requires only as man)108 724.8 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 364.8 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 376.8 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 -388.8 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 400.8 R +5.544(.T)-.65 G 3.044(os)-6.344 G(earch)-3.044 E(GNU Readline 8.2)72 768 +Q(2022 September 19)120.405 E(7)190.115 E 0 Cg EP +%%Page: 8 8 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R +(Functions Manual)2.5 E(READLINE\(3\))119.855 E(backw)108 84 Q .18 +(ard in the history for a particular string, type)-.1 F/F1 10 +/Times-Bold@0 SF(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 96 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 108 R .6(If that v)5.6 F .6 +(ariable has not been assigned a v)-.25 F .6(alue the)-.25 F/F2 10 +/Times-Italic@0 SF(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 120 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 412.8 Q 2.406 -.8 -(To \214)108 429.6 T .806 +g the search string becomes the current line.)108 132 Q 2.406 -.8 +(To \214)108 148.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 441.6 S .536(rd or forw) +.807(This will search back-)5.806 F -.1(wa)108 160.8 S .536(rd or forw) .1 F .536(ard in the history for the ne)-.1 F .535 (xt line matching the search string typed so f)-.15 F(ar)-.1 E 5.535(.A) -.55 G .835 -.15(ny o)-5.535 H .535(ther k).15 F .835 -.15(ey s)-.1 H (e-).15 E .384 (quence bound to a readline command will terminate the search and e)108 -453.6 R -.15(xe)-.15 G .385(cute that command.).15 F -.15(Fo)5.385 G -2.885(ri).15 G .385(nstance, a)-2.885 F(ne)108 465.6 Q .338 +172.8 R -.15(xe)-.15 G .385(cute that command.).15 F -.15(Fo)5.385 G +2.885(ri).15 G .385(nstance, a)-2.885 F(ne)108 184.8 Q .338 (wline will terminate the search and accept the line, thereby e)-.25 F -.15(xe)-.15 G .337(cuting the command from the history list.).15 F -2.997(Am)108 477.6 S -.15(ove)-2.997 G .497 +2.997(Am)108 196.8 S -.15(ove)-2.997 G .497 (ment command will terminate the search, mak).15 F 2.997(et)-.1 G .497 (he last line found the current line, and be)-2.997 F .498(gin edit-) --.15 F(ing.)108 489.6 Q .567(Non-incremental searches read the entire s\ +-.15 F(ing.)108 208.8 Q .567(Non-incremental searches read the entire s\ earch string before starting to search for matching history lines.)108 -506.4 R(The search string may be typed by the user or be part of the co\ -ntents of the current line.)108 518.4 Q F3(EDITING COMMANDS)72 535.2 Q -F0 1.391(The follo)108 547.2 R 1.391 +225.6 R(The search string may be typed by the user or be part of the co\ +ntents of the current line.)108 237.6 Q/F3 10.95/Times-Bold@0 SF +(EDITING COMMANDS)72 254.4 Q F0 1.391(The follo)108 266.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 559.2 R +3.892(ya)-.15 G(re)-3.892 E 2.5(bound. Command)108 278.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 576 -R .055(wing descriptions,)-.25 F F2(point)2.555 E F0 .055 +(equence are unbound by def).15 E(ault.)-.1 E .055(In the follo)108 +295.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 588 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 +.054(refers to a cursor position)2.554 F(sa)108 307.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 604.8 Q(or Mo)-.25 E(ving)-.1 -E(beginning\255of\255line \(C\255a\))108 616.8 Q F0(Mo)144 628.8 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 640.8 Q F0(Mo)144 652.8 Q .3 -.15 -(ve t)-.15 H 2.5(ot).15 G(he end of the line.)-2.5 E F1 -.25(fo)108 -664.8 S(rward\255char \(C\255f\)).25 E F0(Mo)144 676.8 Q .3 -.15(ve f) --.15 H(orw).15 E(ard a character)-.1 E(.)-.55 E F1 -(backward\255char \(C\255b\))108 688.8 Q F0(Mo)144 700.8 Q .3 -.15(ve b) --.15 H(ack a character).15 E(.)-.55 E(GNU Readline 8.1)72 768 Q -(2020 October 29)125.685 E(7)195.395 E 0 Cg EP -%%Page: 8 8 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R -(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF --.25(fo)108 84 S(rward\255w).25 E(ord \(M\255f\))-.1 E F0(Mo)144 96 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 +2.5 G(gion)-.03 E F0(.)A F1(Commands f)87 324 Q(or Mo)-.25 E(ving)-.1 E +(beginning\255of\255line \(C\255a\))108 336 Q F0(Mo)144 348 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 360 Q F0(Mo)144 372 Q .3 -.15(ve t) +-.15 H 2.5(ot).15 G(he end of the line.)-2.5 E F1 -.25(fo)108 384 S +(rward\255char \(C\255f\)).25 E F0(Mo)144 396 Q .3 -.15(ve f)-.15 H(orw) +.15 E(ard a character)-.1 E(.)-.55 E F1(backward\255char \(C\255b\))108 +408 Q F0(Mo)144 420 Q .3 -.15(ve b)-.15 H(ack a character).15 E(.)-.55 E +F1 -.25(fo)108 432 S(rward\255w).25 E(ord \(M\255f\))-.1 E F0(Mo)144 444 +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 108 Q F1(backward\255w)108 120 Q(ord \(M\255b\)) --.1 E F0(Mo)144 132 Q 1.71 -.15(ve b)-.15 H 1.41 +(ters and digits\).)144 456 Q F1(backward\255w)108 468 Q(ord \(M\255b\)) +-.1 E F0(Mo)144 480 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 144 Q F1(pr)108 156 Q -.15(ev) --.18 G(ious\255scr).15 E(een\255line)-.18 E F0 .89(Attempt to mo)144 168 +(characters \(letters and digits\).)144 492 Q F1(pr)108 504 Q -.15(ev) +-.18 G(ious\255scr).15 E(een\255line)-.18 E F0 .89(Attempt to mo)144 516 R 1.19 -.15(ve p)-.15 H .89(oint to the same ph).15 F .891 (ysical screen column on the pre)-.05 F .891(vious ph)-.25 F .891 -(ysical screen line.)-.05 F .87(This will not ha)144 180 R 1.17 -.15 -(ve t)-.2 H .87(he desired ef).15 F .87 -(fect if the current Readline line does not tak)-.25 F 3.37(eu)-.1 G -3.37(pm)-3.37 G .87(ore than one)-3.37 F(ph)144 192 Q(ysical line or if\ - point is not greater than the length of the prompt plus the screen wid\ -th.)-.05 E F1(next\255scr)108 204 Q(een\255line)-.18 E F0 .637 -(Attempt to mo)144 216 R .937 -.15(ve p)-.15 H .637(oint to the same ph) +(ysical screen line.)-.05 F 1.056(This will not ha)144 528 R 1.356 -.15 +(ve t)-.2 H 1.056(he desired ef).15 F 1.056 +(fect if the current readline line does not tak)-.25 F 3.555(eu)-.1 G +3.555(pm)-3.555 G 1.055(ore than one)-3.555 F(ph)144 540 Q(ysical line \ +or if point is not greater than the length of the prompt plus the scree\ +n width.)-.05 E F1(next\255scr)108 552 Q(een\255line)-.18 E F0 .637 +(Attempt to mo)144 564 R .937 -.15(ve p)-.15 H .637(oint to the same ph) .15 F .638(ysical screen column on the ne)-.05 F .638(xt ph)-.15 F .638 -(ysical screen line. This)-.05 F .009(will not ha)144 228 R .309 -.15 -(ve t)-.2 H .009(he desired ef).15 F .009 -(fect if the current Readline line does not tak)-.25 F 2.509(eu)-.1 G -2.509(pm)-2.509 G .008(ore than one ph)-2.509 F(ysical)-.05 E .772(line\ - or if the length of the current Readline line is not greater than the \ -length of the prompt plus)144 240 R(the screen width.)144 252 Q F1 -(clear\255display \(M\255C\255l\))108 264 Q F0 1.499 -(Clear the screen and, if possible, the terminal')144 276 R 3.999(ss) +(ysical screen line. This)-.05 F .195(will not ha)144 576 R .495 -.15 +(ve t)-.2 H .195(he desired ef).15 F .194 +(fect if the current readline line does not tak)-.25 F 2.694(eu)-.1 G +2.694(pm)-2.694 G .194(ore than one ph)-2.694 F(ysical)-.05 E .164(line\ + or if the length of the current readline line is not greater than the \ +length of the prompt plus the)144 588 R(screen width.)144 600 Q F1 +(clear\255display \(M\255C\255l\))108 612 Q F0 1.499 +(Clear the screen and, if possible, the terminal')144 624 R 3.999(ss) -.55 G 1.498(crollback b)-3.999 F(uf)-.2 E(fer)-.25 E 3.998(,t)-.4 G 1.498(hen redra)-3.998 F 3.998(wt)-.15 G 1.498(he current line,)-3.998 F -(lea)144 288 Q(ving the current line at the top of the screen.)-.2 E F1 -(clear\255scr)108 300 Q(een \(C\255l\))-.18 E F0 1.36 -(Clear the screen, then redra)144 312 R 3.86(wt)-.15 G 1.36 +(lea)144 636 Q(ving the current line at the top of the screen.)-.2 E F1 +(clear\255scr)108 648 Q(een \(C\255l\))-.18 E F0 1.36 +(Clear the screen, then redra)144 660 R 3.86(wt)-.15 G 1.36 (he current line, lea)-3.86 F 1.36 -(ving the current line at the top of the screen.)-.2 F -.4(Wi)144 324 S +(ving the current line at the top of the screen.)-.2 F -.4(Wi)144 672 S (th an ar).4 E (gument, refresh the current line without clearing the screen.)-.18 E F1 --.18(re)108 336 S(draw\255curr).18 E(ent\255line)-.18 E F0 -(Refresh the current line.)144 348 Q F1(Commands f)87 364.8 Q -(or Manipulating the History)-.25 E(accept\255line \(Newline, Retur)108 -376.8 Q(n\))-.15 E F0 .365(Accept the line re)144 388.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 400.8 R F1(add_history\(\))3.24 -E F0 5.741(.I)C 3.241(ft)-5.741 G .741 +-.18(re)108 684 S(draw\255curr).18 E(ent\255line)-.18 E F0 +(Refresh the current line.)144 696 Q(GNU Readline 8.2)72 768 Q +(2022 September 19)120.405 E(8)190.115 E 0 Cg EP +%%Page: 9 9 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R +(Functions Manual)2.5 E(READLINE\(3\))119.855 E/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 .365 +(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 .364(ay be added to the)-2.864 +F .74(history list for future recall with)144 120 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 412.8 Q F1(pr)108 424.8 Q --.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0(Fetch the pre)144 -436.8 Q(vious command from the history list, mo)-.25 E -(ving back in the list.)-.15 E F1(next\255history \(C\255n\))108 448.8 Q -F0(Fetch the ne)144 460.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 472.8 Q F0(Mo)144 484.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 496.8 Q F0(Mo)144 508.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 520.8 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0 -1.471(Search backw)144 532.8 R 1.471 -(ard starting at the current line and mo)-.1 F 1.47 +(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 +(operate\255and\255get\255next \(C\255o\))108 240 Q F0 .733(Accept the \ +current line for return to the calling application as if a ne)144 252 R +.733(wline had been entered, and)-.25 F .367(fetch the ne)144 264 R .367 +(xt line relati)-.15 F .667 -.15(ve t)-.25 H 2.867(ot).15 G .367 +(he current line from the history for editing.)-2.867 F 2.867(An)5.367 G +.367(umeric ar)-2.867 F .368(gument, if)-.18 F(supplied, speci\214es th\ +e history entry to use instead of the current line.)144 276 Q F1 +(fetch\255history)108 288 Q F0 -.4(Wi)144 300 S .257(th a numeric ar).4 +F .257(gument, fetch that entry from the history list and mak)-.18 F +2.756(ei)-.1 G 2.756(tt)-2.756 G .256(he current line.)-2.756 F -.4(Wi) +5.256 G(th-).4 E(out an ar)144 312 Q(gument, mo)-.18 E .3 -.15(ve b)-.15 +H(ack to the \214rst entry in the history list.).15 E F1 -2.29 -.18 +(re v)108 324 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0 +1.47(Search backw)144 336 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 544.8 Q F1 -.25(fo)108 556.8 S -(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.131 -(Search forw)144 568.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 580.8 Q F1 -(non\255incr)108 592.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 604.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 616.8 S -(tring supplied by the user)-2.5 E(.)-.55 E F1(non\255incr)108 628.8 Q -(emental\255f)-.18 E(orward\255sear)-.25 E(ch\255history \(M\255n\))-.18 -E F0 1.353(Search forw)144 640.8 R 1.354(ard through the history using \ -a non-incremental search for a string supplied by the)-.1 F(user)144 -652.8 Q(.)-.55 E F1(history\255sear)108 664.8 Q(ch\255backward)-.18 E F0 -.951(Search backw)144 676.8 R .951(ard through the history for the stri\ -ng of characters between the start of the current)-.1 F .12 -(line and the current cursor position \(the)144 688.8 R/F2 10 -/Times-Italic@0 SF(point)2.62 E F0 2.62(\). The)B .12 +(This is an incremental search.)144 348 Q F1 -.25(fo)108 360 S +(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.132 +(Search forw)144 372 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 384 Q F1(non\255incr)108 +396 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 408 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 420 S(tring supplied by the user)-2.5 E +(.)-.55 E F1(non\255incr)108 432 Q(emental\255f)-.18 E(orward\255sear) +-.25 E(ch\255history \(M\255n\))-.18 E F0 1.354(Search forw)144 444 R +1.354(ard through the history using a non-incremental search for a stri\ +ng supplied by the)-.1 F(user)144 456 Q(.)-.55 E F1(history\255sear)108 +468 Q(ch\255backward)-.18 E F0 .95(Search backw)144 480 R .951(ard thro\ +ugh the history for the string of characters between the start of the c\ +urrent)-.1 F .12(line and the current cursor position \(the)144 492 R/F2 +10/Times-Italic@0 SF(point)2.62 E F0 2.62(\). The)B .12 (search string must match at the be)2.62 F .12(ginning of a)-.15 F -(history line.)144 700.8 Q(This is a non-incremental search.)5 E -(GNU Readline 8.1)72 768 Q(2020 October 29)125.685 E(8)195.395 E 0 Cg EP -%%Page: 9 9 +(history line.)144 504 Q(This is a non-incremental search.)5 E F1 +(history\255sear)108 516 Q(ch\255f)-.18 E(orward)-.25 E F0 .248 +(Search forw)144 528 R .249(ard through the history for the string of c\ +haracters between the start of the current line)-.1 F .036 +(and the point.)144 540 R .036(The search string must match at the be) +5.036 F .035(ginning of a history line.)-.15 F .035 +(This is a non-incre-)5.035 F(mental search.)144 552 Q F1 +(history\255substring\255sear)108 564 Q(ch\255backward)-.18 E F0 .95 +(Search backw)144 576 R .951(ard through the history for the string of \ +characters between the start of the current)-.1 F .007 +(line and the current cursor position \(the)144 588 R F2(point)2.507 E +F0 2.507(\). The)B .007(search string may match an)2.507 F .006 +(ywhere in a history)-.15 F 2.5(line. This)144 600 R +(is a non-incremental search.)2.5 E F1(history\255substring\255sear)108 +612 Q(ch\255f)-.18 E(orward)-.25 E F0 .248(Search forw)144 624 R .249(a\ +rd through the history for the string of characters between the start o\ +f the current line)-.1 F .319(and the point.)144 636 R .319 +(The search string may match an)5.319 F .319(ywhere in a history line.) +-.15 F .318(This is a non-incremental)5.318 F(search.)144 648 Q F1 +(yank\255nth\255ar)108 660 Q 2.5(g\()-.1 G<4dad43ad7929>-2.5 E F0 .622 +(Insert the \214rst ar)144 672 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 .773(at point.)144 684 R -.4(Wi)5.773 G .773 +(th an ar).4 F(gument)-.18 E F2(n)3.633 E F0 3.273(,i).24 G .773 +(nsert the)-3.273 F F2(n)3.273 E F0 .773(th w)B .773(ord from the pre) +-.1 F .773(vious command \(the w)-.25 F .773(ords in the)-.1 F(pre)144 +696 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 .282(the pre)144 708 R .282 +(vious command.)-.25 F .282(Once the ar)5.282 F(gument)-.18 E F2(n)2.781 +E F0 .281(is computed, the ar)2.781 F .281(gument is e)-.18 F .281 +(xtracted as if the "!)-.15 F F2(n)A F0(")A(history e)144 720 Q +(xpansion had been speci\214ed.)-.15 E(GNU Readline 8.2)72 768 Q +(2022 September 19)120.405 E(9)190.115 E 0 Cg EP +%%Page: 10 10 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R (Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF -(history\255sear)108 84 Q(ch\255f)-.18 E(orward)-.25 E F0 .249 -(Search forw)144 96 R .249(ard through the history for the string of ch\ -aracters between the start of the current line)-.1 F .035 -(and the point.)144 108 R .035(The search string must match at the be) -5.035 F .036(ginning of a history line.)-.15 F .036 -(This is a non-incre-)5.036 F(mental search.)144 120 Q F1 -(history\255substring\255sear)108 132 Q(ch\255backward)-.18 E F0 .951 -(Search backw)144 144 R .951(ard through the history for the string of \ -characters between the start of the current)-.1 F .007 -(line and the current cursor position \(the)144 156 R/F2 10 -/Times-Italic@0 SF(point)2.507 E F0 2.507(\). The)B .007 -(search string may match an)2.507 F .007(ywhere in a history)-.15 F 2.5 -(line. This)144 168 R(is a non-incremental search.)2.5 E F1 -(history\255substring\255sear)108 180 Q(ch\255f)-.18 E(orward)-.25 E F0 -.249(Search forw)144 192 R .249(ard through the history for the string \ -of characters between the start of the current line)-.1 F .318 -(and the point.)144 204 R .319(The search string may match an)5.318 F -.319(ywhere in a history line.)-.15 F .319(This is a non-incremental) -5.319 F(search.)144 216 Q F1(yank\255nth\255ar)108 228 Q 2.5(g\()-.1 G -<4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144 240 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 .772(at point.)144 -252 R -.4(Wi)5.773 G .773(th an ar).4 F(gument)-.18 E F2(n)3.633 E F0 -3.273(,i).24 G .773(nsert the)-3.273 F F2(n)3.273 E F0 .773(th w)B .773 -(ord from the pre)-.1 F .773(vious command \(the w)-.25 F .773 -(ords in the)-.1 F(pre)144 264 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 .281(the pre)144 276 R .281(vious command.) --.25 F .281(Once the ar)5.281 F(gument)-.18 E F2(n)2.781 E F0 .281 -(is computed, the ar)2.781 F .281(gument is e)-.18 F .282 -(xtracted as if the "!)-.15 F F2(n)A F0(")A(history e)144 288 Q -(xpansion had been speci\214ed.)-.15 E F1(yank\255last\255ar)108 300 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 312 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 324 S .203(th a numeric ar).4 -F .203(gument, beha)-.18 F .504 -.15(ve ex)-.2 H .204(actly lik).15 F(e) --.1 E F1(yank\255nth\255ar)2.704 E(g)-.1 E F0 5.204(.S)C(uccessi)-5.204 -E .504 -.15(ve c)-.25 H .204(alls to).15 F F1(yank\255last\255ar)2.704 E -(g)-.1 E F0(mo)144 336 Q .807 -.15(ve b)-.15 H .507 -(ack through the history list, inserting the last w).15 F .507 +(yank\255last\255ar)108 84 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 96 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 108 +S .204(th a numeric ar).4 F .204(gument, beha)-.18 F .504 -.15(ve ex)-.2 +H .204(actly lik).15 F(e)-.1 E F1(yank\255nth\255ar)2.704 E(g)-.1 E F0 +5.203(.S)C(uccessi)-5.203 E .503 -.15(ve c)-.25 H .203(alls to).15 F F1 +(yank\255last\255ar)2.703 E(g)-.1 E F0(mo)144 120 Q .806 -.15(ve b)-.15 +H .507(ack through the history list, inserting the last w).15 F .507 (ord \(or the w)-.1 F .507(ord speci\214ed by the ar)-.1 F(gument)-.18 E -.416(to the \214rst call\) of each line in turn.)144 348 R(An)5.416 E +.416(to the \214rst call\) of each line in turn.)144 132 R(An)5.416 E 2.916(yn)-.15 G .416(umeric ar)-2.916 F .416 -(gument supplied to these successi)-.18 F .716 -.15(ve c)-.25 H .416 -(alls de-).15 F 1.218(termines the direction to mo)144 360 R 1.518 -.15 +(gument supplied to these successi)-.18 F .715 -.15(ve c)-.25 H .415 +(alls de-).15 F 1.217(termines the direction to mo)144 144 R 1.518 -.15 (ve t)-.15 H 1.218(hrough the history).15 F 6.218(.A)-.65 G(ne)-2.5 E --.05(ga)-.15 G(ti).05 E 1.517 -.15(ve a)-.25 H -.18(rg).15 G 1.217 +-.05(ga)-.15 G(ti).05 E 1.518 -.15(ve a)-.25 H -.18(rg).15 G 1.218 (ument switches the direction).18 F .494 -(through the history \(back or forw)144 372 R 2.994(ard\). The)-.1 F +(through the history \(back or forw)144 156 R 2.994(ard\). The)-.1 F .494(history e)2.994 F .494(xpansion f)-.15 F .494 -(acilities are used to e)-.1 F .494(xtract the last)-.15 F(ar)144 384 Q +(acilities are used to e)-.1 F .494(xtract the last)-.15 F(ar)144 168 Q (gument, as if the "!$" history e)-.18 E(xpansion had been speci\214ed.) --.15 E F1(operate\255and\255get\255next \(C\255o\))108 396 Q F0 .733(Ac\ -cept the current line for return to the calling application as if a ne) -144 408 R .733(wline had been entered, and)-.25 F .367(fetch the ne)144 -420 R .367(xt line relati)-.15 F .667 -.15(ve t)-.25 H 2.867(ot).15 G -.367(he current line from the history for editing.)-2.867 F 2.867(An) -5.367 G .367(umeric ar)-2.867 F .368(gument, if)-.18 F(supplied, speci\ -\214es the history entry to use instead of the current line.)144 432 Q -F1(Commands f)87 448.8 Q(or Changing T)-.25 E(ext)-.92 E F2 -(end\255of\255\214le)108 460.8 Q F1(\(usually C\255d\))2.5 E F0 .799 -(The character indicating end-of-\214le as set, for e)144 472.8 R .799 -(xample, by)-.15 F/F3 10/Courier@0 SF(stty)3.299 E F0 5.799(.I)C 3.298 -(ft)-5.799 G .798(his character is read when)-3.298 F .592 -(there are no characters on the line, and point is at the be)144 484.8 R -.593(ginning of the line, Readline interprets it)-.15 F -(as the end of input and returns)144 496.8 Q/F4 9/Times-Bold@0 SF(EOF) -2.5 E/F5 9/Times-Roman@0 SF(.)A F1(delete\255char \(C\255d\))108 508.8 Q -F0 .442(Delete the character at point.)144 520.8 R .442 -(If this function is bound to the same character as the tty)5.442 F F1 -(EOF)2.941 E F0(char)2.941 E(-)-.2 E(acter)144 532.8 Q 2.5(,a)-.4 G(s) +-.15 E F1(Commands f)87 184.8 Q(or Changing T)-.25 E(ext)-.92 E/F2 10 +/Times-Italic@0 SF(end\255of\255\214le)108 196.8 Q F1 +(\(usually C\255d\))2.5 E F0 .798 +(The character indicating end-of-\214le as set, for e)144 208.8 R .799 +(xample, by)-.15 F/F3 10/Courier@0 SF(stty)3.299 E F0 5.799(.I)C 3.299 +(ft)-5.799 G .799(his character is read when)-3.299 F .167 +(there are no characters on the line, and point is at the be)144 220.8 R +.167(ginning of the line, readline interprets it as)-.15 F +(the end of input and returns)144 232.8 Q/F4 9/Times-Bold@0 SF(EOF)2.5 E +/F5 9/Times-Roman@0 SF(.)A F1(delete\255char \(C\255d\))108 244.8 Q F0 +.441(Delete the character at point.)144 256.8 R .442 +(If this function is bound to the same character as the tty)5.441 F F1 +(EOF)2.942 E F0(char)2.942 E(-)-.2 E(acter)144 268.8 Q 2.5(,a)-.4 G(s) -2.5 E F1(C\255d)2.5 E F0(commonly is, see abo)2.5 E .3 -.15(ve f)-.15 H (or the ef).15 E(fects.)-.25 E F1(backward\255delete\255char \(Rubout\)) -108 544.8 Q F0 .552(Delete the character behind the cursor)144 556.8 R +108 280.8 Q F0 .553(Delete the character behind the cursor)144 292.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 568.8 Q F1 --.25(fo)108 580.8 S(rward\255backward\255delete\255char).25 E F0 .474 -(Delete the character under the cursor)144 592.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 604.8 Q F1 -(quoted\255insert \(C\255q, C\255v\))108 616.8 Q F0 1.228(Add the ne)144 -628.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 640.8 +(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 304.8 Q F1 +-.25(fo)108 316.8 S(rward\255backward\255delete\255char).25 E F0 .473 +(Delete the character under the cursor)144 328.8 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 340.8 Q F1 +(quoted\255insert \(C\255q, C\255v\))108 352.8 Q F0 1.229(Add the ne)144 +364.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.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 376.8 Q F0 2.5(,f)C(or e)-2.5 E(xample.)-.15 E F1(tab\255insert \(M-T)108 -652.8 Q(AB\))-.9 E F0(Insert a tab character)144 664.8 Q(.)-.55 E F1 -(self\255insert \(a, b, A, 1, !, ...\))108 676.8 Q F0 -(Insert the character typed.)144 688.8 Q F1 -(transpose\255chars \(C\255t\))108 700.8 Q F0 .322 -(Drag the character before point forw)144 712.8 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 +388.8 Q(AB\))-.9 E F0(Insert a tab character)144 400.8 Q(.)-.55 E F1 +(self\255insert \(a, b, A, 1, !, ...\))108 412.8 Q F0 +(Insert the character typed.)144 424.8 Q F1 +(transpose\255chars \(C\255t\))108 436.8 Q F0 .321 +(Drag the character before point forw)144 448.8 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 .372 (If point is at the end of the line, then this transposes the tw)144 -724.8 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(GNU Readline 8.1)72 768 Q -(2020 October 29)125.685 E(9)195.395 E 0 Cg EP -%%Page: 10 10 +460.8 R 2.872(oc)-.1 G .372(haracters before point.)-2.872 F(Ne)5.372 E +-.05(ga)-.15 G(ti).05 E .672 -.15(ve a)-.25 H -.2(r-).15 G(guments ha) +144 472.8 Q .3 -.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E F1 +(transpose\255w)108 484.8 Q(ords \(M\255t\))-.1 E F0 .023(Drag the w)144 +496.8 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 508.8 Q 2.5 +(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 520.8 Q +(ord \(M\255u\))-.1 E F0 1.699(Uppercase the current \(or follo)144 +532.8 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 544.8 S(rd, b).1 +E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(do)108 556.8 Q +(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 568.8 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 580.8 S(rd, b).1 E(ut do not mo)-.2 E .3 +-.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 592.8 Q +(ord \(M\255c\))-.1 E F0 1.975(Capitalize the current \(or follo)144 +604.8 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 616.8 S(rd, b) +.1 E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1 -.1(ove)108 +628.8 S(rwrite\255mode).1 E F0 -.8(To)144 640.8 S .437(ggle o).8 F -.15 +(ve)-.15 G .437(rwrite mode.).15 F -.4(Wi)5.437 G .437(th an e).4 F .437 +(xplicit positi)-.15 F .738 -.15(ve n)-.25 H .438(umeric ar).15 F .438 +(gument, switches to o)-.18 F -.15(ve)-.15 G .438(rwrite mode.).15 F -.4 +(Wi)144 652.8 S .781(th an e).4 F .781(xplicit non-positi)-.15 F 1.081 +-.15(ve n)-.25 H .781(umeric ar).15 F .781 +(gument, switches to insert mode.)-.18 F .78(This command af)5.781 F +(fects)-.25 E(only)144 664.8 Q F1(emacs)4.394 E F0(mode;)4.394 E F1(vi) +4.394 E F0 1.894(mode does o)4.394 F -.15(ve)-.15 G 1.894(rwrite dif).15 +F(ferently)-.25 E 6.894(.E)-.65 G 1.894(ach call to)-6.894 F F2 -.37(re) +4.395 G(adline\(\)).37 E F0 1.895(starts in insert)4.395 F 3.969 +(mode. In)144 676.8 R -.15(ove)3.969 G 1.469 +(rwrite mode, characters bound to).15 F F1(self\255insert)3.969 E F0 +1.468(replace the te)3.969 F 1.468(xt at point rather than)-.15 F .957 +(pushing the te)144 688.8 R .957(xt to the right.)-.15 F .958 +(Characters bound to)5.957 F F1(backward\255delete\255char)3.458 E F0 +.958(replace the character)3.458 F(before point with a space.)144 700.8 +Q(By def)5 E(ault, this command is unbound.)-.1 E(GNU Readline 8.2)72 +768 Q(2022 September 19)120.405 E(10)185.115 E 0 Cg EP +%%Page: 11 11 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R -(Functions Manual)2.5 E(READLINE\(3\))119.855 E(ar)144 84 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 10 -/Times-Bold@0 SF(transpose\255w)108 96 Q(ords \(M\255t\))-.1 E F0 .024 -(Drag the w)144 108 R .024(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.523 -(rt).15 G .023(hat w)-2.523 F .023(ord as well.)-.1 F .023(If point) -5.023 F(is at the end of the line, this transposes the last tw)144 120 Q -2.5(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 132 Q -(ord \(M\255u\))-.1 E F0 1.698(Uppercase the current \(or follo)144 144 -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.999 -.15(ve a)-.25 H -.18(rg).15 G 1.699 -(ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 156 S(rd, b).1 E -(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(do)108 168 Q -(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 180 Q 1.648 -(wercase the current \(or follo)-.25 F 1.648(wing\) w)-.25 F 4.148 -(ord. W)-.1 F 1.647(ith a ne)-.4 F -.05(ga)-.15 G(ti).05 E 1.947 -.15 -(ve a)-.25 H -.18(rg).15 G 1.647(ument, lo).18 F 1.647(wercase the pre) --.25 F(vious)-.25 E -.1(wo)144 192 S(rd, b).1 E(ut do not mo)-.2 E .3 --.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 204 Q -(ord \(M\255c\))-.1 E F0 1.974(Capitalize the current \(or follo)144 216 -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.975 -(ument, capitalize 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 -.1(ove)108 240 -S(rwrite\255mode).1 E F0 -.8(To)144 252 S .438(ggle o).8 F -.15(ve)-.15 -G .438(rwrite mode.).15 F -.4(Wi)5.438 G .438(th an e).4 F .438 -(xplicit positi)-.15 F .737 -.15(ve n)-.25 H .437(umeric ar).15 F .437 -(gument, switches to o)-.18 F -.15(ve)-.15 G .437(rwrite mode.).15 F -.4 -(Wi)144 264 S .78(th an e).4 F .781(xplicit non-positi)-.15 F 1.081 -.15 -(ve n)-.25 H .781(umeric ar).15 F .781(gument, switches to insert mode.) --.18 F .781(This command af)5.781 F(fects)-.25 E(only)144 276 Q F1 -(emacs)4.395 E F0(mode;)4.395 E F1(vi)4.395 E F0 1.894(mode does o)4.395 -F -.15(ve)-.15 G 1.894(rwrite dif).15 F(ferently)-.25 E 6.894(.E)-.65 G -1.894(ach call to)-6.894 F/F2 10/Times-Italic@0 SF -.37(re)4.394 G -(adline\(\)).37 E F0 1.894(starts in insert)4.394 F 3.968(mode. In)144 -288 R -.15(ove)3.968 G 1.468(rwrite mode, characters bound to).15 F F1 -(self\255insert)3.969 E F0 1.469(replace the te)3.969 F 1.469 -(xt at point rather than)-.15 F .958(pushing the te)144 300 R .958 -(xt to the right.)-.15 F .957(Characters bound to)5.958 F F1 -(backward\255delete\255char)3.457 E F0 .957(replace the character)3.457 -F(before point with a space.)144 312 Q(By def)5 E -(ault, this command is unbound.)-.1 E F1(Killing and Y)87 328.8 Q -(anking)-.85 E(kill\255line \(C\255k\))108 340.8 Q F0(Kill the te)144 -352.8 Q(xt from point to the end of the line.)-.15 E F1 -(backward\255kill\255line \(C\255x Rubout\))108 364.8 Q F0(Kill backw) -144 376.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1 -(unix\255line\255discard \(C\255u\))108 388.8 Q F0(Kill backw)144 400.8 -Q(ard from point to the be)-.1 E(ginning of the line.)-.15 E +(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF +(Killing and Y)87 84 Q(anking)-.85 E(kill\255line \(C\255k\))108 96 Q F0 +(Kill the te)144 108 Q(xt from point to the end of the line.)-.15 E F1 +(backward\255kill\255line \(C\255x Rubout\))108 120 Q F0(Kill backw)144 +132 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1 +(unix\255line\255discard \(C\255u\))108 144 Q F0(Kill backw)144 156 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 412.8 Q F0 +-2.5 G(he kill-ring.)-2.5 E F1(kill\255whole\255line)108 168 Q F0 (Kill all characters on the current line, no matter where point is.)144 -424.8 Q F1(kill\255w)108 436.8 Q(ord \(M\255d\))-.1 E F0 1.308 -(Kill from point the end of the current w)144 448.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 460.8 S +180 Q F1(kill\255w)108 192 Q(ord \(M\255d\))-.1 E F0 1.308 +(Kill from point the end of the current w)144 204 R 1.308 +(ord, or if between w)-.1 F 1.308(ords, to the end of the ne)-.1 F 1.307 +(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 216 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 472.8 Q -(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 484.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 496.8 Q -(ord\255rubout \(C\255w\))-.1 E F0 .365(Kill the w)144 508.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 -520.8 Q F1(unix\255\214lename\255rubout)108 532.8 Q F0 .166(Kill the w) -144 544.8 R .166 +(rward\255w).25 E(ord)-.1 E F0(.)A F1(backward\255kill\255w)108 228 Q +(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 240 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 252 Q +(ord\255rubout \(C\255w\))-.1 E F0 .364(Kill the w)144 264 R .364 +(ord behind point, using white space as a w)-.1 F .365(ord boundary)-.1 +F 5.365(.T)-.65 G .365(he killed te)-5.365 F .365(xt is sa)-.15 F -.15 +(ve)-.2 G 2.865(do).15 G 2.865(nt)-2.865 G(he)-2.865 E(kill-ring.)144 +276 Q F1(unix\255\214lename\255rubout)108 288 Q F0 .167(Kill the w)144 +300 R .166 (ord behind point, using white space and the slash character as the w) --.1 F .167(ord boundaries.)-.1 F(The)5.167 E(killed te)144 556.8 Q +-.1 F .166(ord boundaries.)-.1 F(The)5.166 E(killed te)144 312 Q (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(delete\255horizontal\255space \(M\255\\\))108 568.8 Q F0 -(Delete all spaces and tabs around point.)144 580.8 Q F1(kill\255r)108 -592.8 Q(egion)-.18 E F0 .302(Kill the te)144 604.8 R .301 -(xt between the point and)-.15 F F2(mark)2.801 E F0(\(sa)2.801 E -.15 -(ve)-.2 G 2.801(dc).15 G .301(ursor position\).)-2.801 F .301(This te) -5.301 F .301(xt is referred to as the)-.15 F F2 -.37(re)2.801 G(-).37 E -(gion)144 616.8 Q F0(.)A F1(copy\255r)108 628.8 Q(egion\255as\255kill) --.18 E F0(Cop)144 640.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 652.8 Q(ord)-.1 E F0(Cop)144 664.8 Q 4.8(yt) --.1 G 2.3(he w)-4.8 F 2.3(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.301 -(ord boundaries are the same as)-.1 F F1(back-)4.801 E(ward\255w)144 -676.8 Q(ord)-.1 E F0(.)A F1(copy\255f)108 688.8 Q(orward\255w)-.25 E -(ord)-.1 E F0(Cop)144 700.8 Q 4.508(yt)-.1 G 2.008(he w)-4.508 F 2.008 -(ord follo)-.1 F 2.008(wing point to the kill b)-.25 F(uf)-.2 E(fer)-.25 -E 7.007(.T)-.55 G 2.007(he w)-7.007 F 2.007 -(ord boundaries are the same as)-.1 F F1 -.25(fo)4.507 G -.37(r-).25 G -(ward\255w)144 712.8 Q(ord)-.1 E F0(.)A(GNU Readline 8.1)72 768 Q -(2020 October 29)125.685 E(10)190.395 E 0 Cg EP -%%Page: 11 11 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R -(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF -(yank \(C\255y\))108 84 Q F0 -1(Ya)144 96 S +-2.5 E F1(delete\255horizontal\255space \(M\255\\\))108 324 Q F0 +(Delete all spaces and tabs around point.)144 336 Q F1(kill\255r)108 348 +Q(egion)-.18 E F0 .301(Kill the te)144 360 R .301 +(xt between the point and)-.15 F/F2 10/Times-Italic@0 SF(mark)2.801 E F0 +(\(sa)2.801 E -.15(ve)-.2 G 2.801(dc).15 G .301(ursor position\).)-2.801 +F .301(This te)5.301 F .301(xt is referred to as the)-.15 F F2 -.37(re) +2.802 G(-).37 E(gion)144 372 Q F0(.)A F1(copy\255r)108 384 Q +(egion\255as\255kill)-.18 E F0(Cop)144 396 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 408 Q(ord)-.1 E F0(Cop)144 420 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 432 Q +(ord)-.1 E F0(.)A F1(copy\255f)108 444 Q(orward\255w)-.25 E(ord)-.1 E F0 +(Cop)144 456 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 468 Q(ord)-.1 E F0(.)A F1 +(yank \(C\255y\))108 480 Q F0 -1(Ya)144 492 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 108 Q F0 -(Rotate the kill ring, and yank the ne)144 120 Q 2.5(wt)-.25 G 2.5 +E F1(yank\255pop \(M\255y\))108 504 Q F0 +(Rotate the kill ring, and yank the ne)144 516 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 136.8 Q -(guments)-.1 E(digit\255ar)108 148.8 Q +F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 532.8 Q +(guments)-.1 E(digit\255ar)108 544.8 Q (gument \(M\2550, M\2551, ..., M\255\255\))-.1 E F0 .367 -(Add this digit to the ar)144 160.8 R .367 +(Add this digit to the ar)144 556.8 R .367 (gument already accumulating, or start a ne)-.18 F 2.867(wa)-.25 G -.18 -(rg)-2.867 G 2.867(ument. M\255\255).18 F .367(starts a ne)2.867 F -.05 -(ga)-.15 G(-).05 E(ti)144 172.8 Q .3 -.15(ve a)-.25 H -.18(rg).15 G -(ument.).18 E F1(uni)108 184.8 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 -E F0 .779(This is another w)144 196.8 R .779(ay to specify an ar)-.1 F -3.279(gument. If)-.18 F .779(this command is follo)3.279 F .778 +(rg)-2.867 G 2.867(ument. M\255\255).18 F .366(starts a ne)2.867 F -.05 +(ga)-.15 G(-).05 E(ti)144 568.8 Q .3 -.15(ve a)-.25 H -.18(rg).15 G +(ument.).18 E F1(uni)108 580.8 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 +E F0 .778(This is another w)144 592.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 -208.8 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144 -220.8 Q 1.17(wed by digits, e)-.25 F -.15(xe)-.15 G(cuting).15 E F1(uni) +604.8 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144 +616.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 .898(wise ignored.)144 232.8 R .898 -(As a special case, if this command is immediately follo)5.898 F .898 +-.2 F(-)-.2 E .899(wise ignored.)144 628.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 244.8 R .243 +(neither a digit or minus sign, the ar)144 640.8 R .243 (gument count for the ne)-.18 F .243(xt command is multiplied by four) --.15 F 5.242(.T)-.55 G(he)-5.242 E(ar)144 256.8 Q .378 +-.15 F 5.243(.T)-.55 G(he)-5.243 E(ar)144 652.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 268.8 Q 2.5(,as)-.4 G(econd time mak) +.378(gument count)-.18 F(four)144 664.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 285.6 Q(complete \(T)108 297.6 Q(AB\))-.9 E F0 .682 -(Attempt to perform completion on the te)144 309.6 R .681 -(xt before point.)-.15 F .681(The actual completion performed is ap-) -5.681 F(plication-speci\214c.)144 321.6 Q F1(Bash)6.243 E F0 3.743(,f)C -1.244(or instance, attempts completion treating the te)-3.743 F 1.244 -(xt as a v)-.15 F 1.244(ariable \(if the)-.25 F(te)144 333.6 Q .657 -(xt be)-.15 F .657(gins with)-.15 F F1($)3.156 E F0 .656 +(Completing)87 681.6 Q(complete \(T)108 693.6 Q(AB\))-.9 E F0 .681 +(Attempt to perform completion on the te)144 705.6 R .681 +(xt before point.)-.15 F .682(The actual completion performed is ap-) +5.682 F(plication-speci\214c.)144 717.6 Q F1(Bash)6.244 E F0 3.744(,f)C +1.244(or instance, attempts completion treating the te)-3.744 F 1.244 +(xt as a v)-.15 F 1.243(ariable \(if the)-.25 F(te)144 729.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.156 E F0 .656(\), or)B .929 -(command \(including aliases and functions\) in turn.)144 345.6 R .93 -(If none of these produces a match, \214lename)5.929 F 1.274 -(completion is attempted.)144 357.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 369.6 S(riab\ -les, and only attempts \214lename completion under certain circumstance\ -s.).25 E F1(possible\255completions \(M\255?\))108 381.6 Q F0 .261 -(List the possible completions of the te)144 393.6 R .262 -(xt before point.)-.15 F .262 -(When displaying completions, readline sets)5.262 F 1.002 -(the number of columns used for display to the v)144 405.6 R 1.002 -(alue of)-.25 F F1(completion-display-width)3.502 E F0 3.502(,t)C 1.002 -(he v)-3.502 F 1.002(alue of)-.25 F(the en)144 417.6 Q(vironment v)-.4 E +(gins with)-.15 F F1(@)3.157 E F0 .657(\), or)B(GNU Readline 8.2)72 768 +Q(2022 September 19)120.405 E(11)185.115 E 0 Cg EP +%%Page: 12 12 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R +(Functions Manual)2.5 E(READLINE\(3\))119.855 E .93 +(command \(including aliases and functions\) in turn.)144 84 R .929 +(If none of these produces a match, \214lename)5.929 F 1.273 +(completion is attempted.)144 96 R/F1 10/Times-Bold@0 SF(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 108 S(riable\ +s, and only attempts \214lename completion under certain circumstances.) +.25 E F1(possible\255completions \(M\255?\))108 120 Q F0 .262 +(List the possible completions of the te)144 132 R .262 +(xt before point.)-.15 F .261 +(When displaying completions, readline sets)5.261 F 1.002 +(the number of columns used for display to the v)144 144 R 1.002 +(alue of)-.25 F F1(completion-display-width)3.502 E F0 3.502(,t)C 1.003 +(he v)-3.502 F 1.003(alue of)-.25 F(the en)144 156 Q(vironment v)-.4 E (ariable)-.25 E/F2 9/Times-Bold@0 SF(COLUMNS)2.5 E/F3 9/Times-Roman@0 SF (,)A F0(or the screen width, in that order)2.25 E(.)-.55 E F1 -(insert\255completions \(M\255*\))108 429.6 Q F0 .783 -(Insert all completions of the te)144 441.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.283 E(pletions)144 -453.6 Q F0(.)A F1(menu\255complete)108 465.6 Q F0 .929(Similar to)144 -477.6 R F1(complete)3.429 E F0 3.429(,b)C .929(ut replaces the w)-3.629 -F .929(ord to be completed with a single match from the list of)-.1 F -1.193(possible completions.)144 489.6 R 1.193(Repeated e)6.193 F -.15 -(xe)-.15 G 1.193(cution of).15 F F1(menu\255complete)3.694 E F0 1.194 -(steps through the list of possible)3.694 F .829 -(completions, inserting each match in turn.)144 501.6 R .828 +(insert\255completions \(M\255*\))108 168 Q F0 .783 +(Insert all completions of the te)144 180 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 192 Q F0(.)A F1 +(menu\255complete)108 204 Q F0 .928(Similar to)144 216 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 228 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 240 R .828 (At the end of the list of completions, the bell is rung)5.828 F .727 -(\(subject to the setting of)144 513.6 R F1(bell\255style)3.227 E F0 -3.227(\)a)C .727(nd the original te)-3.227 F .727(xt is restored.)-.15 F -.727(An ar)5.727 F .727(gument of)-.18 F/F4 10/Times-Italic@0 SF(n)3.227 -E F0(mo)3.227 E -.15(ve)-.15 G(s).15 E F4(n)3.228 E F0 1.73 -(positions forw)144 525.6 R 1.73(ard in the list of matches; a ne)-.1 F +(\(subject to the setting of)144 252 R F1(bell\255style)3.227 E F0 3.227 +(\)a)C .727(nd the original te)-3.227 F .727(xt is restored.)-.15 F .727 +(An ar)5.727 F .727(gument of)-.18 F/F4 10/Times-Italic@0 SF(n)3.227 E +F0(mo)3.227 E -.15(ve)-.15 G(s).15 E F4(n)3.227 E F0 1.73 +(positions forw)144 264 R 1.73(ard in the list of matches; a ne)-.1 F -.05(ga)-.15 G(ti).05 E 2.03 -.15(ve a)-.25 H -.18(rg).15 G 1.73 (ument may be used to mo).18 F 2.03 -.15(ve b)-.15 H(ackw).15 E(ard)-.1 -E(through the list.)144 537.6 Q(This command is intended to be bound to) -5 E F1 -.9(TA)2.5 G(B).9 E F0 2.5(,b)C(ut is unbound by def)-2.7 E -(ault.)-.1 E F1(menu\255complete\255backward)108 549.6 Q F0 .82 -(Identical to)144 561.6 R F1(menu\255complete)3.32 E F0 3.32(,b)C .82 -(ut mo)-3.52 F -.15(ve)-.15 G 3.32(sb).15 G(ackw)-3.32 E .82 +E(through the list.)144 276 Q(This command is intended to be bound to)5 +E F1 -.9(TA)2.5 G(B).9 E F0 2.5(,b)C(ut is unbound by def)-2.7 E(ault.) +-.1 E F1(menu\255complete\255backward)108 288 Q F0 .82(Identical to)144 +300 R F1(menu\255complete)3.32 E F0 3.32(,b)C .82(ut mo)-3.52 F -.15(ve) +-.15 G 3.32(sb).15 G(ackw)-3.32 E .82 (ard through the list of possible completions, as if)-.1 F F1 -(menu\255complete)144 573.6 Q F0(had been gi)2.5 E -.15(ve)-.25 G 2.5 -(nan).15 G -2.25 -.15(eg a)-2.5 H(ti).15 E .3 -.15(ve a)-.25 H -.18(rg) -.15 G 2.5(ument. This).18 F(command is unbound by def)2.5 E(ault.)-.1 E -F1(delete\255char\255or\255list)108 585.6 Q F0 .374 -(Deletes the character under the cursor if not at the be)144 597.6 R -.373(ginning or end of the line \(lik)-.15 F(e)-.1 E F1(delete-char) -2.873 E F0(\).)A(If at the end of the line, beha)144 609.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 626.4 S(yboard Macr).25 E(os)-.18 E(start\255kbd\255macr) -108 638.4 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)).833 E F0(Be)144 650.4 Q +(menu\255complete)144 312 Q F0(had been gi)2.5 E -.15(ve)-.25 G 2.5(nan) +.15 G -2.25 -.15(eg a)-2.5 H(ti).15 E .3 -.15(ve a)-.25 H -.18(rg).15 G +2.5(ument. This).18 F(command is unbound by def)2.5 E(ault.)-.1 E F1 +(delete\255char\255or\255list)108 324 Q F0 .373 +(Deletes the character under the cursor if not at the be)144 336 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 348 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 364.8 S(yboard Macr).25 E(os)-.18 E(start\255kbd\255macr)108 +376.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)).833 E F0(Be)144 388.8 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 662.4 Q 2.5(o\() --.18 G(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 674.4 Q +(ey)-.1 G(board macro.).15 E F1(end\255kbd\255macr)108 400.8 Q 2.5(o\() +-.18 G(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 412.8 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 686.4 Q 2.5(o\()-.18 G(C\255x e\))-2.5 -E F0(Re-e)144 698.4 Q -.15(xe)-.15 G .999(cute the last k).15 F -.15(ey) --.1 G .999(board macro de\214ned, by making the characters in the macro\ - appear as if).15 F(typed at the k)144 710.4 Q -.15(ey)-.1 G(board.).15 -E(GNU Readline 8.1)72 768 Q(2020 October 29)125.685 E(11)190.395 E 0 Cg -EP -%%Page: 12 12 +(call\255last\255kbd\255macr)108 424.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5 +E F0(Re-e)144 436.8 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 448.8 Q -.15(ey)-.1 G(board.).15 E F1 +(print\255last\255kbd\255macr)108 460.8 Q 2.5(o\()-.18 G(\))-2.5 E F0 +(Print the last k)144 472.8 Q -.15(ey)-.1 G +(board macro de\214ned in a format suitable for the).15 E F4(inputr)2.5 +E(c)-.37 E F0(\214le.)2.5 E F1(Miscellaneous)87 489.6 Q -.18(re)108 +501.6 S.18 E(ead\255init\255\214le \(C\255x C\255r\))-.18 E F0 +1.776(Read in the contents of the)144 513.6 R F4(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 +525.6 Q F1(abort \(C\255g\))108 537.6 Q F0 3.249 +(Abort the current editing command and ring the terminal')144 549.6 R +5.748(sb)-.55 G 3.248(ell \(subject to the setting of)-5.748 F F1 +(bell\255style)144 561.6 Q F0(\).)A F1(do\255lo)108 573.6 Q(wer)-.1 E +(case\255v)-.18 E(ersion \(M\255A, M\255B, M\255)-.1 E F4(x)A F1 2.5(,.) +C(..\))-2.5 E F0 1.738(If the meta\214ed character)144 585.6 R F4(x) +4.238 E F0 1.739 +(is uppercase, run the command that is bound to the corresponding)4.238 +F(meta\214ed lo)144 597.6 Q(wercase character)-.25 E 5(.T)-.55 G +(he beha)-5 E(vior is unde\214ned if)-.2 E F4(x)2.5 E F0(is already lo) +2.5 E(wercase.)-.25 E F1(pr)108 609.6 Q(e\214x\255meta \(ESC\))-.18 E F0 +(Metafy the ne)144 621.6 Q(xt character typed.)-.15 E F2(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 633.6 Q F0 +(Incremental undo, separately remembered for each line.)144 645.6 Q F1 +-2.29 -.18(re v)108 657.6 T(ert\255line \(M\255r\)).08 E F0 .231 +(Undo all changes made to this line.)144 669.6 R .231(This is lik)5.231 +F 2.731(ee)-.1 G -.15(xe)-2.881 G .23(cuting the).15 F F1(undo)2.73 E F0 +.23(command enough times to re-)2.73 F +(turn the line to its initial state.)144 681.6 Q F1 +(tilde\255expand \(M\255&\))108 693.6 Q F0(Perform tilde e)144 705.6 Q +(xpansion on the current w)-.15 E(ord.)-.1 E(GNU Readline 8.2)72 768 Q +(2022 September 19)120.405 E(12)185.115 E 0 Cg EP +%%Page: 13 13 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R (Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF -(print\255last\255kbd\255macr)108 84 Q 2.5(o\()-.18 G(\))-2.5 E F0 -(Print the last k)144 96 Q -.15(ey)-.1 G -(board macro de\214ned in a format suitable for the).15 E/F2 10 -/Times-Italic@0 SF(inputr)2.5 E(c)-.37 E F0(\214le.)2.5 E F1 -(Miscellaneous)87 112.8 Q -.18(re)108 124.8 S.18 E -(ead\255init\255\214le \(C\255x C\255r\))-.18 E F0 1.777 -(Read in the contents of the)144 136.8 R F2(inputr)4.277 E(c)-.37 E F0 -1.776(\214le, and incorporate an)4.276 F 4.276(yb)-.15 G 1.776 -(indings or v)-4.276 F 1.776(ariable assignments)-.25 F(found there.)144 -148.8 Q F1(abort \(C\255g\))108 160.8 Q F0 3.248 -(Abort the current editing command and ring the terminal')144 172.8 R -5.749(sb)-.55 G 3.249(ell \(subject to the setting of)-5.749 F F1 -(bell\255style)144 184.8 Q F0(\).)A F1(do\255lo)108 196.8 Q(wer)-.1 E -(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.739(If the meta\214ed character)144 208.8 R F2(x) -4.239 E F0 1.739 -(is uppercase, run the command that is bound to the corresponding)4.239 -F(meta\214ed lo)144 220.8 Q(wercase character)-.25 E 5(.T)-.55 G -(he beha)-5 E(vior is unde\214ned if)-.2 E F2(x)2.5 E F0(is already lo) -2.5 E(wercase.)-.25 E F1(pr)108 232.8 Q(e\214x\255meta \(ESC\))-.18 E F0 -(Metafy the ne)144 244.8 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 256.8 Q F0 -(Incremental undo, separately remembered for each line.)144 268.8 Q F1 --2.29 -.18(re v)108 280.8 T(ert\255line \(M\255r\)).08 E F0 .23 -(Undo all changes made to this line.)144 292.8 R .231(This is lik)5.23 F -2.731(ee)-.1 G -.15(xe)-2.881 G .231(cuting the).15 F F1(undo)2.731 E F0 -.231(command enough times to re-)2.731 F -(turn the line to its initial state.)144 304.8 Q F1 -(tilde\255expand \(M\255&\))108 316.8 Q F0(Perform tilde e)144 328.8 Q -(xpansion on the current w)-.15 E(ord.)-.1 E F1 -(set\255mark \(C\255@, M\255\))108 340.8 Q F0 -(Set the mark to the point.)144 352.8 Q(If a numeric ar)5 E +(set\255mark \(C\255@, M\255\))108 84 Q F0 +(Set the mark to the point.)144 96 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 364.8 Q F0(Sw) -144 376.8 Q .283(ap the point with the mark.)-.1 F .283 +(exchange\255point\255and\255mark \(C\255x C\255x\))108 108 Q F0(Sw)144 +120 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.782(dp).15 G .282(osition, and the old)-2.782 F(cursor position is sa) -144 388.8 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 400.8 Q(ch \(C\255]\))-.18 E F0 3.035(Ac)144 -412.8 S .535(haracter is read and point is mo)-3.035 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.536(.A)-.55 G(ne)-2.5 E -.05 -(ga)-.15 G(ti).05 E .836 -.15(ve c)-.25 H(ount).15 E(searches for pre) -144 424.8 Q(vious occurrences.)-.25 E F1(character\255sear)108 436.8 Q -(ch\255backward \(M\255C\255]\))-.18 E F0 3.544(Ac)144 448.8 S 1.044 -(haracter is read and point is mo)-3.544 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.043(.A)-.55 G(ne)-2.5 E --.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G -(count searches for subsequent occurrences.)144 460.8 Q F1 -(skip\255csi\255sequence)108 472.8 Q F0 1.826 -(Read enough characters to consume a multi-k)144 484.8 R 2.126 -.15 -(ey s)-.1 H 1.827(equence such as those de\214ned for k).15 F -.15(ey) --.1 G 4.327(sl).15 G(ik)-4.327 E(e)-.1 E .791(Home and End.)144 496.8 R -.791(Such sequences be)5.791 F .791 +2.783(dp).15 G .283(osition, and the old)-2.783 F(cursor position is sa) +144 132 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 144 Q(ch \(C\255]\))-.18 E F0 3.112(Ac)144 156 S +.612(haracter is read and point is mo)-3.112 F -.15(ve)-.15 G 3.112(dt) +.15 G 3.112(ot)-3.112 G .612(he ne)-3.112 F .612 +(xt occurrence of that character)-.15 F 5.611(.A)-.55 G(ne)-2.5 E -.05 +(ga)-.15 G(ti).05 E .911 -.15(ve a)-.25 H -.18(rg).15 G(u-).18 E +(ment searches for pre)144 168 Q(vious occurrences.)-.25 E F1 +(character\255sear)108 180 Q(ch\255backward \(M\255C\255]\))-.18 E F0 +2.694(Ac)144 192 S .194(haracter is read and point is mo)-2.694 F -.15 +(ve)-.15 G 2.694(dt).15 G 2.694(ot)-2.694 G .194(he pre)-2.694 F .194 +(vious occurrence of that character)-.25 F 5.194(.A)-.55 G(ne)-2.499 E +-.05(ga)-.15 G(ti).05 E .495 -.15(ve a)-.25 H -.2(r-).15 G +(gument searches for subsequent occurrences.)144 204 Q F1 +(skip\255csi\255sequence)108 216 Q F0 1.827 +(Read enough characters to consume a multi-k)144 228 R 2.126 -.15(ey s) +-.1 H 1.826(equence such as those de\214ned for k).15 F -.15(ey)-.1 G +4.326(sl).15 G(ik)-4.326 E(e)-.1 E .79(Home and End.)144 240 R .791 +(Such sequences be)5.79 F .791 (gin with a Control Sequence Indicator \(CSI\), usually ESC\255[.)-.15 F -.331(If this sequence is bound to "\\[", k)144 508.8 R -.15(ey)-.1 G -2.831(sp).15 G .331(roducing such sequences will ha)-2.831 F .632 -.15 -(ve n)-.2 H 2.832(oe).15 G -.25(ff)-2.832 G .332(ect unless e).25 F -(xplic-)-.15 E .026(itly bound to a readline command, instead of insert\ -ing stray characters into the editing b)144 520.8 R(uf)-.2 E(fer)-.25 E -5.026(.T)-.55 G(his)-5.026 E(is unbound by def)144 532.8 Q(ault, b)-.1 E +.332(If this sequence is bound to "\\[", k)144 252 R -.15(ey)-.1 G 2.831 +(sp).15 G .331(roducing such sequences will ha)-2.831 F .631 -.15(ve n) +-.2 H 2.831(oe).15 G -.25(ff)-2.831 G .331(ect unless e).25 F(xplic-) +-.15 E .026(itly bound to a readline command, instead of inserting stra\ +y characters into the editing b)144 264 R(uf)-.2 E(fer)-.25 E 5.026(.T) +-.55 G(his)-5.026 E(is unbound by def)144 276 Q(ault, b)-.1 E (ut usually bound to ESC\255[.)-.2 E F1(insert\255comment \(M\255#\))108 -544.8 Q F0 -.4(Wi)144 556.8 S .48(thout a numeric ar).4 F .48 +288 Q F0 -.4(Wi)144 300 S .481(thout a numeric ar).4 F .481 (gument, the v)-.18 F .481(alue of the readline)-.25 F F1 -(comment\255begin)2.981 E F0 -.25(va)2.981 G .481 -(riable is inserted at the).25 F(be)144 568.8 Q .245 -(ginning of the current line.)-.15 F .245(If a numeric ar)5.245 F .244 -(gument is supplied, this command acts as a toggle: if)-.18 F .321 -(the characters at the be)144 580.8 R .321 +(comment\255begin)2.981 E F0 -.25(va)2.981 G .48 +(riable is inserted at the).25 F(be)144 312 Q .244 +(ginning of the current line.)-.15 F .245(If a numeric ar)5.244 F .245 +(gument is supplied, this command acts as a toggle: if)-.18 F .322 +(the characters at the be)144 324 R .321 (ginning of the line do not match the v)-.15 F .321(alue of)-.25 F F1 -(comment\255begin)2.821 E F0 2.822(,t)C .322(he v)-2.822 F .322(alue is) --.25 F 1.014(inserted, otherwise the characters in)144 592.8 R F1 -(comment-begin)3.514 E F0 1.014(are deleted from the be)3.514 F 1.013 -(ginning of the line.)-.15 F 1.468 -(In either case, the line is accepted as if a ne)144 604.8 R 1.468 -(wline had been typed.)-.25 F 1.469(The def)6.469 F 1.469(ault v)-.1 F -1.469(alue of)-.25 F F1(com-)3.969 E(ment\255begin)144 616.8 Q F0(mak) -2.983 E .483(es the current line a shell comment.)-.1 F .483 -(If a numeric ar)5.483 F .482(gument causes the comment)-.18 F -(character to be remo)144 628.8 Q -.15(ve)-.15 G(d, the line will be e) -.15 E -.15(xe)-.15 G(cuted by the shell.).15 E F1(dump\255functions)108 -640.8 Q F0 .626(Print all of the functions and their k)144 652.8 R .926 --.15(ey b)-.1 H .627(indings to the readline output stream.).15 F .627 -(If a numeric ar)5.627 F(gu-)-.18 E -(ment is supplied, the output is formatted in such a w)144 664.8 Q +(comment\255begin)2.821 E F0 2.821(,t)C .321(he v)-2.821 F .321(alue is) +-.25 F 1.013(inserted, otherwise the characters in)144 336 R F1 +(comment-begin)3.514 E F0 1.014(are deleted from the be)3.514 F 1.014 +(ginning of the line.)-.15 F 1.469 +(In either case, the line is accepted as if a ne)144 348 R 1.468 +(wline had been typed.)-.25 F 1.468(The def)6.468 F 1.468(ault v)-.1 F +1.468(alue of)-.25 F F1(com-)3.968 E(ment\255begin)144 360 Q F0(mak) +2.982 E .483(es the current line a shell comment.)-.1 F .483 +(If a numeric ar)5.483 F .483(gument causes the comment)-.18 F +(character to be remo)144 372 Q -.15(ve)-.15 G(d, the line will be e).15 +E -.15(xe)-.15 G(cuted by the shell.).15 E F1(dump\255functions)108 384 +Q F0 .627(Print all of the functions and their k)144 396 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 408 Q +(ay that it can be made part of an)-.1 E/F2 10/Times-Italic@0 SF(inputr) +2.5 E(c)-.37 E F0(\214le.)2.5 E F1(dump\255v)108 420 Q(ariables)-.1 E F0 +.283(Print all of the settable v)144 432 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 444 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 676.8 Q(ariables)-.1 E F0 .283 -(Print all of the settable v)144 688.8 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 700.8 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(GNU Readline 8.1)72 768 Q(2020 October 29)125.685 E(12) -190.395 E 0 Cg EP -%%Page: 13 13 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R -(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF -(dump\255macr)108 84 Q(os)-.18 E F0 .592(Print all of the readline k)144 -96 R .892 -.15(ey s)-.1 H .592 -(equences bound to macros and the strings the).15 F 3.093(yo)-.15 G -3.093(utput. If)-3.093 F 3.093(an)3.093 G(umeric)-3.093 E(ar)144 108 Q +(\214le.)2.5 E F1(dump\255macr)108 456 Q(os)-.18 E F0 .593 +(Print all of the readline k)144 468 R .893 -.15(ey s)-.1 H .592 +(equences bound to macros and the strings the).15 F 3.092(yo)-.15 G +3.092(utput. If)-3.092 F 3.092(an)3.092 G(umeric)-3.092 E(ar)144 480 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 10/Times-Italic@0 SF(inputr) -3.027 E(c)-.37 E F0(\214le.)144 120 Q F1 -(emacs\255editing\255mode \(C\255e\))108 132 Q F0(When in)144 144 Q F1 -(vi)2.5 E F0(command 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 156 -Q F0(When in)144 168 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/F3 10.95/Times-Bold@0 SF(DEF)72 184.8 Q -.548(AU) --.986 G 2.014 -1.007(LT K).548 H(EY BINDINGS)1.007 E F0 .064(The follo) -108 196.8 R .064(wing is a list of the def)-.25 F .064 -(ault emacs and vi bindings.)-.1 F .065 -(Characters with the eighth bit set are written as)5.065 F .527 -(M\255, and are referred to as)108 208.8 R F2(meta\214ed) +(ay that it can be made part of an)-.1 F F2(inputr)3.028 E(c)-.37 E F0 +(\214le.)144 492 Q F1(emacs\255editing\255mode \(C\255e\))108 504 Q F0 +(When in)144 516 Q F1(vi)2.5 E F0(command 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 528 Q F0(When in)144 540 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/F3 10.95/Times-Bold@0 SF(DEF)72 556.8 Q -.548(AU) +-.986 G 2.014 -1.007(LT K).548 H(EY BINDINGS)1.007 E F0 .065(The follo) +108 568.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 .527 +(M\255, and are referred to as)108 580.8 R F2(meta\214ed) 3.407 E F0 3.027(characters. The)3.797 F .527 -(printable ASCII characters not mentioned)3.027 F 1.115 -(in the list of emacs standard bindings are bound to the)108 220.8 R F1 -(self\255insert)3.615 E F0 1.116(function, which just inserts the gi) +(printable ASCII characters not mentioned)3.027 F 1.116 +(in the list of emacs standard bindings are bound to the)108 592.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 -232.8 R .945(In vi insertion mode, all characters not speci\214cally me\ -ntioned are bound to)5.945 F F1(self\255insert)108 244.8 Q F0 5.337(.C)C -.337(haracters assigned to signal generation by)-5.337 F F2(stty)3.177 E -F0 .338(\(1\) or the terminal dri).32 F -.15(ve)-.25 G 1.138 -.4(r, s) -.15 H .338(uch as C-Z or C-C,).4 F .188(retain that function.)108 256.8 -R .188(Upper and lo)5.188 F .188(wer case meta\214ed characters are bou\ -nd to the same function in the emacs)-.25 F .304(mode meta k)108 268.8 R --.15(ey)-.1 G 2.804(map. The).15 F .305(remaining characters are unboun\ -d, which causes readline to ring the bell \(subject)2.804 F -(to the setting of the)108 280.8 Q F1(bell\255style)2.5 E F0 -.25(va)2.5 -G(riable\).).25 E F1(Emacs Mode)87 297.6 Q F0(Emacs Standard bindings) -151.2 309.6 Q 2.5("C-@" set-mark)151.2 333.6 R 2.5("C-A" be)151.2 345.6 -R(ginning-of-line)-.15 E 2.5("C-B" backw)151.2 357.6 R(ard-char)-.1 E -2.5("C-D" delete-char)151.2 369.6 R 2.5("C-E" end-of-line)151.2 381.6 R -2.5("C-F" forw)151.2 393.6 R(ard-char)-.1 E 2.5("C-G" abort)151.2 405.6 -R 2.5("C-H" backw)151.2 417.6 R(ard-delete-char)-.1 E 2.5 -("C-I" complete)151.2 429.6 R 2.5("C-J" accept-line)151.2 441.6 R 2.5 -("C-K" kill-line)151.2 453.6 R 2.5("C-L" clear)151.2 465.6 R(-screen)-.2 -E 2.5("C-M" accept-line)151.2 477.6 R 2.5("C-N" ne)151.2 489.6 R -(xt-history)-.15 E 2.5("C-P" pre)151.2 501.6 R(vious-history)-.25 E 2.5 -("C-Q" quoted-insert)151.2 513.6 R 2.5("C-R" re)151.2 525.6 R -.15(ve) --.25 G(rse-search-history).15 E 2.5("C-S" forw)151.2 537.6 R -(ard-search-history)-.1 E 2.5("C-T" transpose-chars)151.2 549.6 R 2.5 -("C-U" unix-line-discard)151.2 561.6 R 2.5("C-V" quoted-insert)151.2 -573.6 R 2.5("C-W" unix-w)151.2 585.6 R(ord-rubout)-.1 E 2.5("C-Y" yank) -151.2 597.6 R 2.5("C-]" character)151.2 609.6 R(-search)-.2 E 2.5 -("C-_" undo)151.2 621.6 R 3.333("")151.2 633.6 S(to "/")-.833 E -(self-insert)5 E 2.5("0" to)151.2 645.6 R 2.5("9" self-insert)2.5 F 2.5 -(":" to)151.2 657.6 R 2.5("~" self-insert)2.5 F 2.5("C-?" backw)151.2 -669.6 R(ard-delete-char)-.1 E(Emacs Meta bindings)151.2 686.4 Q 2.5 -("M-C-G" abort)151.2 710.4 R 2.5("M-C-H" backw)151.2 722.4 R(ard-kill-w) --.1 E(ord)-.1 E(GNU Readline 8.1)72 768 Q(2020 October 29)125.685 E(13) -190.395 E 0 Cg EP +604.8 R .945(In vi insertion mode, all characters not speci\214cally me\ +ntioned are bound to)5.945 F F1(self\255insert)108 616.8 Q F0 5.338(.C)C +.338(haracters assigned to signal generation by)-5.338 F F2(stty)3.178 E +F0 .337(\(1\) or the terminal dri).32 F -.15(ve)-.25 G 1.137 -.4(r, s) +.15 H .337(uch as C-Z or C-C,).4 F .187(retain that function.)108 628.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 640.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 652.8 Q F1(bell\255style)2.5 E F0 -.25(va)2.5 +G(riable\).).25 E F1(Emacs Mode)87 669.6 Q F0(Emacs Standard bindings) +151.2 681.6 Q 2.5("C-@" set-mark)151.2 705.6 R 2.5("C-A" be)151.2 717.6 +R(ginning-of-line)-.15 E 2.5("C-B" backw)151.2 729.6 R(ard-char)-.1 E +(GNU Readline 8.2)72 768 Q(2022 September 19)120.405 E(13)185.115 E 0 Cg +EP %%Page: 14 14 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R -(Functions Manual)2.5 E(READLINE\(3\))119.855 E 2.5("M-C-I" tab-insert) -151.2 84 R 2.5("M-C-J" vi-editing-mode)151.2 96 R 2.5("M-C-L" clear) -151.2 108 R(-display)-.2 E 2.5("M-C-M" vi-editing-mode)151.2 120 R 2.5 -("M-C-R" re)151.2 132 R -.15(ve)-.25 G(rt-line).15 E 2.5 -("M-C-Y" yank-nth-ar)151.2 144 R(g)-.18 E 2.5("M-C-[" complete)151.2 156 -R 2.5("M-C-]" character)151.2 168 R(-search-backw)-.2 E(ard)-.1 E 2.5 -("M-space" set-mark)151.2 180 R 2.5("M-#" insert-comment)151.2 192 R 2.5 -("M-&" tilde-e)151.2 204 R(xpand)-.15 E 2.5("M-*" insert-completions) -151.2 216 R 2.5("M--" digit-ar)151.2 228 R(gument)-.18 E 2.5 -("M-." yank-last-ar)151.2 240 R(g)-.18 E 2.5("M-0" digit-ar)151.2 252 R -(gument)-.18 E 2.5("M-1" digit-ar)151.2 264 R(gument)-.18 E 2.5 -("M-2" digit-ar)151.2 276 R(gument)-.18 E 2.5("M-3" digit-ar)151.2 288 R -(gument)-.18 E 2.5("M-4" digit-ar)151.2 300 R(gument)-.18 E 2.5 -("M-5" digit-ar)151.2 312 R(gument)-.18 E 2.5("M-6" digit-ar)151.2 324 R -(gument)-.18 E 2.5("M-7" digit-ar)151.2 336 R(gument)-.18 E 2.5 -("M-8" digit-ar)151.2 348 R(gument)-.18 E 2.5("M-9" digit-ar)151.2 360 R -(gument)-.18 E 2.5("M-<" be)151.2 372 R(ginning-of-history)-.15 E 2.5 -("M-=" possible-completions)151.2 384 R 2.5("M->" end-of-history)151.2 -396 R 2.5("M-?" possible-completions)151.2 408 R 2.5("M-B" backw)151.2 -420 R(ard-w)-.1 E(ord)-.1 E 2.5("M-C" capitalize-w)151.2 432 R(ord)-.1 E -2.5("M-D" kill-w)151.2 444 R(ord)-.1 E 2.5("M-F" forw)151.2 456 R(ard-w) --.1 E(ord)-.1 E 2.5("M-L" do)151.2 468 R(wncase-w)-.25 E(ord)-.1 E 2.5 -("M-N" non-incremental-forw)151.2 480 R(ard-search-history)-.1 E 2.5 -("M-P" non-incremental-re)151.2 492 R -.15(ve)-.25 G(rse-search-history) -.15 E 2.5("M-R" re)151.2 504 R -.15(ve)-.25 G(rt-line).15 E 2.5 -("M-T" transpose-w)151.2 516 R(ords)-.1 E 2.5("M-U" upcase-w)151.2 528 R -(ord)-.1 E 2.5("M-Y" yank-pop)151.2 540 R 2.5 -("M-\\" delete-horizontal-space)151.2 552 R 2.5("M-~" tilde-e)151.2 564 -R(xpand)-.15 E 2.5("M-C-?" backw)151.2 576 R(ard-kill-w)-.1 E(ord)-.1 E -2.5("M-_" yank-last-ar)151.2 588 R(g)-.18 E(Emacs Control-X bindings) -151.2 604.8 Q 2.5("C-XC-G" abort)151.2 628.8 R 2.5 -("C-XC-R" re-read-init-\214le)151.2 640.8 R 2.5("C-XC-U" undo)151.2 -652.8 R 2.5("C-XC-X" e)151.2 664.8 R(xchange-point-and-mark)-.15 E 2.5 -("C-X\(" start-kbd-macro)151.2 676.8 R 2.5("C-X\)" end-kbd-macro)151.2 -688.8 R 2.5("C-XE" call-last-kbd-macro)151.2 700.8 R 2.5("C-XC-?" backw) -151.2 712.8 R(ard-kill-line)-.1 E(GNU Readline 8.1)72 768 Q -(2020 October 29)125.685 E(14)190.395 E 0 Cg EP +(Functions Manual)2.5 E(READLINE\(3\))119.855 E 2.5("C-D" delete-char) +151.2 84 R 2.5("C-E" end-of-line)151.2 96 R 2.5("C-F" forw)151.2 108 R +(ard-char)-.1 E 2.5("C-G" abort)151.2 120 R 2.5("C-H" backw)151.2 132 R +(ard-delete-char)-.1 E 2.5("C-I" complete)151.2 144 R 2.5 +("C-J" accept-line)151.2 156 R 2.5("C-K" kill-line)151.2 168 R 2.5 +("C-L" clear)151.2 180 R(-screen)-.2 E 2.5("C-M" accept-line)151.2 192 R +2.5("C-N" ne)151.2 204 R(xt-history)-.15 E 2.5("C-P" pre)151.2 216 R +(vious-history)-.25 E 2.5("C-Q" quoted-insert)151.2 228 R 2.5("C-R" re) +151.2 240 R -.15(ve)-.25 G(rse-search-history).15 E 2.5("C-S" forw)151.2 +252 R(ard-search-history)-.1 E 2.5("C-T" transpose-chars)151.2 264 R 2.5 +("C-U" unix-line-discard)151.2 276 R 2.5("C-V" quoted-insert)151.2 288 R +2.5("C-W" unix-w)151.2 300 R(ord-rubout)-.1 E 2.5("C-Y" yank)151.2 312 R +2.5("C-]" character)151.2 324 R(-search)-.2 E 2.5("C-_" undo)151.2 336 R +3.333("")151.2 348 S(to "/")-.833 E(self-insert)5 E 2.5("0" to)151.2 360 +R 2.5("9" self-insert)2.5 F 2.5(":" to)151.2 372 R 2.5("~" self-insert) +2.5 F 2.5("C-?" backw)151.2 384 R(ard-delete-char)-.1 E +(Emacs Meta bindings)151.2 400.8 Q 2.5("M-C-G" abort)151.2 424.8 R 2.5 +("M-C-H" backw)151.2 436.8 R(ard-kill-w)-.1 E(ord)-.1 E 2.5 +("M-C-I" tab-insert)151.2 448.8 R 2.5("M-C-J" vi-editing-mode)151.2 +460.8 R 2.5("M-C-L" clear)151.2 472.8 R(-display)-.2 E 2.5 +("M-C-M" vi-editing-mode)151.2 484.8 R 2.5("M-C-R" re)151.2 496.8 R -.15 +(ve)-.25 G(rt-line).15 E 2.5("M-C-Y" yank-nth-ar)151.2 508.8 R(g)-.18 E +2.5("M-C-[" complete)151.2 520.8 R 2.5("M-C-]" character)151.2 532.8 R +(-search-backw)-.2 E(ard)-.1 E 2.5("M-space" set-mark)151.2 544.8 R 2.5 +("M-#" insert-comment)151.2 556.8 R 2.5("M-&" tilde-e)151.2 568.8 R +(xpand)-.15 E 2.5("M-*" insert-completions)151.2 580.8 R 2.5 +("M--" digit-ar)151.2 592.8 R(gument)-.18 E 2.5("M-." yank-last-ar)151.2 +604.8 R(g)-.18 E 2.5("M-0" digit-ar)151.2 616.8 R(gument)-.18 E 2.5 +("M-1" digit-ar)151.2 628.8 R(gument)-.18 E 2.5("M-2" digit-ar)151.2 +640.8 R(gument)-.18 E 2.5("M-3" digit-ar)151.2 652.8 R(gument)-.18 E 2.5 +("M-4" digit-ar)151.2 664.8 R(gument)-.18 E 2.5("M-5" digit-ar)151.2 +676.8 R(gument)-.18 E 2.5("M-6" digit-ar)151.2 688.8 R(gument)-.18 E 2.5 +("M-7" digit-ar)151.2 700.8 R(gument)-.18 E 2.5("M-8" digit-ar)151.2 +712.8 R(gument)-.18 E 2.5("M-9" digit-ar)151.2 724.8 R(gument)-.18 E +(GNU Readline 8.2)72 768 Q(2022 September 19)120.405 E(14)185.115 E 0 Cg +EP %%Page: 15 15 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R -(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF -(VI Mode bindings)87 84 Q F0(VI Insert Mode functions)151.2 96 Q 2.5 -("C-D" vi-eof-maybe)151.2 120 R 2.5("C-H" backw)151.2 132 R -(ard-delete-char)-.1 E 2.5("C-I" complete)151.2 144 R 2.5 -("C-J" accept-line)151.2 156 R 2.5("C-M" accept-line)151.2 168 R 2.5 -("C-R" re)151.2 180 R -.15(ve)-.25 G(rse-search-history).15 E 2.5 -("C-S" forw)151.2 192 R(ard-search-history)-.1 E 2.5 -("C-T" transpose-chars)151.2 204 R 2.5("C-U" unix-line-discard)151.2 216 -R 2.5("C-V" quoted-insert)151.2 228 R 2.5("C-W" unix-w)151.2 240 R -(ord-rubout)-.1 E 2.5("C-Y" yank)151.2 252 R 2.5("C-[" vi-mo)151.2 264 R --.15(ve)-.15 G(ment-mode).15 E 2.5("C-_" undo)151.2 276 R 3.333("")151.2 -288 S(to "~")-.833 E(self-insert)5 E 2.5("C-?" backw)151.2 300 R -(ard-delete-char)-.1 E(VI Command Mode functions)151.2 316.8 Q 2.5 -("C-D" vi-eof-maybe)151.2 340.8 R 2.5("C-E" emacs-editing-mode)151.2 -352.8 R 2.5("C-G" abort)151.2 364.8 R 2.5("C-H" backw)151.2 376.8 R -(ard-char)-.1 E 2.5("C-J" accept-line)151.2 388.8 R 2.5("C-K" kill-line) -151.2 400.8 R 2.5("C-L" clear)151.2 412.8 R(-screen)-.2 E 2.5 -("C-M" accept-line)151.2 424.8 R 2.5("C-N" ne)151.2 436.8 R(xt-history) --.15 E 2.5("C-P" pre)151.2 448.8 R(vious-history)-.25 E 2.5 -("C-Q" quoted-insert)151.2 460.8 R 2.5("C-R" re)151.2 472.8 R -.15(ve) --.25 G(rse-search-history).15 E 2.5("C-S" forw)151.2 484.8 R -(ard-search-history)-.1 E 2.5("C-T" transpose-chars)151.2 496.8 R 2.5 -("C-U" unix-line-discard)151.2 508.8 R 2.5("C-V" quoted-insert)151.2 -520.8 R 2.5("C-W" unix-w)151.2 532.8 R(ord-rubout)-.1 E 2.5("C-Y" yank) -151.2 544.8 R 2.5("C-_" vi-undo)151.2 556.8 R -4.166 3.333("" f)151.2 -568.8 T(orw)-3.333 E(ard-char)-.1 E 2.5("#" insert-comment)151.2 580.8 R -2.5("$" end-of-line)151.2 592.8 R 2.5("%" vi-match)151.2 604.8 R 2.5 -("&" vi-tilde-e)151.2 616.8 R(xpand)-.15 E 2.5("*" vi-complete)151.2 -628.8 R 2.5("+" ne)151.2 640.8 R(xt-history)-.15 E 2.5("," vi-char)151.2 -652.8 R(-search)-.2 E 2.5("-" pre)151.2 664.8 R(vious-history)-.25 E 2.5 -("." vi-redo)151.2 676.8 R 2.5("/" vi-search)151.2 688.8 R 2.5("0" be) -151.2 700.8 R(ginning-of-line)-.15 E("1" to "9")151.2 712.8 Q(vi-ar)5 E -(g-digit)-.18 E 2.5(";" vi-char)151.2 724.8 R(-search)-.2 E -(GNU Readline 8.1)72 768 Q(2020 October 29)125.685 E(15)190.395 E 0 Cg -EP +(Functions Manual)2.5 E(READLINE\(3\))119.855 E 2.5("M-<" be)151.2 84 R +(ginning-of-history)-.15 E 2.5("M-=" possible-completions)151.2 96 R 2.5 +("M->" end-of-history)151.2 108 R 2.5("M-?" possible-completions)151.2 +120 R 2.5("M-B" backw)151.2 132 R(ard-w)-.1 E(ord)-.1 E 2.5 +("M-C" capitalize-w)151.2 144 R(ord)-.1 E 2.5("M-D" kill-w)151.2 156 R +(ord)-.1 E 2.5("M-F" forw)151.2 168 R(ard-w)-.1 E(ord)-.1 E 2.5 +("M-L" do)151.2 180 R(wncase-w)-.25 E(ord)-.1 E 2.5 +("M-N" non-incremental-forw)151.2 192 R(ard-search-history)-.1 E 2.5 +("M-P" non-incremental-re)151.2 204 R -.15(ve)-.25 G(rse-search-history) +.15 E 2.5("M-R" re)151.2 216 R -.15(ve)-.25 G(rt-line).15 E 2.5 +("M-T" transpose-w)151.2 228 R(ords)-.1 E 2.5("M-U" upcase-w)151.2 240 R +(ord)-.1 E 2.5("M-Y" yank-pop)151.2 252 R 2.5 +("M-\\" delete-horizontal-space)151.2 264 R 2.5("M-~" tilde-e)151.2 276 +R(xpand)-.15 E 2.5("M-C-?" backw)151.2 288 R(ard-kill-w)-.1 E(ord)-.1 E +2.5("M-_" yank-last-ar)151.2 300 R(g)-.18 E(Emacs Control-X bindings) +151.2 316.8 Q 2.5("C-XC-G" abort)151.2 340.8 R 2.5 +("C-XC-R" re-read-init-\214le)151.2 352.8 R 2.5("C-XC-U" undo)151.2 +364.8 R 2.5("C-XC-X" e)151.2 376.8 R(xchange-point-and-mark)-.15 E 2.5 +("C-X\(" start-kbd-macro)151.2 388.8 R 2.5("C-X\)" end-kbd-macro)151.2 +400.8 R 2.5("C-XE" call-last-kbd-macro)151.2 412.8 R 2.5("C-XC-?" backw) +151.2 424.8 R(ard-kill-line)-.1 E/F1 10/Times-Bold@0 SF +(VI Mode bindings)87 453.6 Q F0(VI Insert Mode functions)151.2 465.6 Q +2.5("C-D" vi-eof-maybe)151.2 489.6 R 2.5("C-H" backw)151.2 501.6 R +(ard-delete-char)-.1 E 2.5("C-I" complete)151.2 513.6 R 2.5 +("C-J" accept-line)151.2 525.6 R 2.5("C-M" accept-line)151.2 537.6 R 2.5 +("C-R" re)151.2 549.6 R -.15(ve)-.25 G(rse-search-history).15 E 2.5 +("C-S" forw)151.2 561.6 R(ard-search-history)-.1 E 2.5 +("C-T" transpose-chars)151.2 573.6 R 2.5("C-U" unix-line-discard)151.2 +585.6 R 2.5("C-V" quoted-insert)151.2 597.6 R 2.5("C-W" unix-w)151.2 +609.6 R(ord-rubout)-.1 E 2.5("C-Y" yank)151.2 621.6 R 2.5("C-[" vi-mo) +151.2 633.6 R -.15(ve)-.15 G(ment-mode).15 E 2.5("C-_" undo)151.2 645.6 +R 3.333("")151.2 657.6 S(to "~")-.833 E(self-insert)5 E 2.5("C-?" backw) +151.2 669.6 R(ard-delete-char)-.1 E(VI Command Mode functions)151.2 +686.4 Q 2.5("C-D" vi-eof-maybe)151.2 710.4 R 2.5 +("C-E" emacs-editing-mode)151.2 722.4 R(GNU Readline 8.2)72 768 Q +(2022 September 19)120.405 E(15)185.115 E 0 Cg EP %%Page: 16 16 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R -(Functions Manual)2.5 E(READLINE\(3\))119.855 E 2.5("=" vi-complete) -151.2 84 R 2.5("?" vi-search)151.2 96 R 2.5("A" vi-append-eol)151.2 108 -R 2.5("B" vi-pre)151.2 120 R(v-w)-.25 E(ord)-.1 E 2.5("C" vi-change-to) -151.2 132 R 2.5("D" vi-delete-to)151.2 144 R 2.5("E" vi-end-w)151.2 156 -R(ord)-.1 E 2.5("F" vi-char)151.2 168 R(-search)-.2 E 2.5 -("G" vi-fetch-history)151.2 180 R 2.5("I" vi-insert-be)151.2 192 R(g) --.15 E 2.5("N" vi-search-ag)151.2 204 R(ain)-.05 E 2.5("P" vi-put)151.2 -216 R 2.5("R" vi-replace)151.2 228 R 2.5("S" vi-subst)151.2 240 R 2.5 -("T" vi-char)151.2 252 R(-search)-.2 E 2.5("U" re)151.2 264 R -.15(ve) --.25 G(rt-line).15 E 2.5("W" vi-ne)151.2 276 R(xt-w)-.15 E(ord)-.1 E 2.5 -("X" backw)151.2 288 R(ard-delete-char)-.1 E 2.5("Y" vi-yank-to)151.2 -300 R 2.5("\\" vi-complete)151.2 312 R 2.5("^" vi-\214rst-print)151.2 -324 R 2.5("_" vi-yank-ar)151.2 336 R(g)-.18 E 2.5("`" vi-goto-mark)151.2 -348 R 2.5("a" vi-append-mode)151.2 360 R 2.5("b" vi-pre)151.2 372 R(v-w) --.25 E(ord)-.1 E 2.5("c" vi-change-to)151.2 384 R 2.5("d" vi-delete-to) -151.2 396 R 2.5("e" vi-end-w)151.2 408 R(ord)-.1 E 2.5("f" vi-char)151.2 -420 R(-search)-.2 E 2.5("h" backw)151.2 432 R(ard-char)-.1 E 2.5 -("i" vi-insertion-mode)151.2 444 R 2.5("j" ne)151.2 456 R(xt-history) --.15 E 2.5("k" pre)151.2 468 R(v-history)-.25 E 2.5("l" forw)151.2 480 R -(ard-char)-.1 E 2.5("m" vi-set-mark)151.2 492 R 2.5("n" vi-search-ag) -151.2 504 R(ain)-.05 E 2.5("p" vi-put)151.2 516 R 2.5 -("r" vi-change-char)151.2 528 R 2.5("s" vi-subst)151.2 540 R 2.5 -("t" vi-char)151.2 552 R(-search)-.2 E 2.5("u" vi-undo)151.2 564 R 2.5 -("w" vi-ne)151.2 576 R(xt-w)-.15 E(ord)-.1 E 2.5("x" vi-delete)151.2 588 -R 2.5("y" vi-yank-to)151.2 600 R 2.5("|" vi-column)151.2 612 R 2.5 -("~" vi-change-case)151.2 624 R/F1 10.95/Times-Bold@0 SF(SEE ALSO)72 -640.8 Q/F2 10/Times-Italic@0 SF(The Gnu Readline Libr)108 652.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 664.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 676.8 Q F0(\(1\))A F1 -(FILES)72 693.6 Q F2(~/.inputr)109.666 705.6 Q(c)-.37 E F0(Indi)144 -717.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(GNU Readline 8.1)72 768 Q -(2020 October 29)125.685 E(16)190.395 E 0 Cg EP +(Functions Manual)2.5 E(READLINE\(3\))119.855 E 2.5("C-G" abort)151.2 84 +R 2.5("C-H" backw)151.2 96 R(ard-char)-.1 E 2.5("C-J" accept-line)151.2 +108 R 2.5("C-K" kill-line)151.2 120 R 2.5("C-L" clear)151.2 132 R +(-screen)-.2 E 2.5("C-M" accept-line)151.2 144 R 2.5("C-N" ne)151.2 156 +R(xt-history)-.15 E 2.5("C-P" pre)151.2 168 R(vious-history)-.25 E 2.5 +("C-Q" quoted-insert)151.2 180 R 2.5("C-R" re)151.2 192 R -.15(ve)-.25 G +(rse-search-history).15 E 2.5("C-S" forw)151.2 204 R(ard-search-history) +-.1 E 2.5("C-T" transpose-chars)151.2 216 R 2.5("C-U" unix-line-discard) +151.2 228 R 2.5("C-V" quoted-insert)151.2 240 R 2.5("C-W" unix-w)151.2 +252 R(ord-rubout)-.1 E 2.5("C-Y" yank)151.2 264 R 2.5("C-_" vi-undo) +151.2 276 R -4.166 3.333("" f)151.2 288 T(orw)-3.333 E(ard-char)-.1 E +2.5("#" insert-comment)151.2 300 R 2.5("$" end-of-line)151.2 312 R 2.5 +("%" vi-match)151.2 324 R 2.5("&" vi-tilde-e)151.2 336 R(xpand)-.15 E +2.5("*" vi-complete)151.2 348 R 2.5("+" ne)151.2 360 R(xt-history)-.15 E +2.5("," vi-char)151.2 372 R(-search)-.2 E 2.5("-" pre)151.2 384 R +(vious-history)-.25 E 2.5("." vi-redo)151.2 396 R 2.5("/" vi-search) +151.2 408 R 2.5("0" be)151.2 420 R(ginning-of-line)-.15 E("1" to "9") +151.2 432 Q(vi-ar)5 E(g-digit)-.18 E 2.5(";" vi-char)151.2 444 R +(-search)-.2 E 2.5("=" vi-complete)151.2 456 R 2.5("?" vi-search)151.2 +468 R 2.5("A" vi-append-eol)151.2 480 R 2.5("B" vi-pre)151.2 492 R(v-w) +-.25 E(ord)-.1 E 2.5("C" vi-change-to)151.2 504 R 2.5("D" vi-delete-to) +151.2 516 R 2.5("E" vi-end-w)151.2 528 R(ord)-.1 E 2.5("F" vi-char)151.2 +540 R(-search)-.2 E 2.5("G" vi-fetch-history)151.2 552 R 2.5 +("I" vi-insert-be)151.2 564 R(g)-.15 E 2.5("N" vi-search-ag)151.2 576 R +(ain)-.05 E 2.5("P" vi-put)151.2 588 R 2.5("R" vi-replace)151.2 600 R +2.5("S" vi-subst)151.2 612 R 2.5("T" vi-char)151.2 624 R(-search)-.2 E +2.5("U" re)151.2 636 R -.15(ve)-.25 G(rt-line).15 E 2.5("W" vi-ne)151.2 +648 R(xt-w)-.15 E(ord)-.1 E 2.5("X" backw)151.2 660 R(ard-delete-char) +-.1 E 2.5("Y" vi-yank-to)151.2 672 R 2.5("\\" vi-complete)151.2 684 R +2.5("^" vi-\214rst-print)151.2 696 R 2.5("_" vi-yank-ar)151.2 708 R(g) +-.18 E 2.5("`" vi-goto-mark)151.2 720 R(GNU Readline 8.2)72 768 Q +(2022 September 19)120.405 E(16)185.115 E 0 Cg EP %%Page: 17 17 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R -(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10.95/Times-Bold@0 SF --.548(AU)72 84 S(THORS).548 E F0(Brian F)108 96 Q(ox, Free Softw)-.15 E -(are F)-.1 E(oundation)-.15 E(bfox@gnu.or)108 108 Q(g)-.18 E(Chet Rame) -108 124.8 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.rame)108 136.8 Q -(y@case.edu)-.15 E F1 -.11(BU)72 153.6 S 2.738(GR).11 G(EPOR)-2.738 E -(TS)-.438 E F0 .691(If you \214nd a b)108 165.6 R .691(ug in)-.2 F/F2 10 -/Times-Bold@0 SF -.18(re)3.191 G(adline,).18 E F0 .691 -(you should report it.)3.191 F .69(But \214rst, you should mak)5.69 F -3.19(es)-.1 G .69(ure that it really is a b)-3.19 F(ug,)-.2 E -(and that it appears in the latest v)108 177.6 Q(ersion of the)-.15 E F2 +(Functions Manual)2.5 E(READLINE\(3\))119.855 E 2.5("a" vi-append-mode) +151.2 84 R 2.5("b" vi-pre)151.2 96 R(v-w)-.25 E(ord)-.1 E 2.5 +("c" vi-change-to)151.2 108 R 2.5("d" vi-delete-to)151.2 120 R 2.5 +("e" vi-end-w)151.2 132 R(ord)-.1 E 2.5("f" vi-char)151.2 144 R(-search) +-.2 E 2.5("h" backw)151.2 156 R(ard-char)-.1 E 2.5 +("i" vi-insertion-mode)151.2 168 R 2.5("j" ne)151.2 180 R(xt-history) +-.15 E 2.5("k" pre)151.2 192 R(v-history)-.25 E 2.5("l" forw)151.2 204 R +(ard-char)-.1 E 2.5("m" vi-set-mark)151.2 216 R 2.5("n" vi-search-ag) +151.2 228 R(ain)-.05 E 2.5("p" vi-put)151.2 240 R 2.5 +("r" vi-change-char)151.2 252 R 2.5("s" vi-subst)151.2 264 R 2.5 +("t" vi-char)151.2 276 R(-search)-.2 E 2.5("u" vi-undo)151.2 288 R 2.5 +("w" vi-ne)151.2 300 R(xt-w)-.15 E(ord)-.1 E 2.5("x" vi-delete)151.2 312 +R 2.5("y" vi-yank-to)151.2 324 R 2.5("|" vi-column)151.2 336 R 2.5 +("~" vi-change-case)151.2 348 R/F1 10.95/Times-Bold@0 SF(SEE ALSO)72 +364.8 Q/F2 10/Times-Italic@0 SF(The Gnu Readline Libr)108 376.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 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(bash)108 400.8 Q F0(\(1\))A F1 +(FILES)72 417.6 Q F2(~/.inputr)109.666 429.6 Q(c)-.37 E F0(Indi)144 +441.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 458.4 S(THORS).548 E F0 +(Brian F)108 470.4 Q(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 E +(bfox@gnu.or)108 482.4 Q(g)-.18 E(Chet Rame)108 499.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.rame)108 511.2 Q(y@case.edu)-.15 E F1 -.11(BU)72 +528 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .69(If you \214nd a b) +108 540 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 552 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 .704(Once you ha)108 194.4 R 1.004 -.15(ve d)-.2 H .704 +.15 E .705(Once you ha)108 568.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 .705(ug report to)-.2 F/F3 10/Times-Italic@0 SF -.2(bu)3.205 G -(g\255r).2 E(eadline)-.37 E F0(@)A F3(gnu.or)A(g)-.37 E F0 5.705(.I)C -3.205(fy)-5.705 G(ou)-3.205 E(ha)108 206.4 Q 1.81 -.15(ve a \214)-.2 H -1.51(x, you are welcome to mail that as well!).15 F 1.509 -(Suggestions and `philosophical' b)6.509 F 1.509(ug reports may be)-.2 F -(mailed to)108 218.4 Q F3 -.2(bu)2.5 G(g-r).2 E(eadline)-.37 E F0(@)A F3 -(gnu.or)A(g)-.37 E F0(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F2 -(gnu.bash.b)2.5 E(ug)-.2 E F0(.)A(Comments and b)108 235.2 Q -(ug reports concerning this manual page should be directed to)-.2 E F3 +-.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 580.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 592.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 609.6 Q +(ug reports concerning this manual page should be directed to)-.2 E F2 -.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F0(.).25 E -F1 -.11(BU)72 252 S(GS).11 E F0(It')108 264 Q 2.5(st)-.55 G -(oo big and too slo)-2.5 E -.65(w.)-.25 G(GNU Readline 8.1)72 768 Q -(2020 October 29)125.685 E(17)190.395 E 0 Cg EP +F1 -.11(BU)72 626.4 S(GS).11 E F0(It')108 638.4 Q 2.5(st)-.55 G +(oo big and too slo)-2.5 E -.65(w.)-.25 G(GNU Readline 8.2)72 768 Q +(2022 September 19)120.405 E(17)185.115 E 0 Cg EP %%Trailer end %%EOF diff --git a/doc/rlman.texi b/doc/rlman.texi index ec7487b..d046b87 100644 --- a/doc/rlman.texi +++ b/doc/rlman.texi @@ -13,7 +13,7 @@ This manual describes the GNU Readline Library consistency of user interface across discrete programs which provide a command line interface. -Copyright @copyright{} 1988--2020 Free Software Foundation, Inc. +Copyright @copyright{} 1988--2022 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/rltech.texi b/doc/rltech.texi index bbf57c2..a93f77d 100644 --- a/doc/rltech.texi +++ b/doc/rltech.texi @@ -7,7 +7,7 @@ This document describes the GNU Readline Library, a utility for aiding in the consistency of user interface across discrete programs that need to provide a command line interface. -Copyright (C) 1988--2020 Free Software Foundation, Inc. +Copyright (C) 1988--2022 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -323,6 +323,14 @@ and point define a @emph{region}. @deftypevar int rl_done Setting this to a non-zero value causes Readline to return the current line immediately. +Readline will set this variable when it has read a key sequence bound +to @code{accept-line} and is about to return the line to the caller. +@end deftypevar + +@deftypevar int rl_eof_found +Readline will set this variable when it has read an EOF character (e.g., the +stty @samp{EOF} character) on an empty line or encountered a read error and +is about to return a NULL line to the caller. @end deftypevar @deftypevar int rl_num_chars_to_read @@ -385,7 +393,7 @@ value 0x0402. @end deftypevar @deftypevar {int} rl_gnu_readline_p -Always set to 1, denoting that this is @sc{gnu} readline rather than some +Always set to 1, denoting that this is @sc{gnu} Readline rather than some emulation. @end deftypevar @@ -455,6 +463,11 @@ If non-zero, this is the address of a function to call if a read system call is interrupted when Readline is reading terminal input. @end deftypevar +@deftypevar {rl_hook_func_t *} rl_timeout_event_hook +If non-zero, this is the address of a function to call if Readline times +out while reading input. +@end deftypevar + @deftypevar {rl_hook_func_t *} rl_input_available_hook If non-zero, Readline will use this function's return value when it needs to determine whether or not there is available input on the current input @@ -502,7 +515,7 @@ By default, this is set to @code{rl_deprep_terminal} @deftypevar {Keymap} rl_executing_keymap This variable is set to the keymap (@pxref{Keymaps}) in which the -currently executing readline function was found. +currently executing Readline function was found. @end deftypevar @deftypevar {Keymap} rl_binding_keymap @@ -588,6 +601,13 @@ the current call to @code{readline()}. @item RL_STATE_DONE Readline has read a key sequence bound to @code{accept-line} and is about to return the line to the caller. +@item RL_STATE_TIMEOUT +Readline has timed out (it did not receive a line or specified number of +characters before the timeout duration specified by @code{rl_set_timeout} +elapsed) and is returning that status to the caller. +@item RL_STATE_EOF +Readline has read an EOF character (e.g., the stty @samp{EOF} character) +or encountered a read error and is about to return a NULL line to the caller. @end table @end deftypevar @@ -876,6 +896,15 @@ It takes a "translated" key sequence and should be used if the key sequence can include NUL. @end deftypefun +@deftypefun {int} rl_trim_arg_from_keyseq (const char *keyseq, size_t len, Keymap map) +If there is a numeric argument at the beginning of @var{keyseq}, possibly +including digits, return the index of the first character in @var{keyseq} +following the numeric argument. +This can be used to skip over the numeric argument (which is available as +@code{rl_numeric_arg} while traversing the key sequence that invoked the +current command. +@end deftypefun + @deftypefun {char **} rl_invoking_keyseqs (rl_command_func_t *function) Return an array of strings representing the key sequences used to invoke @var{function} in the current keymap. @@ -887,7 +916,7 @@ invoke @var{function} in the keymap @var{map}. @end deftypefun @deftypefun void rl_function_dumper (int readable) -Print the readline function names and the key sequences currently +Print the Readline function names and the key sequences currently bound to them to @code{rl_outstream}. If @var{readable} is non-zero, the list is formatted in such a way that it can be made part of an @code{inputrc} file and re-read. @@ -1063,8 +1092,9 @@ It returns the number of visible characters on the last line of the Applications may indicate that the prompt contains characters that take up no physical screen space when displayed by bracketing a sequence of such characters with the special markers @code{RL_PROMPT_START_IGNORE} -and @code{RL_PROMPT_END_IGNORE} (declared in @file{readline.h}). This may -be used to embed terminal-specific escape sequences in prompts. +and @code{RL_PROMPT_END_IGNORE} (declared in @file{readline.h} as +@samp{\001} and @samp{\002}, respectively). +This may be used to embed terminal-specific escape sequences in prompts. @end deftypefun @deftypefun int rl_set_prompt (const char *prompt) @@ -1151,6 +1181,30 @@ The default waiting period is one-tenth of a second. Returns the old timeout value. @end deftypefun +@deftypefun int rl_set_timeout (unsigned int secs, unsigned int usecs) +Set a timeout for subsequent calls to @code{readline()}. If Readline does +not read a complete line, or the number of characters specified by +@code{rl_num_chars_to_read}, before the duration specified by @var{secs} +(in seconds) and @var{usecs} (microseconds), it returns and sets +@code{RL_STATE_TIMEOUT} in @code{rl_readline_state}. +Passing 0 for @code{secs} and @code{usecs} cancels any previously set +timeout; the convenience macro @code{rl_clear_timeout()} is shorthand +for this. +Returns 0 if the timeout is set successfully. +@end deftypefun + +@deftypefun int rl_timeout_remaining (unsigned int *secs, unsigned int *usecs) +Return the number of seconds and microseconds remaining in the current +timeout duration in @var{*secs} and @var{*usecs}, respectively. +Both @var{*secs} and @var{*usecs} must be non-NULL to return any values. +The return value is -1 on error or when there is no timeout set, +0 when the timeout has expired (leaving @var{*secs} and @var{*usecs} +unchanged), +and 1 if the timeout has not expired. +If either of @var{secs} and @var{usecs} is @code{NULL}, +the return value indicates whether the timeout has expired. +@end deftypefun + @node Terminal Management @subsection Terminal Management @@ -1304,7 +1358,7 @@ that it can be made part of an @code{inputrc} file and re-read. @deftypefun int rl_variable_bind (const char *variable, const char *value) Make the Readline variable @var{variable} have @var{value}. -This behaves as if the readline command +This behaves as if the Readline command @samp{set @var{variable} @var{value}} had been executed in an @code{inputrc} file (@pxref{Readline Init File Syntax}). @end deftypefun @@ -1315,7 +1369,7 @@ For boolean variables, this string is either @samp{on} or @samp{off}. @end deftypefun @deftypefun void rl_variable_dumper (int readable) -Print the readline variable names and their current values +Print the Readline variable names and their current values to @code{rl_outstream}. If @var{readable} is non-zero, the list is formatted in such a way that it can be made part of an @code{inputrc} file and re-read. @@ -1346,7 +1400,7 @@ Readline saves in the history list. Enable an @emph{active} mark. When this is enabled, the text between point and mark (the @var{region}) is displayed in the terminal's standout mode (a @var{face}). -This is called by various readline functions that set the mark and insert +This is called by various Readline functions that set the mark and insert text, and is available for applications to call. @end deftypefun @@ -1355,10 +1409,10 @@ Turn off the active mark. @end deftypefun @deftypefun {void} rl_keep_mark_active (void) -Indicate that the mark should remain active when the current readline function -completes and after redisplay occurs. +Indicate that the mark should remain active when the current Readline +function completes and after redisplay occurs. In most cases, the mark remains active for only the duration of a single -bindable readline function. +bindable Readline function. @end deftypefun @deftypefun {int} rl_mark_active_p (void) @@ -1371,12 +1425,12 @@ Return a non-zero value if the mark is currently active; zero otherwise. An alternate interface is available to plain @code{readline()}. Some applications need to interleave keyboard I/O with file, device, or window system I/O, typically by using a main loop to @code{select()} -on various file descriptors. To accommodate this need, readline can +on various file descriptors. To accommodate this need, Readline can also be invoked as a `callback' function from an event loop. There are functions available to make this easy. @deftypefun void rl_callback_handler_install (const char *prompt, rl_vcpfunc_t *lhandler) -Set up the terminal for readline I/O and display the initial +Set up the terminal for Readline I/O and display the initial expanded value of @var{prompt}. Save the value of @var{lhandler} to use as a handler function to call when a complete line of input has been entered. @@ -1611,7 +1665,7 @@ main (int c, char **v) Signals are asynchronous events sent to a process by the Unix kernel, sometimes on behalf of another process. They are intended to indicate -exceptional events, like a user pressing the interrupt key on his terminal, +exceptional events, like a user pressing the terminal's interrupt key, or a network connection being broken. There is a class of signals that can be sent to the process currently reading input from the keyboard. Since Readline changes the terminal attributes when it is called, it needs to @@ -1761,7 +1815,7 @@ a @code{SIGWINCH}. @deftypefun void rl_echo_signal_char (int sig) If an application wishes to install its own signal handlers, but still -have readline display characters that generate signals, calling this +have Readline display characters that generate signals, calling this function with @var{sig} set to @code{SIGINT}, @code{SIGQUIT}, or @code{SIGTSTP} will display the character generating that signal. @end deftypefun @@ -2159,9 +2213,10 @@ shell variables and hostnames. @deftypevar int rl_completion_query_items Up to this many items will be displayed in response to a -possible-completions call. After that, readline asks the user if she is sure -she wants to see them all. The default value is 100. A negative value -indicates that Readline should never ask the user. +possible-completions call. After that, Readline asks the user for +confirmation before displaying them. +The default value is 100. A negative value +indicates that Readline should never ask for confirmation. @end deftypevar @deftypevar {int} rl_completion_append_character @@ -2313,6 +2368,7 @@ history list. #include #include #include +#include #if defined (HAVE_STRING_H) # include @@ -2393,6 +2449,8 @@ main (argc, argv) @{ char *line, *s; + setlocale (LC_ALL, ""); + progname = argv[0]; initialize_readline (); /* Bind our completer. */ diff --git a/doc/rluser.texi b/doc/rluser.texi index 26b0ff0..cbcbb45 100644 --- a/doc/rluser.texi +++ b/doc/rluser.texi @@ -9,7 +9,7 @@ use these features. There is a document entitled "readline.texinfo" which contains both end-user and programmer documentation for the GNU Readline Library. -Copyright (C) 1988--2020 Free Software Foundation, Inc. +Copyright (C) 1988--2022 Free Software Foundation, Inc. Authored by Brian Fox and Chet Ramey. @@ -179,7 +179,7 @@ empty line. @end table @noindent -(Depending on your configuration, the @key{Backspace} key be set to +(Depending on your configuration, the @key{Backspace} key might be set to delete the character to the left of the cursor and the @key{DEL} key set to delete the character underneath the cursor, like @kbd{C-d}, rather than the character to the left of the cursor.) @@ -246,7 +246,7 @@ words, to the end of the next word. Word boundaries are the same as those used by @kbd{M-f}. @item M-@key{DEL} -Kill from the cursor the start of the current word, or, if between +Kill from the cursor to 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}. @@ -339,7 +339,8 @@ Although the Readline library comes with a set of Emacs-like keybindings installed by default, it is possible to use a different set of keybindings. Any user can customize programs that use Readline by putting -commands in an @dfn{inputrc} file, conventionally in his home directory. +commands in an @dfn{inputrc} file, +conventionally in their home directory. The name of this @ifset BashFeatures file is taken from the value of the shell variable @env{INPUTRC}. If @@ -418,6 +419,32 @@ variables. @cindex variables, readline @table @code +@item active-region-start-color +@vindex active-region-start-color +A string variable that controls the text color and background when displaying +the text in the active region (see the description of +@code{enable-active-region} below). +This string must not take up any physical character positions on the display, +so it should consist only of terminal escape sequences. +It is output to the terminal before displaying the text in the active region. +This variable is reset to the default value whenever the terminal type changes. +The default value is the string that puts the terminal in standout mode, +as obtained from the terminal's terminfo description. +A sample value might be @samp{\e[01;33m}. + +@item active-region-end-color +@vindex active-region-end-color +A string variable that "undoes" the effects of @code{active-region-start-color} +and restores "normal" terminal display appearance after displaying text +in the active region. +This string must not take up any physical character positions on the display, +so it should consist only of terminal escape sequences. +It is output to the terminal after displaying the text in the active region. +This variable is reset to the default value whenever the terminal type changes. +The default value is the string that restores the terminal from standout mode, +as obtained from the terminal's terminfo description. +A sample value might be @samp{\e[0m}. + @item bell-style @vindex bell-style Controls what happens when Readline wants to ring the terminal bell. @@ -444,6 +471,9 @@ If set to @samp{on}, when listing completions, Readline displays the common prefix of the set of possible completions using a different color. The color definitions are taken from the value of the @env{LS_COLORS} environment variable. +If there is a color definition in @env{LS_COLORS} for the custom suffix +@samp{readline-colored-completion-prefix}, Readline uses this color for +the common prefix instead of its default. The default is @samp{off}. @item colored-stats @@ -496,8 +526,9 @@ asked whether the list of possibilities should be displayed. If the number of possible completions is greater than or equal to this value, Readline will ask whether or not the user wishes to view them; otherwise, they are simply listed. -This variable must be set to an integer value greater than or equal to 0. -A negative value means Readline should never ask. +This variable must be set to an integer value greater than or equal to zero. +A zero value means Readline should never ask; negative values are +treated as zero. The default limit is @code{100}. @item convert-meta @@ -505,9 +536,12 @@ The default limit is @code{100}. If set to @samp{on}, Readline will convert characters with the eighth bit set to an @sc{ascii} key sequence by stripping the eighth bit and prefixing an @key{ESC} character, converting them to a -meta-prefixed key sequence. The default value is @samp{on}, but +meta-prefixed key sequence. +The default value is @samp{on}, but will be set to @samp{off} if the locale is one that contains eight-bit characters. +This variable is dependent on the @code{LC_CTYPE} locale category, and +may change if the locale is changed. @item disable-completion @vindex disable-completion @@ -518,7 +552,7 @@ been mapped to @code{self-insert}. The default is @samp{off}. @item echo-control-characters @vindex echo-control-characters When set to @samp{on}, on operating systems that indicate they support it, -readline echoes a character corresponding to a signal generated from the +Readline echoes a character corresponding to a signal generated from the keyboard. The default is @samp{on}. @item editing-mode @@ -540,13 +574,30 @@ non-printing characters, which can be used to embed a terminal control sequence into the mode string. The default is @samp{@@}. +@item enable-active-region +@vindex enable-active-region +The @dfn{point} is the current cursor position, and @dfn{mark} refers +to a saved cursor position (@pxref{Commands For Moving}). +The text between the point and mark is referred to as the @dfn{region}. +When this variable is set to @samp{On}, Readline allows certain commands +to designate the region as @dfn{active}. +When the region is active, Readline highlights the text in the region using +the value of the @code{active-region-start-color}, which defaults to the +string that enables +the terminal's standout mode. +The active region shows the text inserted by bracketed-paste and any +matching text found by incremental and non-incremental history searches. +The default is @samp{On}. + @item enable-bracketed-paste @vindex enable-bracketed-paste -When set to @samp{On}, Readline will configure the terminal in a way -that will enable it to insert each paste into the editing buffer as a -single string of characters, instead of treating each character as if -it had been read from the keyboard. This can prevent pasted characters -from being interpreted as editing commands. The default is @samp{On}. +When set to @samp{On}, Readline configures the terminal to insert each +paste into the editing buffer as a single string of characters, instead +of treating each character as if it had been read from the keyboard. +This is called putting the terminal into @dfn{bracketed paste mode}; +it prevents Readline from executing any editing commands bound to key +sequences appearing in the pasted text. +The default is @samp{On}. @item enable-keypad @vindex enable-keypad @@ -601,6 +652,8 @@ regardless of what the terminal claims it can support. The default value is @samp{off}, but Readline will set it to @samp{on} if the locale contains eight-bit characters. The name @code{meta-flag} is a synonym for this variable. +This variable is dependent on the @code{LC_CTYPE} locale category, and +may change if the locale is changed. @item isearch-terminators @vindex isearch-terminators @@ -683,6 +736,8 @@ eighth bit set directly rather than as a meta-prefixed escape sequence. The default is @samp{off}, but Readline will set it to @samp{on} if the locale contains eight-bit characters. +This variable is dependent on the @code{LC_CTYPE} locale category, and +may change if the locale is changed. @item page-completions @vindex page-completions @@ -700,7 +755,7 @@ The default is @samp{off}. If set to @samp{on}, Readline will undo all changes to history lines before returning when @code{accept-line} is executed. By default, history lines may be modified and retain individual undo lists across -calls to @code{readline}. The default is @samp{off}. +calls to @code{readline()}. The default is @samp{off}. @item show-all-if-ambiguous @vindex show-all-if-ambiguous @@ -732,7 +787,7 @@ The default value is @samp{off}. @vindex skip-completed-text If set to @samp{on}, this alters the default completion behavior when inserting a single match into the line. It's only active when -performing completion in the middle of a word. If enabled, readline +performing completion in the middle of a word. If enabled, Readline does not insert characters from the completion that match characters after point in the word being completed, so portions of the word following the cursor are not duplicated. @@ -792,12 +847,12 @@ interpreted as part of the key name. The name of the key can be expressed in different ways, depending on what you find most comfortable. -In addition to command names, readline allows keys to be bound +In addition to command names, Readline allows keys to be bound to a string that is inserted when the key is pressed (a @var{macro}). @ifset BashFeatures The @w{@code{bind -p}} command displays Readline function names and -bindings in a format that can put directly into an initialization file. +bindings in a format that can be put directly into an initialization file. @xref{Bash Builtins}. @end ifset @@ -1332,6 +1387,11 @@ for editing. A numeric argument, if supplied, specifies the history entry to use instead of the current line. +@item fetch-history () +With a numeric argument, fetch that entry from the history list +and make it the current line. +Without an argument, move back to the first entry in the history list. + @end ftable @node Commands For Text @@ -1668,7 +1728,7 @@ Re-execute the last keyboard macro defined, by making the characters in the macro appear as if typed at the keyboard. @item print-last-kbd-macro () -Print the last keboard macro defined in a format suitable for the +Print the last keyboard macro defined in a format suitable for the @var{inputrc} file. @end ftable @@ -1721,11 +1781,11 @@ the saved position, and the old cursor position is saved as the mark. @item character-search (C-]) A character is read and point is moved to the next occurrence of that -character. A negative count searches for previous occurrences. +character. A negative argument searches for previous occurrences. @item character-search-backward (M-C-]) A character is read and point is moved to the previous occurrence -of that character. A negative count searches for subsequent +of that character. A negative argument searches for subsequent occurrences. @item skip-csi-sequence () @@ -1733,7 +1793,7 @@ Read enough characters to consume a multi-key sequence such as those defined for keys like Home and End. Such sequences begin with a Control Sequence Indicator (CSI), usually ESC-[. If this sequence is bound to "\e[", keys producing such sequences will have no effect -unless explicitly bound to a readline command, instead of inserting +unless explicitly bound to a Readline command, instead of inserting stray characters into the editing buffer. This is unbound by default, but usually bound to ESC-[. @@ -1772,6 +1832,11 @@ the output is formatted in such a way that it can be made part of an @var{inputrc} file. This command is unbound by default. @ifset BashFeatures +@item spell-correct-word (C-x s) +Perform spelling correction on the current word, treating it as a directory +or filename, in the same way as the @code{cdspell} shell option. +Word boundaries are the same as those used by @code{shell-forward-word}. + @item glob-complete-word (M-g) The word before point is treated as a pattern for pathname expansion, with an asterisk implicitly appended. This pattern is used to @@ -2224,6 +2289,7 @@ Names of all shell variables. May also be specified as @option{-v}. @item -C @var{command} @var{command} is executed in a subshell environment, and its output is used as the possible completions. +Arguments are passed as with the @option{-F} option. @item -F @var{function} The shell function @var{function} is executed in the current shell @@ -2401,7 +2467,7 @@ via @var{CDPATH}: Readline can't tell those completions are directories). The @option{-o nospace} option tells Readline to not append a space character to the directory name, in case we want to append to it. The @option{-o bashdefault} option brings in the rest of the "Bash default" -completions -- possible completion that Bash adds to the default Readline +completions -- possible completions that Bash adds to the default Readline set. These include things like command name completion, variable completion for words beginning with @samp{$} or @samp{$@{}, completions containing pathname expansion patterns (@pxref{Filename Expansion}), and so on. diff --git a/doc/rluserman.dvi b/doc/rluserman.dvi index 4c0b142..e9c9e54 100644 Binary files a/doc/rluserman.dvi and b/doc/rluserman.dvi differ diff --git a/doc/rluserman.html b/doc/rluserman.html index ab522ac..b594615 100644 --- a/doc/rluserman.html +++ b/doc/rluserman.html @@ -1,1270 +1,1235 @@ - - - - + + + +GNU Readline Library + + + + + + + + + + + + - - - - - - + - + +

GNU Readline Library

- - - - - - -
[Top][Contents][Index][ ? ]
-

GNU Readline Library

-This document describes the end user interface of the 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 which provide a command line interface. -The Readline home page is http://www.gnu.org/software/readline/. -

- -

- - -
1. Command Line Editing  GNU Readline User's Manual.
A. GNU Free Documentation License  License for copying this manual.
-

- -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
- -

1. Command Line Editing

- -

- -This chapter describes the basic features of the GNU +The Readline home page is http://www.gnu.org/software/readline/. +

+ + + + + + +
+
+ +

1 Command Line Editing

+ +

This chapter describes the basic features of the GNU command line editing interface. -

- -

- - - - - -
1.1 Introduction to Line Editing  Notation used in this text.
1.2 Readline Interaction  The minimum set of commands for editing a line.
1.3 Readline Init File  Customizing Readline from a user's view.
1.4 Bindable Readline Commands  A description of most of the Readline commands - available for binding
1.5 Readline vi Mode  A short description of how to make Readline - behave like the vi editor.
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.1 Introduction to Line Editing

- -

- -The following paragraphs describe the notation used to represent +

+ + +
+
+ +

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 +

+

The text C-k is read as ‘Control-K’ and describes the character +produced when the k key is pressed while the Control key is depressed. -

- -The text M-k is read as `Meta-K' and describes the character -produced when the Meta key (if you have one) is depressed, and the k +

+

The text M-k is read as ‘Meta-K’ and describes the character +produced when the Meta key (if you have one) is depressed, and the k key is pressed. -The Meta key is labeled ALT on many keyboards. -On keyboards with two keys labeled ALT (usually to either side of -the space bar), the ALT on the left side is generally set to +The Meta key is labeled ALT on many keyboards. +On keyboards with two keys labeled ALT (usually to either side of +the space bar), the ALT on the left side is generally set to work as a Meta key. -The ALT key on the right may also be configured to work as a +The ALT key on the right may also be configured to work as a Meta key or may be configured as some other modifier, such as a Compose key for typing accented characters. -

- -If you do not have a Meta or ALT key, or another key working as -a Meta key, the identical keystroke can be generated by typing ESC -first, and then typing k. -Either process is known as metafying the k key. -

- -The text M-C-k is read as `Meta-Control-k' and describes the -character produced by metafying C-k. -

- -In addition, several keys have their own names. Specifically, -DEL, ESC, LFD, SPC, RET, and TAB all +

+

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 +(see 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 +The RET key may be labeled Return or Enter on some keyboards. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.2 Readline Interaction

- -

- -Often during an interactive session you type in a long line of text, +

+
+
+
+ +

1.2 Readline Interaction

+ + +

Often during an interactive session you type in a long line of text, only to notice that the first word on the line is misspelled. The Readline library gives you a set of commands for manipulating the text as you type it in, allowing you to just fix your typo, and not forcing you to retype the majority of the line. Using these editing commands, you move the cursor to the place that needs correction, and delete or insert the text of the corrections. Then, when you are satisfied with -the line, you simply press RET. You do not have to be at the -end of the line to press RET; the entire line is accepted +the line, you simply press RET. You do not have to be at the +end of the line to press RET; the entire line is accepted regardless of the location of the cursor within the line. -

- -

- - - - - -
1.2.1 Readline Bare Essentials  The least you need to know about Readline.
1.2.2 Readline Movement Commands  Moving about the input line.
1.2.3 Readline Killing Commands  How to delete text, and how to get it back!
1.2.4 Readline Arguments  Giving numeric arguments to commands.
1.2.5 Searching for Commands in the History  Searching through previous lines.
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.2.1 Readline Bare Essentials

- -

- -In order to enter characters into the line, simply type them. The typed +

+ + +
+
+ +

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 +

+

Sometimes you may mistype a character, and not notice the error until you have typed several other characters. In -that case, you can type C-b to move the cursor to the left, and then +that case, you can type C-b to move the cursor to the left, and then correct your mistake. Afterwards, you can move the cursor to the right -with C-f. -

- -When you add text in the middle of a line, you will notice that characters -to the right of the cursor are `pushed over' to make room for the text +with C-f. +

+

When you add text in the middle of a line, you will notice that characters +to the right of the cursor are ‘pushed over’ to make room for the text that you have inserted. Likewise, when you delete text behind the cursor, -characters to the right of the cursor are `pulled back' to fill in the +characters to the right of the cursor are ‘pulled back’ to fill in the blank space created by the removal of the text. A list of the bare essentials for editing the text of an input line follows. -

- -

-
C-b -
Move back one character. -
C-f -
Move forward one character. -
DEL or Backspace -
Delete the character to the left of the cursor. -
C-d -
Delete the character underneath the cursor. -
Printing characters -
Insert the character into the line at the cursor. -
C-_ or C-x C-u -
Undo the last editing command. You can undo all the way back to an +

+
+
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 +

(Depending on your configuration, the Backspace key might 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.) -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.2.2 Readline Movement Commands

- -

- -The above table describes the most basic keystrokes that you need +

+
+
+
+ +

1.2.2 Readline Movement Commands

+ + +

The above table describes the most basic keystrokes that you need in order to do editing of the input line. For your convenience, many -other commands have been added in addition to C-b, C-f, -C-d, and DEL. Here are some commands for moving more rapidly +other commands have been added in addition to C-b, C-f, +C-d, and DEL. Here are some commands for moving more rapidly about the line. -

- -

-
C-a -
Move to the start of the line. -
C-e -
Move to the end of the line. -
M-f -
Move forward a word, where a word is composed of letters and digits. -
M-b -
Move backward a word. -
C-l -
Clear the screen, reprinting the current line at the top. -
-

- -Notice how C-f moves forward a character, while M-f moves +

+
+
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. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

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) +

+
+
+
+ +

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 +(‘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. +

+

When you use a kill command, the text is saved in a kill-ring. Any number of consecutive kills save all of the killed text together, so that when you yank it back, you get it all. The kill ring is not line specific; the text that you killed on a previously typed line is available to be yanked back later, when you are typing another line. - -

- -Here is the list of commands for killing text. -

- -

-
C-k -
Kill the text from the current cursor position to the end of the line. -

- -

M-d -
Kill from the cursor to the end of the current word, or, if between + +

+

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 +Word boundaries are the same as those used by M-f. +

+
+
M-DEL
+

Kill from the cursor to 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 +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. -
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

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 +

+
+
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 argument that is significant. If you pass a negative argument to a command which normally acts in a forward direction, that command will act in a backward direction. For example, to kill text back to the -start of the line, you might type `M-- C-k'. -

- -The general way to pass numeric arguments to a command is to type meta -digits before the command. If the first `digit' typed is a minus -sign (`-'), then the sign of the argument will be negative. Once +start of the line, you might type ‘M-- C-k’. +

+

The general way to pass numeric arguments to a command is to type meta +digits before the command. If the first ‘digit’ typed is a minus +sign (‘-’), then the sign of the argument will be negative. Once you have typed one meta digit to get the argument started, you can type the remainder of the digits, and then the command. For example, to give -the C-d command an argument of 10, you could type `M-1 0 C-d', +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. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.2.5 Searching for Commands in the History

- -

- -Readline provides commands for searching through the command history +

+
+
+
+ +

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 +There are two search modes: incremental and non-incremental. +

+

Incremental searches begin before the user has finished typing the search string. As each character of the search string is typed, Readline displays the next entry from the history matching the string typed so far. An incremental search requires only as many characters as needed to find the desired history entry. To search backward in the history for a particular string, type -C-r. Typing C-s searches forward through the history. -The characters present in the value of the isearch-terminators variable +C-r. Typing C-s searches forward through the history. +The characters present in the value of the isearch-terminators variable are used to terminate an incremental search. -If that variable has not been assigned a value, the ESC and -C-J characters will terminate an incremental search. -C-g will abort an incremental search and restore the original line. +If that variable has not been assigned a value, the ESC and +C-J characters will terminate an incremental search. +C-g will abort an incremental search and restore the original line. When the search is terminated, the history entry containing the search string becomes the current line. -

- -To find other matching entries in the history list, type C-r or -C-s as appropriate. +

+

To find other matching entries in the history list, type C-r or +C-s as appropriate. This will search backward or forward in the history for the next entry matching the search string typed so far. Any other key sequence bound to a Readline command will terminate the search and execute that command. -For instance, a RET will terminate the search and accept +For instance, a RET will terminate the search and accept the line, thereby executing the command from the history list. A movement command will terminate the search, make the last line found the current line, and begin editing. -

- -Readline remembers the last incremental search string. If two -C-rs are typed without any intervening characters defining a new +

+

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 +

+

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. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.3 Readline Init File

- -

- -Although the Readline library comes with a set of Emacs-like +

+
+
+
+
+ +

1.3 Readline Init File

+ + +

Although the Readline library comes with a set of Emacs-like keybindings installed by default, it is possible to use a different set of keybindings. Any user can customize programs that use Readline by putting -commands in an inputrc file, conventionally in his home directory. +commands in an inputrc file, +conventionally in their home directory. The name of this -file is taken from the value of the environment variable INPUTRC. If -that variable is unset, the default is `~/.inputrc'. If that +file is taken from the value of the environment variable INPUTRC. If +that variable is unset, the default is ~/.inputrc. If that file does not exist or cannot be read, the ultimate default is -`/etc/inputrc'. -

- -When a program which uses the Readline library starts up, the +/etc/inputrc. +

+

When a program which uses the Readline library starts up, the init file is read, and the key bindings are set. -

- -In addition, the C-x C-r command re-reads this init file, thus +

+

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  Syntax for the commands in the inputrc file.
- -
- - -
1.3.2 Conditional Init Constructs  Conditional key bindings in the inputrc file.
- -
- - -
1.3.3 Sample Init File  An example inputrc file.
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.3.1 Readline Init File Syntax

- -

- -There are only a few basic constructs allowed in the +

+ + +
+
+ +

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 +Lines beginning with a ‘#’ are comments. +Lines beginning with a ‘$’ indicate conditional +constructs (see Conditional Init Constructs). Other lines denote variable settings and key bindings. -

- -

-
Variable Settings -
You can modify the run-time behavior of Readline by +

+
+
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. +using the set command within the init file. The syntax is simple: -

+

+
+
set variable value
+
-
 
set variable value
-

- -Here, for example, is how to +

Here, for example, is how to change from the default Emacs-like key binding to use -vi line editing commands: -

- -
 
set editing-mode vi
-

+vi line editing commands: +

+
+
set editing-mode vi
+
-Variable names and values, where appropriate, are recognized without regard +

Variable names and values, where appropriate, are recognized without regard to case. Unrecognized variable names are ignored. -

- -Boolean variables (those that can be set to on or off) are set to on if -the value is null or empty, on (case-insensitive), or 1. Any other +

+

Boolean variables (those that can be set to on or off) are set to on if +the value is null or empty, on (case-insensitive), or 1. Any other value results in the variable being set to off. -

+

-A great deal of run-time behavior is changeable with the following +

A great deal of run-time behavior is changeable with the following variables. -

- - -

- -
bell-style -
-Controls what happens when Readline wants to ring the terminal bell. -If set to `none', Readline never rings the bell. If set to -`visible', Readline uses a visible bell if one is available. -If set to `audible' (the default), Readline attempts to ring -the terminal's bell. -

- -

bind-tty-special-chars -
-If set to `on' (the default), Readline attempts to bind the control -characters treated specially by the kernel's terminal driver to their +

+ +
+
active-region-start-color
+

A string variable that controls the text color and background when displaying +the text in the active region (see the description of +enable-active-region below). +This string must not take up any physical character positions on the display, +so it should consist only of terminal escape sequences. +It is output to the terminal before displaying the text in the active region. +This variable is reset to the default value whenever the terminal type changes. +The default value is the string that puts the terminal in standout mode, +as obtained from the terminal’s terminfo description. +A sample value might be ‘\e[01;33m’. +

+
+
active-region-end-color
+

A string variable that "undoes" the effects of active-region-start-color +and restores "normal" terminal display appearance after displaying text +in the active region. +This string must not take up any physical character positions on the display, +so it should consist only of terminal escape sequences. +It is output to the terminal after displaying the text in the active region. +This variable is reset to the default value whenever the terminal type changes. +The default value is the string that restores the terminal from standout mode, +as obtained from the terminal’s terminfo description. +A sample value might be ‘\e[0m’. +

+
+
bell-style
+

Controls what happens when Readline wants to ring the terminal bell. +If set to ‘none’, Readline never rings the bell. If set to +‘visible’, Readline uses a visible bell if one is available. +If set to ‘audible’ (the default), Readline attempts to ring +the terminal’s bell. +

+
+
bind-tty-special-chars
+

If set to ‘on’ (the default), Readline attempts to bind the control +characters treated specially by the kernel’s terminal driver to their Readline equivalents. -

- -

blink-matching-paren -
-If set to `on', Readline attempts to briefly move the cursor to an +

+
+ +

If set to ‘on’, Readline attempts to briefly move the cursor to an opening parenthesis when a closing parenthesis is inserted. The default -is `off'. -

- -

colored-completion-prefix -
-If set to `on', when listing completions, Readline displays the +is ‘off’. +

+
+
colored-completion-prefix
+

If set to ‘on’, when listing completions, Readline displays the common prefix of the set of possible completions using a different color. -The color definitions are taken from the value of the LS_COLORS +The color definitions are taken from the value of the LS_COLORS environment variable. -The default is `off'. -

- -

colored-stats -
-If set to `on', Readline displays possible completions using different +If there is a color definition in LS_COLORS for the custom suffix +‘readline-colored-completion-prefix’, Readline uses this color for +the common prefix instead of its default. +The default is ‘off’. +

+
+
colored-stats
+

If set to ‘on’, Readline displays possible completions using different colors to indicate their file type. -The color definitions are taken from the value of the LS_COLORS +The color definitions are taken from the value of the LS_COLORS environment variable. -The default is `off'. -

- -

comment-begin -
-The string to insert at the beginning of the line when the -insert-comment command is executed. The default value -is "#". -

- -

completion-display-width -
-The number of screen columns used to display possible matches +The default is ‘off’. +

+
+
comment-begin
+

The string to insert at the beginning of the line when the +insert-comment command is executed. The default value +is "#". +

+
+
completion-display-width
+

The number of screen columns used to display possible matches when performing completion. The value is ignored if it is less than 0 or greater than the terminal screen width. A value of 0 will cause matches to be displayed one per line. The default value is -1. -

- -

completion-ignore-case -
-If set to `on', Readline performs filename matching and completion +

+
+
completion-ignore-case
+

If set to ‘on’, Readline performs filename matching and completion in a case-insensitive fashion. -The default value is `off'. -

- -

completion-map-case -
-If set to `on', and completion-ignore-case is enabled, Readline -treats hyphens (`-') and underscores (`_') as equivalent when +The default value is ‘off’. +

+
+
completion-map-case
+

If set to ‘on’, and completion-ignore-case is enabled, Readline +treats hyphens (‘-’) and underscores (‘_’) as equivalent when performing case-insensitive filename matching and completion. -The default value is `off'. -

- -

completion-prefix-display-length -
-The length in characters of the common prefix of a list of possible +The default value is ‘off’. +

+
+
completion-prefix-display-length
+

The length in characters of the common prefix of a list of possible completions that is displayed without modification. When set to a value greater than zero, common prefixes longer than this value are replaced with an ellipsis when displaying possible completions. -

- -

completion-query-items -
-The number of possible completions that determines when the user is +

+
+
completion-query-items
+

The number of possible completions that determines when the user is asked whether the list of possibilities should be displayed. If the number of possible completions is greater than or equal to this value, Readline will ask whether or not the user wishes to view them; otherwise, they are simply listed. -This variable must be set to an integer value greater than or equal to 0. -A negative value means Readline should never ask. -The default limit is 100. -

- -

convert-meta -
-If set to `on', Readline will convert characters with the -eighth bit set to an ASCII key sequence by stripping the eighth -bit and prefixing an ESC character, converting them to a -meta-prefixed key sequence. The default value is `on', but -will be set to `off' if the locale is one that contains +This variable must be set to an integer value greater than or equal to zero. +A zero value means Readline should never ask; negative values are +treated as zero. +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’, but +will be set to ‘off’ if the locale is one that contains eight-bit characters. -

- -

disable-completion -
-If set to `On', Readline will inhibit word completion. +This variable is dependent on the LC_CTYPE locale category, and +may change if the locale is changed. +

+
+
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'. -

- -

echo-control-characters -
-When set to `on', on operating systems that indicate they support it, -readline echoes a character corresponding to a signal generated from the -keyboard. The default is `on'. -

- -

editing-mode -
-The editing-mode variable controls which default set of +been mapped to self-insert. The default is ‘off’. +

+
+
echo-control-characters
+

When set to ‘on’, on operating systems that indicate they support it, +Readline echoes a character corresponding to a signal generated from the +keyboard. The default is ‘on’. +

+
+
editing-mode
+

The editing-mode variable controls which default set of key bindings is used. By default, Readline starts up in Emacs editing mode, where the keystrokes are most similar to Emacs. This variable can be -set to either `emacs' or `vi'. -

- -

emacs-mode-string -
-If the show-mode-in-prompt variable is enabled, +set to either ‘emacs’ or ‘vi’. +

+
+
emacs-mode-string
+

If the show-mode-in-prompt variable is enabled, this string is displayed immediately before the last line of the primary prompt when emacs editing mode is active. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. -Use the `\1' and `\2' escapes to begin and end sequences of +Use the ‘\1’ and ‘\2’ escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. -The default is `@'. -

- -

enable-bracketed-paste -
-When set to `On', Readline will configure the terminal in a way -that will enable it to insert each paste into the editing buffer as a -single string of characters, instead of treating each character as if -it had been read from the keyboard. This can prevent pasted characters -from being interpreted as editing commands. The default is `On'. -

- -

enable-keypad -
-When set to `on', Readline will try to enable the application +The default is ‘@’. +

+
+
enable-active-region
+

The point is the current cursor position, and mark refers +to a saved cursor position (see Commands For Moving). +The text between the point and mark is referred to as the region. +When this variable is set to ‘On’, Readline allows certain commands +to designate the region as active. +When the region is active, Readline highlights the text in the region using +the value of the active-region-start-color, which defaults to the +string that enables +the terminal’s standout mode. +The active region shows the text inserted by bracketed-paste and any +matching text found by incremental and non-incremental history searches. +The default is ‘On’. +

+
+
enable-bracketed-paste
+

When set to ‘On’, Readline configures the terminal to insert each +paste into the editing buffer as a single string of characters, instead +of treating each character as if it had been read from the keyboard. +This is called putting the terminal into bracketed paste mode; +it prevents Readline from executing any editing commands bound to key +sequences appearing in the pasted text. +The default is ‘On’. +

+
+
enable-keypad
+

When set to ‘on’, Readline will try to enable the application keypad when it is called. Some systems need this to enable the -arrow keys. The default is `off'. -

- -

enable-meta-key -
When set to `on', Readline will try to enable any meta modifier +arrow keys. The default is ‘off’. +

+
+
enable-meta-key
+

When set to ‘on’, Readline will try to enable any meta modifier key the terminal claims to support when it is called. On many terminals, the meta key is used to send eight-bit characters. -The default is `on'. -

- -

expand-tilde -
-If set to `on', tilde expansion is performed when Readline -attempts word completion. The default is `off'. -

- -

history-preserve-point -
-If set to `on', the history code attempts to place the point (the +The default is ‘on’. +

+
+
expand-tilde
+

If set to ‘on’, tilde expansion is performed when Readline +attempts word completion. The default is ‘off’. +

+
+
history-preserve-point
+

If set to ‘on’, the history code attempts to place the point (the current cursor position) at the -same location on each history line retrieved with previous-history -or next-history. The default is `off'. -

- -

history-size -
-Set the maximum number of history entries saved in the history list. +same location on each history line retrieved with previous-history +or next-history. The default is ‘off’. +

+
+
history-size
+

Set the maximum number of history entries saved in the history list. If set to zero, any existing history entries are deleted and no new entries are saved. If set to a value less than zero, the number of history entries is not limited. By default, the number of history entries is not limited. -If an attempt is made to set history-size to a non-numeric value, +If an attempt is made to set history-size to a non-numeric value, the maximum number of history entries will be set to 500. -

- -

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 +

+
+
horizontal-scroll-mode
+

This variable can be set to either ‘on’ or ‘off’. Setting it +to ‘on’ means that the text of the lines being edited will scroll horizontally on a single screen line when they are longer than the width of the screen, instead of wrapping onto a new screen line. -This variable is automatically set to `on' for terminals of height 1. -By default, this variable is set to `off'. -

- -

input-meta -
- -If set to `on', Readline will enable eight-bit input (it +This variable is automatically set to ‘on’ for terminals of height 1. +By default, this variable is set to ‘off’. +

+
+
input-meta
+
+

If set to ‘on’, Readline will enable eight-bit input (it will not clear the eighth bit in the characters it reads), regardless of what the terminal claims it can support. The -default value is `off', but Readline will set it to `on' if the +default value is ‘off’, but Readline will set it to ‘on’ if the locale contains eight-bit characters. -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. -Built-in keymap names are -emacs, -emacs-standard, -emacs-meta, -emacs-ctlx, -vi, -vi-move, -vi-command, and -vi-insert. -vi is equivalent to vi-command (vi-move is also a -synonym); emacs is equivalent to emacs-standard. +The name meta-flag is a synonym for this variable. +This variable is dependent on the LC_CTYPE locale category, and +may change if the locale is changed. +

+
+
isearch-terminators
+

The string of characters that should terminate an incremental search without +subsequently executing the character as a command (see 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. +Built-in keymap names are +emacs, +emacs-standard, +emacs-meta, +emacs-ctlx, +vi, +vi-move, +vi-command, and +vi-insert. +vi is equivalent to vi-command (vi-move is also a +synonym); emacs is equivalent to emacs-standard. Applications may add additional names. -The default value is emacs. -The value of the editing-mode variable also affects the +The default value is emacs. +The value of the editing-mode variable also affects the default keymap. -

- -

keyseq-timeout -
Specifies the duration Readline will wait for a character when reading an +

+
+
keyseq-timeout
+

Specifies the duration Readline will wait for a character when reading an ambiguous key sequence (one that can form a complete key sequence using the input read so far, or can take additional input to complete a longer key sequence). If no input is received within the timeout, Readline will use the shorter but complete key sequence. Readline uses this value to determine whether or not input is -available on the current input source (rl_instream by default). +available on the current input source (rl_instream by default). The value is specified in milliseconds, so a value of 1000 means that Readline will wait one second for additional input. If this variable is set to a value less than or equal to zero, or to a non-numeric value, Readline will wait until another key is pressed to decide which key sequence to complete. -The default value is 500. -

- -

mark-directories -
If set to `on', completed directory names have a slash -appended. The default is `on'. -

- -

mark-modified-lines -
-This variable, when set to `on', causes Readline to display an -asterisk (`*') at the start of history lines which have been modified. -This variable is `off' by default. -

- -

mark-symlinked-directories -
-If set to `on', completed names which are symbolic links +The default value is 500. +

+
+
mark-directories
+

If set to ‘on’, completed directory names have a slash +appended. The default is ‘on’. +

+
+
mark-modified-lines
+

This variable, when set to ‘on’, causes Readline to display an +asterisk (‘*’) at the start of history lines which have been modified. +This variable is ‘off’ by default. +

+
+
mark-symlinked-directories
+

If set to ‘on’, completed names which are symbolic links to directories have a slash appended (subject to the value of -mark-directories). -The default is `off'. -

- -

match-hidden-files -
-This variable, when set to `on', causes Readline to match files whose -names begin with a `.' (hidden files) when performing filename +mark-directories). +The default is ‘off’. +

+
+
match-hidden-files
+

This variable, when set to ‘on’, causes Readline to match files whose +names begin with a ‘.’ (hidden files) when performing filename completion. -If set to `off', the leading `.' must be +If set to ‘off’, the leading ‘.’ must be supplied by the user in the filename to be completed. -This variable is `on' by default. -

- -

menu-complete-display-prefix -
-If set to `on', menu completion displays the common prefix of the +This variable is ‘on’ by default. +

+
+
menu-complete-display-prefix
+

If set to ‘on’, menu completion displays the common prefix of the list of possible completions (which may be empty) before cycling through -the list. The default is `off'. -

- -

output-meta -
-If set to `on', Readline will display characters with the +the list. The default is ‘off’. +

+
+
output-meta
+

If set to ‘on’, Readline will display characters with the eighth bit set directly rather than as a meta-prefixed escape sequence. -The default is `off', but Readline will set it to `on' if the +The default is ‘off’, but Readline will set it to ‘on’ if the locale contains eight-bit characters. -

- -

page-completions -
-If set to `on', Readline uses an internal more-like pager +This variable is dependent on the LC_CTYPE locale category, and +may change if the locale is changed. +

+
+
page-completions
+

If set to ‘on’, Readline uses an internal more-like pager to display a screenful of possible completions at a time. -This variable is `on' by default. -

- -

print-completions-horizontally -
If set to `on', Readline will display completions with matches +This variable is ‘on’ by default. +

+
+
print-completions-horizontally
+

If set to ‘on’, Readline will display completions with matches sorted horizontally in alphabetical order, rather than down the screen. -The default is `off'. -

- -

revert-all-at-newline -
-If set to `on', Readline will undo all changes to history lines -before returning when accept-line is executed. By default, +The default is ‘off’. +

+
+
revert-all-at-newline
+

If set to ‘on’, Readline will undo all changes to history lines +before returning when accept-line is executed. By default, history lines may be modified and retain individual undo lists across -calls to readline. The default is `off'. -

- -

show-all-if-ambiguous -
-This alters the default behavior of the completion functions. If -set to `on', +calls to readline(). The default is ‘off’. +

+
+
show-all-if-ambiguous
+

This alters the default behavior of the completion functions. If +set to ‘on’, words which have more than one possible completion cause the matches to be listed immediately instead of ringing the bell. -The default value is `off'. -

- -

show-all-if-unmodified -
-This alters the default behavior of the completion functions in -a fashion similar to show-all-if-ambiguous. -If set to `on', +The default value is ‘off’. +

+
+
show-all-if-unmodified
+

This alters the default behavior of the completion functions in +a fashion similar to show-all-if-ambiguous. +If set to ‘on’, words which have more than one possible completion without any -possible partial completion (the possible completions don't share +possible partial completion (the possible completions don’t share a common prefix) cause the matches to be listed immediately instead of ringing the bell. -The default value is `off'. -

- -

show-mode-in-prompt -
-If set to `on', add a string to the beginning of the prompt +The default value is ‘off’. +

+
+
show-mode-in-prompt
+

If set to ‘on’, add a string to the beginning of the prompt indicating the editing mode: emacs, vi command, or vi insertion. -The mode strings are user-settable (e.g., emacs-mode-string). -The default value is `off'. -

- -

skip-completed-text -
-If set to `on', this alters the default completion behavior when -inserting a single match into the line. It's only active when -performing completion in the middle of a word. If enabled, readline +The mode strings are user-settable (e.g., emacs-mode-string). +The default value is ‘off’. +

+
+
skip-completed-text
+

If set to ‘on’, this alters the default completion behavior when +inserting a single match into the line. It’s only active when +performing completion in the middle of a word. If enabled, Readline does not insert characters from the completion that match characters after point in the word being completed, so portions of the word following the cursor are not duplicated. For instance, if this is enabled, attempting completion when the cursor -is after the `e' in `Makefile' will result in `Makefile' -rather than `Makefilefile', assuming there is a single possible +is after the ‘e’ in ‘Makefile’ will result in ‘Makefile’ +rather than ‘Makefilefile’, assuming there is a single possible completion. -The default value is `off'. -

- -

vi-cmd-mode-string -
-If the show-mode-in-prompt variable is enabled, +The default value is ‘off’. +

+
+
vi-cmd-mode-string
+

If the show-mode-in-prompt variable is enabled, this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in command mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. -Use the `\1' and `\2' escapes to begin and end sequences of +Use the ‘\1’ and ‘\2’ escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. -The default is `(cmd)'. -

- -

vi-ins-mode-string -
-If the show-mode-in-prompt variable is enabled, +The default is ‘(cmd)’. +

+
+
vi-ins-mode-string
+

If the show-mode-in-prompt variable is enabled, this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in insertion mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. -Use the `\1' and `\2' escapes to begin and end sequences of +Use the ‘\1’ and ‘\2’ escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. -The default is `(ins)'. -

- -

visible-stats -
-If set to `on', a character denoting a file's type +The default is ‘(ins)’. +

+
+
visible-stats
+

If set to ‘on’, a character denoting a file’s type is appended to the filename when listing possible -completions. The default is `off'. -

- -

-

- -

Key Bindings -
The syntax for controlling key bindings in the init file is +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 +

+

Once you know the name of the command, simply place on a line in the init file the name of the key you wish to bind the command to, a colon, and then the name of the command. -There can be no space between the key name and the colon -- that will be +There can be no space between the key name and the colon – that will be interpreted as part of the key name. The name of the key can be expressed in different ways, depending on what you find most comfortable. -

- -In addition to command names, readline allows keys to be bound -to a string that is inserted when the key is pressed (a macro). -

- -

-
keyname: function-name or macro -
keyname is the name of a key spelled out in English. For example: -
 
Control-u: universal-argument
+

+

In addition to command names, Readline allows keys to be bound +to a string that is inserted when the key is pressed (a macro). +

+ +
+
keynamefunction-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"
-

+Control-o: "> output" +

-In the example above, C-u is bound to the function -universal-argument, -M-DEL is bound to the function backward-kill-word, and -C-o is bound to run the macro +

In the example above, C-u is bound to the function +universal-argument, +M-DEL is bound to the function backward-kill-word, and +C-o is bound to run the macro expressed on the right hand side (that is, to insert the text -`> output' into the line). -

- -A number of symbolic character names are recognized while +‘> output’ into the line). +

+

A number of symbolic character names are recognized while processing this key binding syntax: -DEL, -ESC, -ESCAPE, -LFD, -NEWLINE, -RET, -RETURN, -RUBOUT, -SPACE, -SPC, +DEL, +ESC, +ESCAPE, +LFD, +NEWLINE, +RET, +RETURN, +RUBOUT, +SPACE, +SPC, and -TAB. -

- -

"keyseq": function-name or macro -
keyseq differs from keyname above in that strings +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 +the key sequence in double quotes. Some GNU Emacs style key escapes can be used, as in the following example, but the special character names are not recognized. -

- -
 
"\C-u": universal-argument
-"\C-x\C-r": re-read-init-file
-"\e[11~": "Function Key 1"
-

- -In the above example, C-u is again bound to the function -universal-argument (just as it was in the first example), -`C-x C-r' is bound to the function re-read-init-file, -and `ESC [ 1 1 ~' is bound to insert -the text `Function Key 1'. -

- - -

- -The following GNU Emacs style escape sequences are available when +

+
+
"\C-u": universal-argument
+"\C-x\C-r": re-read-init-file
+"\e[11~": "Function Key 1"
+
+ +

In the above example, C-u is again bound to the function +universal-argument (just as it was in the first example), +‘C-x C-r’ is bound to the function re-read-init-file, +and ‘ESC [ 1 1 ~’ is bound to insert +the text ‘Function Key 1’. +

+
+ + +

The following GNU Emacs style escape sequences are available when specifying key sequences: -

- -

-
\C- -
control prefix -
\M- -
meta prefix -
\e -
an escape character -
\\ -
backslash -
\" -
", a double quotation mark -
\' -
', a single quote or apostrophe -
-

- -In addition to the GNU Emacs style escape sequences, a second +

+
+
\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 +

+
+
\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 +

+
\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 +

When entering the text of a macro, single or double quotes must be used to indicate a macro definition. Unquoted text is assumed to be a function name. In the macro body, the backslash escapes described above are expanded. Backslash will quote any other character in the macro text, -including `"' and `''. -For example, the following binding will make `C-x \' -insert a single `\' into the line: -
 
"\C-x\\": "\\"
-

- - -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.3.2 Conditional Init Constructs

- -

- -Readline implements a facility similar in spirit to the conditional +including ‘"’ and ‘'’. +For example, the following binding will make ‘C-x \’ +insert a single ‘\’ into the line: +

+
"\C-x\\": "\\"
+
+ + + + +
+
+
+ +

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 +

+
+
$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, after any comparison operator, extends to the end of the line; unless otherwise noted, 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. +

+
+
mode
+

The mode= form of the $if directive is used to test +whether Readline is in emacs or vi mode. This may be used in conjunction -with the `set keymap' command, for instance, to set bindings in -the emacs-standard and emacs-ctlx keymaps only if -Readline is starting out in emacs mode. -

- -

term -
The term= form may be used to include terminal-specific +with the ‘set keymap’ command, for instance, to set bindings in +the emacs-standard and emacs-ctlx keymaps only if +Readline is starting out in emacs mode. +

+
+
term
+

The term= form may be used to include terminal-specific key bindings, perhaps to bind the key sequences output by the -terminal's function keys. The word on the right side of the -`=' is tested against both the full name of the terminal and -the portion of the terminal name before the first `-'. This -allows sun to match both sun and sun-cmd, +terminal’s function keys. The word on the right side of the +‘=’ is tested against both the full name of the terminal and +the portion of the terminal name before the first ‘-’. This +allows sun to match both sun and sun-cmd, for instance. -

- -

version -
The version test may be used to perform comparisons against +

+
+
version
+

The version test may be used to perform comparisons against specific Readline versions. -The version expands to the current Readline version. +The version expands to the current Readline version. The set of comparison operators includes -`=' (and `=='), `!=', `<=', `>=', `<', -and `>'. +‘=’ (and ‘==’), ‘!=’, ‘<=’, ‘>=’, ‘<’, +and ‘>’. The version number supplied on the right side of the operator consists of a major version number, an optional decimal point, and an optional -minor version (e.g., `7.1'). If the minor version is omitted, it -is assumed to be `0'. -The operator may be separated from the string version and +minor version (e.g., ‘7.1’). If the minor version is omitted, it +is assumed to be ‘0’. +The operator may be separated from the string version and from the version number argument by whitespace. The following example sets a variable if the Readline version being used is 7.0 or newer: -
 
$if version >= 7.0
+

+
$if version >= 7.0
 set show-mode-in-prompt on
 $endif
-

+

-
application -
The application construct is used to include +
+
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 +library sets the application name, and you can test for a particular value. This could be used to bind key sequences to functions useful for a specific program. For instance, the following command adds a key sequence that quotes the current or previous word in Bash: -
 
$if Bash
+

+
$if Bash
 # Quote the current or previous word
-"\C-xq": "\eb\"\ef\""
+"\C-xq": "\eb\"\ef\""
 $endif
-

+

-
variable -
The variable construct provides simple equality tests for Readline +
+
variable
+

The variable construct provides simple equality tests for Readline variables and values. -The permitted comparison operators are `=', `==', and `!='. +The permitted comparison operators are ‘=’, ‘==’, and ‘!=’. The variable name must be separated from the comparison operator by whitespace; the operator may be separated from the value on the right hand side by whitespace. Both string and boolean variables may be tested. Boolean variables must be -tested against the values on and off. -The following example is equivalent to the mode=emacs test described +tested against the values on and off. +The following example is equivalent to the mode=emacs test described above: -
 
$if editing-mode == emacs
+

+
$if editing-mode == emacs
 set show-mode-in-prompt on
 $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 +
+ + + + +
$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 +

+
+
$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
-
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.3.3 Sample Init File

- -

- -Here is an example of an inputrc file. This illustrates key +For example, the following directive reads from /etc/inputrc: +

+
$include /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
+

+
+
# This file controls the behaviour of line input editing for
 # programs that use the GNU Readline library.  Existing
 # programs include FTP, Bash, and GDB.
 #
@@ -1287,31 +1252,31 @@ Meta-Control-h:	backward-kill-word	Text after the function name is ignored
 #
 # Arrow keys in keypad mode
 #
-#"\M-OD":        backward-char
-#"\M-OC":        forward-char
-#"\M-OA":        previous-history
-#"\M-OB":        next-history
+#"\M-OD":        backward-char
+#"\M-OC":        forward-char
+#"\M-OA":        previous-history
+#"\M-OB":        next-history
 #
 # Arrow keys in ANSI mode
 #
-"\M-[D":        backward-char
-"\M-[C":        forward-char
-"\M-[A":        previous-history
-"\M-[B":        next-history
+"\M-[D":        backward-char
+"\M-[C":        forward-char
+"\M-[A":        previous-history
+"\M-[B":        next-history
 #
 # Arrow keys in 8 bit keypad mode
 #
-#"\M-\C-OD":       backward-char
-#"\M-\C-OC":       forward-char
-#"\M-\C-OA":       previous-history
-#"\M-\C-OB":       next-history
+#"\M-\C-OD":       backward-char
+#"\M-\C-OC":       forward-char
+#"\M-\C-OA":       previous-history
+#"\M-\C-OB":       next-history
 #
 # Arrow keys in 8 bit ANSI mode
 #
-#"\M-\C-[D":       backward-char
-#"\M-\C-[C":       forward-char
-#"\M-\C-[A":       previous-history
-#"\M-\C-[B":       next-history
+#"\M-\C-[D":       backward-char
+#"\M-\C-[C":       forward-char
+#"\M-\C-[A":       previous-history
+#"\M-\C-[B":       next-history
 
 C-q: quoted-insert
 
@@ -1323,20 +1288,20 @@ TAB: complete
 # Macros that are convenient for shell interaction
 $if Bash
 # edit the path
-"\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
+"\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
 # prepare to type a quoted word --
 # insert open and close double quotes
 # and move to just after the open quote
-"\C-x\"": "\"\"\C-b"
+"\C-x\"": "\"\"\C-b"
 # insert a backslash (testing backslash escapes
 # in sequences and macros)
-"\C-x\\": "\\"
+"\C-x\\": "\\"
 # Quote the current or previous word
-"\C-xq": "\eb\"\ef\""
+"\C-xq": "\eb\"\ef\""
 # Add a binding to refresh the line, which is unbound
-"\C-xr": redraw-current-line
+"\C-xr": redraw-current-line
 # Edit variable on current line.
-"\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
+"\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
 $endif
 
 # use a visible bell if one is available
@@ -1359,647 +1324,473 @@ set completion-query-items 150
 
 # For FTP
 $if Ftp
-"\C-xg": "get \M-?"
-"\C-xt": "put \M-?"
-"\M-.": yank-last-arg
+"\C-xg": "get \M-?"
+"\C-xt": "put \M-?"
+"\M-.": yank-last-arg
 $endif
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.4 Bindable Readline Commands

- -

- -

- - - - - - - - -
1.4.1 Commands For Moving  Moving about the line.
1.4.2 Commands For Manipulating The History  Getting at previous lines.
1.4.3 Commands For Changing Text  Commands for changing text.
1.4.4 Killing And Yanking  Commands for killing and yanking.
1.4.5 Specifying Numeric Arguments  Specifying numeric arguments, repeat counts.
1.4.6 Letting Readline Type For You  Getting Readline to do the typing for you.
1.4.7 Keyboard Macros  Saving and re-executing typed characters
1.4.8 Some Miscellaneous Commands  Other miscellaneous commands.
-

- -This section describes Readline commands that may be bound to key +

+ +
+ + +
+ +

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. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

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. +

+

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. +

+
+
backward-word (M-b)
+

Move back to the start of the current or previous word. Words are composed of letters and digits. -

+

- -
previous-screen-line () -
-Attempt to move point to the same physical screen column on the previous +
+
previous-screen-line ()
+

Attempt to move point to the same physical screen column on the previous physical screen line. This will not have the desired effect if the current Readline line does not take up more than one physical line or if point is not greater than the length of the prompt plus the screen width. -

- - -

next-screen-line () -
-Attempt to move point to the same physical screen column on the next +

+
+
next-screen-line ()
+

Attempt to move point to the same physical screen column on the next physical screen line. This will not have the desired effect if the current Readline line does not take up more than one physical line or if the length of the current Readline line is not greater than the length of the prompt plus the screen width. -

- - -

clear-display (M-C-l) -
-Clear the screen and, if possible, the terminal's scrollback buffer, +

+
+
clear-display (M-C-l)
+

Clear the screen and, if possible, the terminal’s scrollback buffer, then redraw the current line, leaving the current line at the top of the screen. -

- - -

clear-screen (C-l) -
-Clear the screen, +

+
+
clear-screen (C-l)
+

Clear the screen, then 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. -

- -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.4.2 Commands For Manipulating The History

- -

- -

- -
accept-line (Newline or Return) -
-Accept the line regardless of where the cursor is. +

+
+
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 non-empty, it may be added to the history list for future recall with -add_history(). +add_history(). If this line is a modified history line, the history line is restored to its original state. -

- - -

previous-history (C-p) -
-Move `back' through the history list, fetching the previous command. -

- - -

next-history (C-n) -
-Move `forward' through the history list, fetching the next command. -

- - -

beginning-of-history (M-<) -
-Move to the first line in the history. -

- - -

end-of-history (M->) -
-Move to the end of the input history, i.e., the line currently +

+
+
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 +

+
+
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. This command sets the region to the matched text and activates the mark. -

- - -

forward-search-history (C-s) -
-Search forward starting at the current line and moving `down' through +

+
+
forward-search-history (C-s)
+

Search forward starting at the current line and moving ‘down’ through the history as necessary. This is an incremental search. This command sets the region to the matched text and activates the mark. -

- - -

non-incremental-reverse-search-history (M-p) -
-Search backward starting at the current line and moving `up' +

+
+
non-incremental-reverse-search-history (M-p)
+

Search backward starting at the current line and moving ‘up’ through the history as necessary using a non-incremental search for a string supplied by the user. The search string may match anywhere in a history line. -

- - -

non-incremental-forward-search-history (M-n) -
-Search forward starting at the current line and moving `down' +

+
+
non-incremental-forward-search-history (M-n)
+

Search forward starting at the current line and moving ‘down’ through the history as necessary using a non-incremental search for a string supplied by the user. The search string may match anywhere in a history line. -

- - -

history-search-forward () -
-Search forward through the history for the string of characters +

+
+
history-search-forward ()
+

Search forward through the history for the string of characters between the start of the current line and the point. The search string must match at the beginning of a history line. This is a non-incremental search. By default, this command is unbound. -

- - -

history-search-backward () -
-Search backward through the history for the string of characters +

+
+
history-search-backward ()
+

Search backward through the history for the string of characters between the start of the current line and the point. The search string must match at the beginning of a history line. This is a non-incremental search. By default, this command is unbound. -

- - -

history-substring-search-forward () -
-Search forward through the history for the string of characters +

+
+
history-substring-search-forward ()
+

Search forward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. This is a non-incremental search. By default, this command is unbound. -

- - -

history-substring-search-backward () -
-Search backward through the history for the string of characters +

+
+
history-substring-search-backward ()
+

Search backward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. This is a non-incremental search. By default, this command is unbound. -

- - -

yank-nth-arg (M-C-y) -
-Insert the first argument to the previous command (usually +

+
+
yank-nth-arg (M-C-y)
+

Insert the first argument to the previous command (usually the second word on the previous line) at point. -With an argument n, -insert the nth word from the previous command (the words +With an argument n, +insert the nth word from the previous command (the words in the previous command begin with word 0). A negative argument -inserts the nth word from the end of the previous command. -Once the argument n is computed, the argument is extracted -as if the `!n' history expansion had been specified. -

- - -

yank-last-arg (M-. or M-_) -
-Insert last argument to the previous command (the last word of the +inserts the nth word from the end of the previous command. +Once the argument n is computed, the argument is extracted +as if the ‘!n’ history expansion had been specified. +

+
+
yank-last-arg (M-. or M-_)
+

Insert last argument to the previous command (the last word of the previous history entry). -With a numeric argument, behave exactly like yank-nth-arg. -Successive calls to yank-last-arg move back through the history +With a numeric argument, behave exactly like yank-nth-arg. +Successive calls to yank-last-arg move back through the history list, inserting the last word (or the word specified by the argument to the first call) of each line in turn. Any numeric argument supplied to these successive calls determines the direction to move through the history. A negative argument switches the direction through the history (back or forward). The history expansion facilities are used to extract the last argument, -as if the `!$' history expansion had been specified. -

- - -

operate-and-get-next (C-o) -
-Accept the current line for return to the calling application as if a +as if the ‘!$’ history expansion had been specified. +

+
+
operate-and-get-next (C-o)
+

Accept the current line for return to the calling application as if a newline had been entered, and fetch the next line relative to the current line from the history for editing. A numeric argument, if supplied, specifies the history entry to use instead of the current line. -

- -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.4.3 Commands For Changing Text

- -

- -

- - -
end-of-file (usually C-d) -
-The character indicating end-of-file as set, for example, by -stty. If this character is read when there are no characters +

+
+
fetch-history ()
+

With a numeric argument, fetch that entry from the history list +and make it the current line. +Without an argument, move back to the first entry in the history list. +

+
+
+ +
+
+
+ +

1.4.3 Commands For Changing Text

+ +
+
end-of-file (usually C-d)
+

The character indicating end-of-file as set, for example, by +stty. If this character is read when there are no characters on the line, and point is at the beginning of the line, Readline -interprets it as the end of input and returns EOF. -

- - -

delete-char (C-d) -
-Delete the character at point. If this function is bound to the -same character as the tty EOF character, as C-d +interprets it as the end of input and returns EOF. +

+
+
delete-char (C-d)
+

Delete the character at point. If this function is bound to the +same character as the tty EOF character, as C-d commonly is, see above for the effects. -

- - -

backward-delete-char (Rubout) -
-Delete the character behind the cursor. A numeric argument means +

+
+
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 +

+
+
forward-backward-delete-char ()
+

Delete the character under the cursor, unless the cursor is at the end of the line, in which case the character behind the cursor is deleted. By default, this is not bound to a key. -

- - -

quoted-insert (C-q or C-v) -
-Add the next character typed to the line verbatim. This is -how to insert key sequences like C-q, for example. -

- - -

tab-insert (M-TAB) -
-Insert a tab character. -

- - -

self-insert (a, b, A, 1, !, ...) -
-Insert yourself. -

- - -

bracketed-paste-begin () -
-This function is intended to be bound to the "bracketed paste" escape +

+
+
quoted-insert (C-q or C-v)
+

Add the next character typed to the line verbatim. This is +how to insert key sequences like C-q, for example. +

+
+
tab-insert (M-TAB)
+

Insert a tab character. +

+
+
self-insert (a, b, A, 1, !, …)
+

Insert yourself. +

+
+
bracketed-paste-begin ()
+

This function is intended to be bound to the "bracketed paste" escape sequence sent by some terminals, and such a binding is assigned by default. It allows Readline to insert the pasted text as a single unit without treating each character as if it had been read from the keyboard. The characters -are inserted as if each one was bound to self-insert instead of +are inserted as if each one was bound to self-insert instead of executing any editing commands. -

- -Bracketed paste sets the region (the characters between point and the mark) -to the inserted text. It uses the concept of an active mark: when the -mark is active, Readline redisplay uses the terminal's standout mode to +

+

Bracketed paste sets the region (the characters between point and the mark) +to the inserted text. It uses the concept of an active mark: when the +mark is active, Readline redisplay uses the terminal’s standout mode to denote the region. -

- - -

transpose-chars (C-t) -
-Drag the character before the cursor forward over +

+
+
transpose-chars (C-t)
+

Drag the character before the cursor forward over the character at the cursor, moving the cursor forward as well. If the insertion point is at the end of the line, then this transposes the last two characters of the line. Negative arguments have no effect. -

- - -

transpose-words (M-t) -
-Drag the word before point past the word after point, +

+
+
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, +

+
+
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, +

+
+
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-word (M-c)
+

Capitalize the current (or following) word. With a negative argument, capitalize the previous word, but do not move the cursor. -

- - -

overwrite-mode () -
-Toggle overwrite mode. With an explicit positive numeric argument, +

+
+
overwrite-mode ()
+

Toggle overwrite mode. With an explicit positive numeric argument, switches to overwrite mode. With an explicit non-positive numeric argument, switches to insert mode. This command affects only -emacs mode; vi mode does overwrite differently. -Each call to readline() starts in insert mode. -

- -In overwrite mode, characters bound to self-insert replace +emacs mode; vi mode does overwrite differently. +Each call to readline() starts in insert mode. +

+

In overwrite mode, characters bound to self-insert replace the text at point rather than pushing the text to the right. -Characters bound to backward-delete-char replace the character +Characters bound to backward-delete-char replace the character before point with a space. -

- -By default, this command is unbound. -

- -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.4.4 Killing And Yanking

- -

- -

- - -
kill-line (C-k) -
-Kill the text from point to the end of the line. +

+

By default, this command is unbound. +

+
+
+ +
+
+
+ +

1.4.4 Killing And Yanking

+ +
+
kill-line (C-k)
+

Kill the text from point to the end of the line. With a negative numeric argument, kill backward from the cursor to the beginning of the current line. -

- - -

backward-kill-line (C-x Rubout) -
-Kill backward from the cursor to the beginning of the current line. +

+
+
backward-kill-line (C-x Rubout)
+

Kill backward from the cursor to the beginning of the current line. With a negative numeric argument, kill forward from the cursor to the end of the current line. -

- - -

unix-line-discard (C-u) -
-Kill backward from the cursor to the beginning of the current line. -

- - -

kill-whole-line () -
-Kill all characters on the current line, no matter where point is. +

+
+
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 +

+
+
kill-word (M-d)
+

Kill from point to the end of the current word, or if between words, to the end of the next word. -Word boundaries are the same as forward-word. -

- - -

backward-kill-word (M-DEL) -
-Kill the word behind point. -Word boundaries are the same as backward-word. -

- - -

shell-transpose-words (M-C-t) -
-Drag the word before point past the word after point, +Word boundaries are the same as forward-word. +

+
+
backward-kill-word (M-DEL)
+

Kill the word behind point. +Word boundaries are the same as backward-word. +

+ +
+
shell-transpose-words (M-C-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. -Word boundaries are the same as shell-forward-word and -shell-backward-word. -

- - -

unix-word-rubout (C-w) -
-Kill the word behind point, using white space as a word boundary. +Word boundaries are the same as shell-forward-word and +shell-backward-word. +

+
+
unix-word-rubout (C-w)
+

Kill the word behind point, using white space as a word boundary. The killed text is saved on the kill-ring. -

- - -

unix-filename-rubout () -
-Kill the word behind point, using white space and the slash character +

+
+
unix-filename-rubout ()
+

Kill the word behind point, using white space and the slash character as the word boundaries. The killed text is saved on the kill-ring. -

- - -

delete-horizontal-space () -
-Delete all spaces and tabs around point. By default, this is unbound. -

- - -

kill-region () -
-Kill the text in the current region. +

+
+
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 +

+
+
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. +

+
+
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. +

+
+
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. -
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

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. +

+
+
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 leading minus sign, those digits define the argument. -If the command is followed by digits, executing universal-argument +If the command is followed by digits, executing universal-argument again ends the numeric argument, but is otherwise ignored. As a special case, if this command is immediately followed by a character that is neither a digit nor minus sign, the argument count @@ -2008,424 +1799,312 @@ The argument count is initially one, so executing this function the first time makes the argument count four, a second time makes the argument count sixteen, and so on. By default, this is not bound to a key. -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.4.6 Letting Readline Type For You

- -

- -

- -
complete (TAB) -
-Attempt to perform completion on the text before point. +

+
+ +
+
+
+ +

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. +

+
+
possible-completions (M-?)
+

List the possible completions of the text before point. When displaying completions, Readline sets the number of columns used -for display to the value of completion-display-width, the value of -the environment variable COLUMNS, or the screen width, in that order. -

- - -

insert-completions (M-*) -
-Insert all completions of the text before point that would have -been generated by possible-completions. -

- - -

menu-complete () -
-Similar to complete, but replaces the word to be completed +for display to the value of completion-display-width, the value of +the environment variable COLUMNS, or the screen width, in that order. +

+
+
insert-completions (M-*)
+

Insert all completions of the text before point that would have +been generated by possible-completions. +

+
+
menu-complete ()
+

Similar to complete, but replaces the word to be completed with a single match from the list of possible completions. -Repeated execution of menu-complete steps through the list +Repeated execution of menu-complete steps through the list of possible completions, inserting each match in turn. At the end of the list of completions, the bell is rung -(subject to the setting of bell-style) +(subject to the setting of bell-style) and the original text is restored. -An argument of n moves n positions forward in the list +An argument of n moves n positions forward in the list of matches; a negative argument may be used to move backward through the list. -This command is intended to be bound to TAB, but is unbound +This command is intended to be bound to TAB, but is unbound by default. -

- - -

menu-complete-backward () -
-Identical to menu-complete, but moves backward through the list -of possible completions, as if menu-complete had been given a +

+
+
menu-complete-backward ()
+

Identical to menu-complete, but moves backward through the list +of possible completions, as if menu-complete had been given a negative argument. -

- - -

delete-char-or-list () -
-Deletes the character under the cursor if not at the beginning or -end of the line (like delete-char). +

+
+
delete-char-or-list ()
+

Deletes the character under the cursor if not at the beginning or +end of the line (like delete-char). If at the end of the line, behaves identically to -possible-completions. +possible-completions. This command is unbound by default. -

- -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

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 +

+
+
+ +
+
+
+ +

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 +

+
+
call-last-kbd-macro (C-x e)
+

Re-execute the last keyboard macro defined, by making the characters in the macro appear as if typed at the keyboard. -

- - -

print-last-kbd-macro () -
-Print the last keboard macro defined in a format suitable for the -inputrc file. -

- -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.4.8 Some Miscellaneous Commands

- -
- - -
re-read-init-file (C-x C-r) -
-Read in the contents of the inputrc file, and incorporate +

+
+
print-last-kbd-macro ()
+

Print the last keyboard macro defined in a format suitable for the +inputrc file. +

+
+
+ +
+
+
+ +

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-lowercase-version (M-A, M-B, M-x, ...) -
-If the metafied character x is upper case, run the command +

+
+
abort (C-g)
+

Abort the current editing command and +ring the terminal’s bell (subject to the setting of +bell-style). +

+
+
do-lowercase-version (M-A, M-B, M-x, …)
+

If the metafied character x is upper case, run the command that is bound to the corresponding metafied lower case character. -The behavior is undefined if x is already lower case. -

- - -

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 +The behavior is undefined if x is already lower case. +

+
+
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 +

+
+
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 +

+
+
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 +

+
+
character-search (C-])
+

A character is read and point is moved to the next occurrence of that +character. A negative argument 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 argument searches for subsequent occurrences. -

- - -

skip-csi-sequence () -
-Read enough characters to consume a multi-key sequence such as those +

+
+
skip-csi-sequence ()
+

Read enough characters to consume a multi-key sequence such as those defined for keys like Home and End. Such sequences begin with a Control Sequence Indicator (CSI), usually ESC-[. If this sequence is -bound to "\e[", keys producing such sequences will have no effect -unless explicitly bound to a readline command, instead of inserting +bound to "\e[", keys producing such sequences will have no effect +unless explicitly bound to a Readline command, instead of inserting stray characters into the editing buffer. This is unbound by default, but usually bound to ESC-[. -

- - -

insert-comment (M-#) -
-Without a numeric argument, the value of the comment-begin +

+
+
insert-comment (M-#)
+

Without a numeric argument, the value of the comment-begin variable is inserted at the beginning of the current line. If a numeric argument is supplied, this command acts as a toggle: if the characters at the beginning of the line do not match the value -of comment-begin, the value is inserted, otherwise -the characters in comment-begin are deleted from the beginning of +of comment-begin, the value is inserted, otherwise +the characters in comment-begin are deleted from the beginning of the line. In either case, the line is accepted as if a newline had been typed. -

- - -

dump-functions () -
-Print all of the functions and their key bindings to the +

+
+
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 +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 +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. -

+of an inputrc file. This command is unbound by default. +

- -
emacs-editing-mode (C-e) -
-When in vi command mode, this causes a switch to emacs +
+
emacs-editing-mode (C-e)
+

When in vi command mode, this causes a switch to emacs editing mode. -

- - -

vi-editing-mode (M-C-j) -
-When in emacs editing mode, this causes a switch to vi +

+
+
vi-editing-mode (M-C-j)
+

When in emacs editing mode, this causes a switch to vi editing mode. -

- -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.5 Readline vi Mode

- -

- -While the Readline library does not have a full set of vi +

+ +
+
+ +
+
+ +
+ +

1.5 Readline vi Mode

+ +

While the Readline library does not have a full set of vi editing functions, it does contain enough to allow simple editing -of the line. The Readline vi mode behaves as specified in -the POSIX standard. -

- -In order to switch interactively between emacs and vi -editing modes, use the command M-C-j (bound to emacs-editing-mode -when in vi mode and to vi-editing-mode in emacs mode). -The Readline default is emacs mode. -

- -When you enter a line in vi mode, you are already placed in -`insertion' mode, as if you had typed an `i'. Pressing ESC -switches you into `command' mode, where you can edit the text of the -line with the standard vi movement keys, move to previous -history lines with `k' and subsequent lines with `j', and +of the line. The Readline vi mode behaves as specified in +the POSIX standard. +

+

In order to switch interactively between emacs and vi +editing modes, use the command M-C-j (bound to emacs-editing-mode +when in vi mode and to vi-editing-mode in emacs mode). +The Readline default is emacs mode. +

+

When you enter a line in vi mode, you are already placed in +‘insertion’ mode, as if you had typed an ‘i’. Pressing ESC +switches you into ‘command’ mode, where you can edit the text of the +line with the standard vi movement keys, move to previous +history lines with ‘k’ and subsequent lines with ‘j’, and so forth. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

A. GNU Free Documentation License

- -

- -

- Version 1.3, 3 November 2008 -
-

- -
 
Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
-http://fsf.org/
+

+ +
+ + +
+ +

Appendix A GNU Free Documentation License

+ +
Version 1.3, 3 November 2008 +
+ +
+
Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+http://fsf.org/
 
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.
-

+

-
    -
  1. -PREAMBLE -

    +

      +
    1. PREAMBLE -The purpose of this License is to make a manual, textbook, or other -functional and useful document free in the sense of freedom: to +

      The purpose of this License is to make a manual, textbook, or other +functional and useful document free in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. -

      - -This License is a kind of "copyleft", which means that derivative +

      +

      This License is a kind of “copyleft”, which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. -

      - -We have designed this License in order to use it for manuals for free +

      +

      We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. -

      - -

    2. -APPLICABILITY AND DEFINITIONS -

      +

      +
    3. APPLICABILITY AND DEFINITIONS -This License applies to any manual or other work, in any medium, that +

      This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that -work under the conditions stated herein. The "Document", below, +work under the conditions stated herein. The “Document”, below, refers to any such manual or work. Any member of the public is a -licensee, and is addressed as "you". You accept the license if you +licensee, and is addressed as “you”. You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. -

      - -A "Modified Version" of the Document means any work containing the +

      +

      A “Modified Version” of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. -

      - -A "Secondary Section" is a named appendix or a front-matter section +

      +

      A “Secondary Section” is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the -publishers or authors of the Document to the Document's overall +publishers or authors of the Document to the Document’s overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain @@ -2433,24 +2112,21 @@ any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. -

      - -The "Invariant Sections" are certain Secondary Sections whose titles +

      +

      The “Invariant Sections” are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. -

      - -The "Cover Texts" are certain short passages of text that are listed, +

      +

      The “Cover Texts” are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. -

      - -A "Transparent" copy of the Document means a machine-readable copy, +

      +

      A “Transparent” copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of @@ -2461,57 +2137,49 @@ to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount -of text. A copy that is not "Transparent" is called "Opaque". -

      - -Examples of suitable formats for Transparent copies include plain -ASCII without markup, Texinfo input format, LaTeX input -format, SGML or XML using a publicly available -DTD, and standard-conforming simple HTML, -PostScript or PDF designed for human modification. Examples -of transparent image formats include PNG, XCF and -JPG. Opaque formats include proprietary formats that can be -read and edited only by proprietary word processors, SGML or -XML for which the DTD and/or processing tools are -not generally available, and the machine-generated HTML, -PostScript or PDF produced by some word processors for +of text. A copy that is not “Transparent” is called “Opaque”. +

      +

      Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, LaTeX input +format, SGML or XML using a publicly available +DTD, and standard-conforming simple HTML, +PostScript or PDF designed for human modification. Examples +of transparent image formats include PNG, XCF and +JPG. Opaque formats include proprietary formats that can be +read and edited only by proprietary word processors, SGML or +XML for which the DTD and/or processing tools are +not generally available, and the machine-generated HTML, +PostScript or PDF produced by some word processors for output purposes only. -

      - -The "Title Page" means, for a printed book, the title page itself, +

      +

      The “Title Page” means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in -formats which do not have any title page as such, "Title Page" means -the text near the most prominent appearance of the work's title, +formats which do not have any title page as such, “Title Page” means +the text near the most prominent appearance of the work’s title, preceding the beginning of the body of the text. -

      - -The "publisher" means any person or entity that distributes copies +

      +

      The “publisher” means any person or entity that distributes copies of the Document to the public. -

      - -A section "Entitled XYZ" means a named subunit of the Document whose +

      +

      A section “Entitled XYZ” means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a -specific section name mentioned below, such as "Acknowledgements", -"Dedications", "Endorsements", or "History".) To "Preserve the Title" +specific section name mentioned below, such as “Acknowledgements”, +“Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” of such a section when you modify the Document means that it remains a -section "Entitled XYZ" according to this definition. -

      - -The Document may include Warranty Disclaimers next to the notice which +section “Entitled XYZ” according to this definition. +

      +

      The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. -

      +

      +
    4. VERBATIM COPYING -
    5. -VERBATIM COPYING -

      - -You may copy and distribute the Document in any medium, either +

      You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other @@ -2520,19 +2188,15 @@ technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. -

      - -You may also lend copies, under the same conditions stated above, and +

      +

      You may also lend copies, under the same conditions stated above, and you may publicly display copies. -

      - -

    6. -COPYING IN QUANTITY -

      +

      +
    7. COPYING IN QUANTITY -If you publish printed copies (or copies in media that commonly have +

      If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the -Document's license notice requires Cover Texts, you must enclose the +Document’s license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify @@ -2542,15 +2206,13 @@ visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. -

      - -If the required texts for either cover are too voluminous to fit +

      +

      If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. -

      - -If you publish or distribute Opaque copies of the Document numbering +

      +

      If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using @@ -2562,135 +2224,98 @@ that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. -

      - -It is requested, but not required, that you contact the authors of the +

      +

      It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. -

      +

      +
    8. MODIFICATIONS -
    9. -MODIFICATIONS -

      - -You may copy and distribute a Modified Version of the Document under +

      You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: -

      - -

        -
      1. -Use in the Title Page (and on the covers, if any) a title distinct +

        +
          +
        1. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. -

          -

        2. -List on the Title Page, as authors, one or more persons or entities +
        3. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. -

          -

        4. -State on the Title page the name of the publisher of the +
        5. State on the Title page the name of the publisher of the Modified Version, as the publisher. -

          -

        6. -Preserve all the copyright notices of the Document. -

          +

        7. Preserve all the copyright notices of the Document. -
        8. -Add an appropriate copyright notice for your modifications +
        9. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. -

          -

        10. -Include, immediately after the copyright notices, a license notice +
        11. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. -

          -

        12. -Preserve in that license notice the full lists of Invariant Sections -and required Cover Texts given in the Document's license notice. -

          +

        13. Preserve in that license notice the full lists of Invariant Sections +and required Cover Texts given in the Document’s license notice. -
        14. -Include an unaltered copy of this License. -

          +

        15. Include an unaltered copy of this License. -
        16. -Preserve the section Entitled "History", Preserve its Title, and add +
        17. Preserve the section Entitled “History”, Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If -there is no section Entitled "History" in the Document, create one +there is no section Entitled “History” in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. -

          -

        18. -Preserve the network location, if any, given in the Document for +
        19. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions -it was based on. These may be placed in the "History" section. +it was based on. These may be placed in the “History” section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. -

          -

        20. -For any section Entitled "Acknowledgements" or "Dedications", Preserve +
        21. For any section Entitled “Acknowledgements” or “Dedications”, Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. -

          -

        22. -Preserve all the Invariant Sections of the Document, +
        23. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. -

          -

        24. -Delete any section Entitled "Endorsements". Such a section +
        25. Delete any section Entitled “Endorsements”. Such a section may not be included in the Modified Version. -

          -

        26. -Do not retitle any existing section to be Entitled "Endorsements" or +
        27. Do not retitle any existing section to be Entitled “Endorsements” or to conflict in title with any Invariant Section. -

          -

        28. -Preserve any Warranty Disclaimers. -
        -

        +

      2. Preserve any Warranty Disclaimers. +
      -If the Modified Version includes new front-matter sections or +

      If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the -list of Invariant Sections in the Modified Version's license notice. +list of Invariant Sections in the Modified Version’s license notice. These titles must be distinct from any other section titles. -

      - -You may add a section Entitled "Endorsements", provided it contains +

      +

      You may add a section Entitled “Endorsements”, provided it contains nothing but endorsements of your Modified Version by various -parties--for example, statements of peer review or that the text has +parties—for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. -

      - -You may add a passage of up to five words as a Front-Cover Text, and a +

      +

      You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or @@ -2699,26 +2324,21 @@ includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. -

      - -The author(s) and publisher(s) of the Document do not by this License +

      +

      The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. -

      - -

    10. -COMBINING DOCUMENTS -

      +

      +
    11. COMBINING DOCUMENTS -You may combine the Document with other documents released under this +

      You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. -

      - -The combined work need only contain one copy of this License, and +

      +

      The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by @@ -2726,60 +2346,48 @@ adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. -

      - -In the combination, you must combine any sections Entitled "History" +

      +

      In the combination, you must combine any sections Entitled “History” in the various original documents, forming one section Entitled -"History"; likewise combine any sections Entitled "Acknowledgements", -and any sections Entitled "Dedications". You must delete all -sections Entitled "Endorsements." -

      - -

    12. -COLLECTIONS OF DOCUMENTS -

      +“History”; likewise combine any sections Entitled “Acknowledgements”, +and any sections Entitled “Dedications”. You must delete all +sections Entitled “Endorsements.” +

      +
    13. COLLECTIONS OF DOCUMENTS -You may make a collection consisting of the Document and other documents +

      You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. -

      - -You may extract a single document from such a collection, and distribute +

      +

      You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. -

      - -

    14. -AGGREGATION WITH INDEPENDENT WORKS -

      +

      +
    15. AGGREGATION WITH INDEPENDENT WORKS -A compilation of the Document or its derivatives with other separate +

      A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or -distribution medium, is called an "aggregate" if the copyright +distribution medium, is called an “aggregate” if the copyright resulting from the compilation is not used to limit the legal rights -of the compilation's users beyond what the individual works permit. +of the compilation’s users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. -

      - -If the Cover Text requirement of section 3 is applicable to these +

      +

      If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of -the entire aggregate, the Document's Cover Texts may be placed on +the entire aggregate, the Document’s Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. -

      +

      +
    16. TRANSLATION -
    17. -TRANSLATION -

      - -Translation is considered a kind of modification, so you may +

      Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include @@ -2791,405 +2399,131 @@ the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. -

      - -If a section in the Document is Entitled "Acknowledgements", -"Dedications", or "History", the requirement (section 4) to Preserve +

      +

      If a section in the Document is Entitled “Acknowledgements”, +“Dedications”, or “History”, the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. -

      +

      +
    18. TERMINATION -
    19. -TERMINATION -

      - -You may not copy, modify, sublicense, or distribute the Document +

      You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License. -

      - -However, if you cease all violation of this License, then your license +

      +

      However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. -

      - -Moreover, your license from a particular copyright holder is +

      +

      Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. -

      - -Termination of your rights under this section does not terminate the +

      +

      Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it. -

      - -

    20. -FUTURE REVISIONS OF THIS LICENSE -

      +

      +
    21. FUTURE REVISIONS OF THIS LICENSE -The Free Software Foundation may publish new, revised versions +

      The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See -http://www.gnu.org/copyleft/. -

      - -Each version of the License is given a distinguishing version number. +http://www.gnu.org/copyleft/. +

      +

      Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this -License "or any later version" applies to it, you have the option of +License “or any later version” applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this -License can be used, that proxy's public statement of acceptance of a +License can be used, that proxy’s public statement of acceptance of a version permanently authorizes you to choose that version for the Document. -

      +

      +
    22. RELICENSING -
    23. -RELICENSING -

      - -"Massive Multiauthor Collaboration Site" (or "MMC Site") means any +

      “Massive Multiauthor Collaboration Site” (or “MMC Site”) means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A -"Massive Multiauthor Collaboration" (or "MMC") contained in the +“Massive Multiauthor Collaboration” (or “MMC”) contained in the site means any set of copyrightable works thus published on the MMC site. -

      - -"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 +

      +

      “CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization. -

      - -"Incorporate" means to publish or republish a Document, in whole or +

      +

      “Incorporate” means to publish or republish a Document, in whole or in part, as part of another Document. -

      - -An MMC is "eligible for relicensing" if it is licensed under this +

      +

      An MMC is “eligible for relicensing” if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008. -

      - -The operator of an MMC Site may republish an MMC contained in the site +

      +

      The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing. -

      +

      +
    -
-

+

ADDENDUM: How to use this License for your documents

- -

ADDENDUM: How to use this License for your documents

- -

- -To use this License in a document you have written, include a copy of +

To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: -

- -
 
  Copyright (C)  year  your name.
+

+
+
  Copyright (C)  year  your name.
   Permission is granted to copy, distribute and/or modify this document
   under the terms of the GNU Free Documentation License, Version 1.3
   or any later version published by the Free Software Foundation;
   with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
   Texts.  A copy of the license is included in the section entitled ``GNU
   Free Documentation License''.
-

- -If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, -replace the "with...Texts." line with this: -

- -
 
    with the Invariant Sections being list their titles, with
-    the Front-Cover Texts being list, and with the Back-Cover Texts
-    being list.
-

- -If you have Invariant Sections without Cover Texts, or some other + + +

If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the “with…Texts.” line with this: +

+
+
    with the Invariant Sections being list their titles, with
+    the Front-Cover Texts being list, and with the Back-Cover Texts
+    being list.
+
+ +

If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. -

- -If your document contains nontrivial examples of program code, we +

+

If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software. -

- -


- - - - - - -
[Top][Contents][Index][ ? ]
-

Table of Contents

- -
- - - - - - -
[Top][Contents][Index][ ? ]
-

Short Table of Contents

-
-1. Command Line Editing -
-A. GNU Free Documentation License -
- -
-
- - - - - - -
[Top][Contents][Index][ ? ]
-

About this document

-This document was generated by Chet Ramey on October, 30 2020 -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, 30 2020 -using texi2html - - - +

+ + + + + + + + + diff --git a/doc/rluserman.info b/doc/rluserman.info index 1604928..6bf1b4f 100644 --- a/doc/rluserman.info +++ b/doc/rluserman.info @@ -1,12 +1,12 @@ -This is rluserman.info, produced by makeinfo version 6.7 from +This is rluserman.info, produced by makeinfo version 6.8 from rluserman.texi. This manual describes the end user interface of the GNU Readline Library -(version 8.1, 29 October 2020), a library which aids in the consistency -of user interface across discrete programs which provide a command line -interface. +(version 8.2, 19 September 2022), a library which aids in the +consistency of user interface across discrete programs which provide a +command line interface. - Copyright (C) 1988-2020 Free Software Foundation, Inc. + Copyright (C) 1988-2022 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, @@ -153,9 +153,9 @@ Printing characters Undo the last editing command. You can undo all the way back to an empty line. -(Depending on your configuration, the key be set to delete -the character to the left of the cursor and the key set to delete -the character underneath the cursor, like 'C-d', rather than the +(Depending on your configuration, the key might be set to +delete the character to the left of the cursor and the key set to +delete the character underneath the cursor, like 'C-d', rather than the character to the left of the cursor.)  @@ -217,9 +217,9 @@ available to be yanked back later, when you are typing another line. as those used by 'M-f'. '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'. + Kill from the cursor to 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 @@ -307,7 +307,7 @@ File: rluserman.info, Node: Readline Init File, Next: Bindable Readline Comman Although the Readline library comes with a set of Emacs-like keybindings installed by default, it is possible to use a different set of keybindings. Any user can customize programs that use Readline by -putting commands in an "inputrc" file, conventionally in his home +putting commands in an "inputrc" file, conventionally in their home directory. The name of this file is taken from the value of the environment variable 'INPUTRC'. If that variable is unset, the default is '~/.inputrc'. If that file does not exist or cannot be read, the @@ -361,6 +361,32 @@ Variable Settings A great deal of run-time behavior is changeable with the following variables. + 'active-region-start-color' + A string variable that controls the text color and background + when displaying the text in the active region (see the + description of 'enable-active-region' below). This string + must not take up any physical character positions on the + display, so it should consist only of terminal escape + sequences. It is output to the terminal before displaying the + text in the active region. This variable is reset to the + default value whenever the terminal type changes. The default + value is the string that puts the terminal in standout mode, + as obtained from the terminal's terminfo description. A + sample value might be '\e[01;33m'. + + 'active-region-end-color' + A string variable that "undoes" the effects of + 'active-region-start-color' and restores "normal" terminal + display appearance after displaying text in the active region. + This string must not take up any physical character positions + on the display, so it should consist only of terminal escape + sequences. It is output to the terminal after displaying the + text in the active region. This variable is reset to the + default value whenever the terminal type changes. The default + value is the string that restores the terminal from standout + mode, as obtained from the terminal's terminfo description. A + sample value might be '\e[0m'. + 'bell-style' Controls what happens when Readline wants to ring the terminal bell. If set to 'none', Readline never rings the bell. If @@ -382,7 +408,10 @@ Variable Settings If set to 'on', when listing completions, Readline displays the common prefix of the set of possible completions using a different color. The color definitions are taken from the - value of the 'LS_COLORS' environment variable. The default is + value of the 'LS_COLORS' environment variable. If there is a + color definition in 'LS_COLORS' for the custom suffix + 'readline-colored-completion-prefix', Readline uses this color + for the common prefix instead of its default. The default is 'off'. 'colored-stats' @@ -428,8 +457,9 @@ Variable Settings than or equal to this value, Readline will ask whether or not the user wishes to view them; otherwise, they are simply listed. This variable must be set to an integer value greater - than or equal to 0. A negative value means Readline should - never ask. The default limit is '100'. + than or equal to zero. A zero value means Readline should + never ask; negative values are treated as zero. The default + limit is '100'. 'convert-meta' If set to 'on', Readline will convert characters with the @@ -437,7 +467,9 @@ Variable Settings eighth bit and prefixing an character, converting them to a meta-prefixed key sequence. The default value is 'on', but will be set to 'off' if the locale is one that contains - eight-bit characters. + eight-bit characters. This variable is dependent on the + 'LC_CTYPE' locale category, and may change if the locale is + changed. 'disable-completion' If set to 'On', Readline will inhibit word completion. @@ -446,7 +478,7 @@ Variable Settings 'echo-control-characters' When set to 'on', on operating systems that indicate they - support it, readline echoes a character corresponding to a + support it, Readline echoes a character corresponding to a signal generated from the keyboard. The default is 'on'. 'editing-mode' @@ -465,13 +497,27 @@ Variable Settings non-printing characters, which can be used to embed a terminal control sequence into the mode string. The default is '@'. + 'enable-active-region' + The "point" is the current cursor position, and "mark" refers + to a saved cursor position (*note Commands For Moving::). The + text between the point and mark is referred to as the + "region". When this variable is set to 'On', Readline allows + certain commands to designate the region as "active". When + the region is active, Readline highlights the text in the + region using the value of the 'active-region-start-color', + which defaults to the string that enables the terminal's + standout mode. The active region shows the text inserted by + bracketed-paste and any matching text found by incremental and + non-incremental history searches. The default is 'On'. + 'enable-bracketed-paste' - When set to 'On', Readline will configure the terminal in a - way that will enable it to insert each paste into the editing - buffer as a single string of characters, instead of treating - each character as if it had been read from the keyboard. This - can prevent pasted characters from being interpreted as - editing commands. The default is 'On'. + When set to 'On', Readline configures the terminal to insert + each paste into the editing buffer as a single string of + characters, instead of treating each character as if it had + been read from the keyboard. This is called putting the + terminal into "bracketed paste mode"; it prevents Readline + from executing any editing commands bound to key sequences + appearing in the pasted text. The default is 'On'. 'enable-keypad' When set to 'on', Readline will try to enable the application @@ -518,7 +564,9 @@ Variable Settings regardless of what the terminal claims it can support. The default value is 'off', but Readline will set it to 'on' if the locale contains eight-bit characters. The name - 'meta-flag' is a synonym for this variable. + 'meta-flag' is a synonym for this variable. This variable is + dependent on the 'LC_CTYPE' locale category, and may change if + the locale is changed. 'isearch-terminators' The string of characters that should terminate an incremental @@ -583,7 +631,9 @@ Variable Settings 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', but Readline will set it to - 'on' if the locale contains eight-bit characters. + 'on' if the locale contains eight-bit characters. This + variable is dependent on the 'LC_CTYPE' locale category, and + may change if the locale is changed. 'page-completions' If set to 'on', Readline uses an internal 'more'-like pager to @@ -599,7 +649,8 @@ Variable Settings If set to 'on', Readline will undo all changes to history lines before returning when 'accept-line' is executed. By default, history lines may be modified and retain individual - undo lists across calls to 'readline'. The default is 'off'. + undo lists across calls to 'readline()'. The default is + 'off'. 'show-all-if-ambiguous' This alters the default behavior of the completion functions. @@ -626,7 +677,7 @@ Variable Settings If set to 'on', this alters the default completion behavior when inserting a single match into the line. It's only active when performing completion in the middle of a word. If - enabled, readline does not insert characters from the + enabled, Readline does not insert characters from the completion that match characters after point in the word being completed, so portions of the word following the cursor are not duplicated. For instance, if this is enabled, attempting @@ -676,7 +727,7 @@ Key Bindings part of the key name. The name of the key can be expressed in different ways, depending on what you find most comfortable. - In addition to command names, readline allows keys to be bound to a + 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 @@ -1143,6 +1194,11 @@ File: rluserman.info, Node: Commands For History, Next: Commands For Text, Pr supplied, specifies the history entry to use instead of the current line. +'fetch-history ()' + With a numeric argument, fetch that entry from the history list and + make it the current line. Without an argument, move back to the + first entry in the history list. +  File: rluserman.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands @@ -1393,7 +1449,7 @@ File: rluserman.info, Node: Keyboard Macros, Next: Miscellaneous Commands, Pr characters in the macro appear as if typed at the keyboard. 'print-last-kbd-macro ()' - Print the last keboard macro defined in a format suitable for the + Print the last keyboard macro defined in a format suitable for the INPUTRC file.  @@ -1440,12 +1496,12 @@ File: rluserman.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up 'character-search (C-])' A character is read and point is moved to the next occurrence of - that character. A negative count searches for previous + that character. A negative argument 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 + of that character. A negative argument searches for subsequent occurrences. 'skip-csi-sequence ()' @@ -1453,7 +1509,7 @@ File: rluserman.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up those defined for keys like Home and End. Such sequences begin with a Control Sequence Indicator (CSI), usually ESC-[. If this sequence is bound to "\e[", keys producing such sequences will have - no effect unless explicitly bound to a readline command, instead of + no effect unless explicitly bound to a Readline command, instead of inserting stray characters into the editing buffer. This is unbound by default, but usually bound to ESC-[. @@ -1998,30 +2054,30 @@ their use in free software.  Tag Table: -Node: Top907 -Node: Command Line Editing1429 -Node: Introduction and Notation2083 -Node: Readline Interaction3708 -Node: Readline Bare Essentials4901 -Node: Readline Movement Commands6686 -Node: Readline Killing Commands7648 -Node: Readline Arguments9568 -Node: Searching10614 -Node: Readline Init File12768 -Node: Readline Init File Syntax13923 -Node: Conditional Init Constructs34182 -Node: Sample Init File38380 -Node: Bindable Readline Commands41506 -Node: Commands For Moving42562 -Node: Commands For History44322 -Node: Commands For Text49086 -Node: Commands For Killing52790 -Node: Numeric Arguments55505 -Node: Commands For Completion56646 -Node: Keyboard Macros58616 -Node: Miscellaneous Commands59305 -Node: Readline vi Mode63228 -Node: GNU Free Documentation License64142 +Node: Top909 +Node: Command Line Editing1431 +Node: Introduction and Notation2085 +Node: Readline Interaction3710 +Node: Readline Bare Essentials4903 +Node: Readline Movement Commands6694 +Node: Readline Killing Commands7656 +Node: Readline Arguments9579 +Node: Searching10625 +Node: Readline Init File12779 +Node: Readline Init File Syntax13936 +Node: Conditional Init Constructs37240 +Node: Sample Init File41438 +Node: Bindable Readline Commands44564 +Node: Commands For Moving45620 +Node: Commands For History47380 +Node: Commands For Text52345 +Node: Commands For Killing56049 +Node: Numeric Arguments58764 +Node: Commands For Completion59905 +Node: Keyboard Macros61875 +Node: Miscellaneous Commands62565 +Node: Readline vi Mode66494 +Node: GNU Free Documentation License67408  End Tag Table diff --git a/doc/rluserman.pdf b/doc/rluserman.pdf index a7db1e9..3d2ae7e 100644 Binary files a/doc/rluserman.pdf and b/doc/rluserman.pdf differ diff --git a/doc/rluserman.ps b/doc/rluserman.ps index 9bae0d0..db4f27b 100644 --- a/doc/rluserman.ps +++ b/doc/rluserman.ps @@ -1,8 +1,8 @@ %!PS-Adobe-2.0 -%%Creator: dvips(k) 5.999 Copyright 2019 Radical Eye Software +%%Creator: dvips(k) 2022.1 (TeX Live 2022) Copyright 2022 Radical Eye Software %%Title: rluserman.dvi -%%CreationDate: Fri Oct 30 14:07:47 2020 -%%Pages: 35 +%%CreationDate: Tue Sep 20 14:17:06 2022 +%%Pages: 36 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%DocumentFonts: CMBX12 CMR10 CMTT10 CMSY10 CMMI12 CMMI10 CMCSC10 @@ -12,7 +12,7 @@ %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -D 600 -t letter -o rluserman.ps rluserman.dvi %DVIPSParameters: dpi=600 -%DVIPSSource: TeX output 2020.10.30:1007 +%DVIPSSource: TeX output 2022.09.20:1017 %%BeginProcSet: tex.pro 0 0 %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S @@ -1043,6 +1043,7 @@ end readonly def dup 11 /ff put dup 12 /fi put dup 13 /fl put +dup 14 /ffi put dup 34 /quotedblright put dup 39 /quoteright put dup 40 /parenleft put @@ -1307,539 +1308,552 @@ E3BBCB8F8C473E706670E11E5B221716F315FF097CD1841D0069FA69EA1898FF 7EA2DED68219754BF1FBCA350327572D769C962EF9242132D93A5C8E9725D8D3 AAAEC15ED0F362471AA58488620156F3474FA59CA080EA96FE995D2B3DEEADF3 3141D157481C66507725ACA5953CBBE1ACEE7E3F02C72C6552D15EB3D612730E -61A06A43575568DC3CF3844BABF04CA767E299575EF2ECAAC7649193843D694E -6CA59318C01132C361A3E43BE637B70B9966664E12EF4707F6B100BC37778D1C -F1806B1DE081D2C9B995BF1EE3842EFFBB8416161FE31633A6EDA118E563BDC1 -C42F403BE8A009FC756406669E34C6A08668808E0C31A589D0720BE32F3181F9 -8039645643E15D25917F38DFFD8BD08A420854DE15AF291ED675A634C151193D -29AA6E04E84A598350AF17E71973854842AFEC3EB1B58E4D4433309BF5ED9D86 -32C4BD136C89169D45718A88BABE25072D8E552AA4CA3F840ECB11519B06EB44 -13026DD6800CBAA90F3BF0022E66A54BE1059BD5D224B674AD3199379D82D571 -ABF7BDD1BFA45A0F0E9ACA0A400BC5FE22DF4A041BCCB93DC23D547CDF0A49CC -6C7DAFF30FE0843CB3324AAA3B92F543A985027FD2715F4182BAB1640F391992 -E4DB6C19A96D1D48EE4A4DD94D6443467C61CDFEC9B11E07DBD7F7BC33B34BF3 -EB97A7C3D0C4E322ADAF9CB6320A64DF78223011738501A124CAAF7D717983FD -8BABC1AE4CB0FD382E26BE0A83169B6C371950D7E9A94FD82BD20A3E2112F447 -F1E4203D9978E6D9B8DF24E670E2D4BD160D5CABF3C460F00B5229B48CAD82CA -9ECAB97B709C0C4FED12CD9B497B4D5E505A22F12589E28B0C3017683A6EEE2F -2928DDF7763CD8F58B531F526EE267EFEDF72DCFC8E547F329A7C6BAE64C2800 -AE848C69574115EB02F9CBA61ABF99AE6DEB18BA4DD295682F10B960D8F0DA3B -B4D6190603E95B7F8102DE04DBED3AF90DC3CF440F60CF50A8AA982FB965DD80 -E0B8F62F1589924262E1B3292F82EAC5A888AB240D40F889F9CE2CBD7F2F2E8C -A1E4479DF6E27D00D4347DFBB8B977D8B1ED261C3CE14538C0AF23BF0B4825F0 -39B2F2AC125BD84B6B9626300A2C001119893830B3542A09B6986620B6E9200B -BBC5CA508A4D0A31B72EAF25651A806F88A2943849C5CC2CEC3C79ABA958B020 -6B8ECADB5438E230ACF8939688C11F16242C5D58A55AFBAC2971E09C0F7A2D20 -2B26FE7FDEF8203A73EB4E47F9953B6EC5ED9985C6D84CAFB3DAE3C39B1EE33E -8D54A862ABA4FD8C0E9787B5B71E960FBB9C3003F8034CDB16A0D8D0709D18F0 -22679AA4339CF26E41992B5B5B33D59D937892983C5B1151AD6EB37B065E8E99 -6E9BB66724E0CF4044C77E79B6D697D9F368A76B76C93ED4BE9C4E0B61B26919 -976BCD5FA3F527BB093BBB0BB979131EF153F77845B4EB6B7378A17DD297E656 -0BAA38BDB532CB389E2C60778B658220CEBF7F77DD6677D8248975B86D52ED2F -1DD38A57ABE4ECCF554EFE937070D7F73B8B51F59449236E33FB1C6BE506F7CA -DABDB3E38B70398F5FD377E00C7DBDBCCA9D82180EEA815E0E2231789FF7FB88 -67F04D4049A6FC4CD8F12202CE784F633E3161FA9E4CD2F3401BBEA11B43D1E4 -A99FEE87D0E97CF4FA509B30F1E0672AD64EBB14C9F19F9E6DD333B78E91E4D7 -058517DCD523FE710FF61D766E9B334BDD7EA54C5BDCF6D612B27BF30449DB57 -9D45152EE0223988AB6689FF07658436359C2461BEA57F9CC512BDC51EF25493 -2C25DBC52DCBC0278D296FB8094DF33E7E3631228639796FAB8E7F3C78D26C89 -F15B4D251835074FF6EFB9261E2702167F46BBD87AF1CCE46D69A9E54B3F19D4 -CDBF4689E4A980A46CB0F8259DAD1CE5C25567321F929B7F501E86FEBFF155EB -CFBCE24CB837F1299635927640256B311272C6EF36DDC649D05DBA7F9F4536A0 -B3B9513B8FBC8E3A547542F1DD0C6306693FE71BAD597591FF53046DC982506C -D0A8EF82F11B01A588399B10AF852A61A96D0D8B416DD36D776B23192FBD8B67 -230D93BE0C1238D5FD5E8A762BD8197B11E1B0AAD547A5C203EFF7027AF9017A -D70DEF3A45D5C32BF964200A3D9BDF03B1CDE2A50601E5F8D083AF733C5D9B28 -39579CC1D94AD59B64555DEA0DA13E2E771517EB7DB91660365FBD319FB79828 -FF9FE5E425F710BC2A5250765A9D4B494028762ADA4FCC849CEB3A4F4CBC3FC7 -9298A3450323174ED9835CCDDAAFFBBD380E889A002CB98D1E46747F6EC97E4F -CEF493E6729F14AE0F28AAF68F401CDFC05A1D52C92E90E6D61163B99DC7E2FE -663D254BC29F0923C210385FD72FDE4ACEED53562ADC89CF698C61B81F426408 -6A4F7E6211243D2894A2490C78DDF108FEF22D595919F8176C9151F9C4EC7FB1 -CCFFE2DAED0451C01DCC92B8DA7C897314C6464CB96FE5E9AE8D09FF5356642D -5BEFFB636CDA259DF1056A41B007AF086F3299DDCB4BFE497658EABF868FE2C8 -17F3F289BB8EE99476366FD4B5FCA6FF6D2B9DDE027C36C3DEA8D9FB8E1E315C -F7AAAF23098FABCBA9ECA1B3B62D97C718E9CC920D6060DB63D12C54F40A8AF9 -8414ADA57B34319E1B9DCFE37E37DD2419A93FF824AA210581867974EE20376D -20927C4E0EF852EE9EEAA6C3C33ADEBB54B04F8130C9FFE841BAB8CCFB29DCCC -AEDB97A11253347D0A93054103092489A7A0FD2DA57144A996C857A51A8D59DE -97736B5DD55E7D1F3DD15B563C9EB1ECD180E405EBF83F2CE8D8E3BB3CFAD4FC -3B56C5E371D1F24F8B87871AA4DC5D36402F73E935548AC7CE28D7AF7D503969 -364DB58C5D8C449D9A1CCE52D60FD42EDDAB0E92E04D4085570FC95378DB0E9D -29177299929C8B877397FCBDA368848AE438EB03B2380B4892FCEC5A6398F275 -C8B9430614CADF97BA564CB4FDA21CCC0BC080D9148D461190E7A68007BAE7AC -863F39346F91568267DBB3B5AAD9AF3354222301F3ED3E144067310C29E86A68 -680D1F9DABD82E2D6FAD321A778F6A7F4B4848EE947AD1BF122365095AF25FEA -3B3574B9CCEA66FF03751A4D75176773043BDA6569691729EA8B552FEB498FBF -CFE32B8B3C37F71B0695A4B1578DD1B8E0D0CBFB6A2CF5BF3D35B63BFA956368 -39F112348E15E0B1DEA4BA6FE0AE44F6A92B0917F673673592085CC2AC0208DE -2D2CA8E867D68BA9DEDDAAB83FC929D38927F5E5E65F97A160DD4D9A3DB6E76F -6AD8C92454E46405AA43F782C9C7F3EAAB984F2D26C47C3794586065392A043F -C8F670C06322769837C380DD81277AD8FB61E2F17D2E6D044EF64802A82227ED -8947FB5A9D39C3C7BF66900819EDC802B10A867130FF9ACC42B885DDD5652727 -A4F54338B7D8CCD04DE347E31DD5EB6BDBBFACD0F605EFC0825D6E4560174995 -5A3AC5F7C57BCAFB5EDE28FB8FEA0015CCA84A4F421F64B9BAC351E4C9918123 -CC9A9C56FAB9C164E12EA420B0B65521D001040257AD908B17527740A4BE8B4E -518472003DA96D02A04B567A806D6FCC1AB6581C255047F98C302CF6A3C38A3E -255CCC51C41FED45DF5A8DCB7CA3FA3D4018AB1B3C5A3A5655BC02EDC17DE7F2 -946449F7B2552C97BFBD1C6C80E3CE122755E1679511101386A75345277E293C -6BB60E204B16949F9FA0E6802D61128023A73771AA40254F4F7F54F2518A4086 -C8343A5EF3F620329AC04682962E7C2580A0C23ADF1096031DF2C0FA8B578222 -6309D0ABE027DB4E7F59A0D0F33022188CAF881F52A0EB544E53701C7819128C -96E26E9CDF47938D16143720A9F774D36EF27770625017EF94F3BE6C97FB75F4 -A3B44E10F6D3ABB303CE4F63501FC5C91691D5803CC94C4A4E5211BFDF5EF0E5 -451D2073481EAB5035A78F14D2BC63852BF3A41D51B5A4048D514E16E3519D24 -B1E2A278771055679E561A2632E9DDD7EDEA3599B28ED4C10F1929D10F093018 -22937E17BD99FA33CC4EBCC92A6C21B130F0FABCC7CBE12408C1186CBA3B13CE -D69E501C346EEA662F847C756DE1616B5B5E4B670FABFFE4889A85AA9AE8DF53 -A2A29D710FEAAF5F275C317A07F484DF206BD0C4CAE557ED66399494FF2C1587 -A6630861B8E5E62D7B02E3F6D98AD4F5D6D3FD34754DC20C8C69325CF4F43117 -80CF56F55822EEFE030D837AD51B2FB722B25098E976AA164939CCEBFE453C40 -54DA26BB8277E5FCB0B209B090001C202B1D417BD407D74C96CE6E315CDCC416 -7EADCF5EA7356F9150A92B5F496E54A4BE33EC139C33FA3D7AE1AEFEA515F540 -299DB28C9EBC83E3C89409F5D528A3CB3F59C1311A1AF0A136E237D91A1E4134 -5EA52642D2D4B151D532F29BCDC1E8FA7EC77B3FDBF561F7707C46753EB922F1 -FC0A0F94D7B9DF786EFEB034179022B5D8D77E368FEBD1BC318DDCCC8126888E -3277B6F6C9BD74743D3EF6A6D1DA3F7F69E0689B2712DB9CA8C96A1928309695 -D64EFA85FC190E9A88B638FF4314150220DD3DC50A630F19A21D78441BA9A4A3 -E3E0D201086BE1A1BDB1F9F4E6F8ED30903CBFD91F43B8B56FB269929C431F13 -BD550F401CD9FC0A612F61A635C4B778DCF19D773AC9F83E5B393F969F0A6F2D -2C3399578ADD321DFB6FFC828BC708C132EEEF51812305C5AA9C5123EA790995 -B17C609E9BBAE75AE816CB02FA63A5508EC4D6F5E68B7C69B3A7A743AFE1C00B -479D1F4D93A85A0AEA989D01CA06485F69A76148A5D541D834864447661987D9 -A81CA3F0AFC109E62D4334B1958B0C260CEC205E37F608D53BC5CC5DE889C156 -D24EE0442D2E487C9425C59EAF0DFC887D850F2AAE32FE27BEFEBF16ED33449F -746284FD593654A134EA7CB1BA98A9205BED9C2E7625BD7A614DF27C3A72B163 -F57788C67D91F7299AAC5682F031353E80A7FCB23C9DB3CF6440B3223132325A -D55382F07F7D83C1E7F0F1B5D751FF1F39AB6A357E08D34FF625544F0B62D92A -0441FE53F5C5068A3FE0A80729DA7693BF377C79FF3F279C52F72F03E439B688 -3552A1F0429477294E062ACB878CD3955BDB1050195EF91F2010611D1680D510 -33154CDEF24459E6FCC010D53C07AE9052CE784D8D060265885B93E5D201A3A8 -39ED6B100E14C87992A5FC12587123D59E9C70096C0B8CCE18996C7A04061127 -37CB2FE94AD25A8894EAB6543B4EDE18178B7CA02251752EAEE9007FE645DCE8 -76E505CC7CB133F1ECA70526437ABA8C3E966B5F7929042A91745F43058F3018 -C135ED93815B54CE444E864F840483D4B9D44CE0202019CBD40B108E1D8B4A0C -CD10B442AE5C78CB3BED5E7AD9B89DE52CDC3D3FF506159E73F84CAE0C4B19B3 -310F6288DC7A1C13043951094729C2D036E1B268FC30334A61057253D5ADBB06 -062D9CAC36325D9668175C046E8E554101C89F31E0821FACEF7474774EC36C39 -62909FCA2682F0CF31802754757EEBFBB5F98DC008B534245782D12EB30A3DF4 -B892B1E064EB271FA436464256905FF2E91042882267A75914104243B60F12FE -3A9B5D9754026FCF038A8655423230E5F2984457B260354E75E7E8E438995E0A -41CE6D077EF1E08257CE1B8BE3A2397A490DACFF0F3FF8D20CFFE6BD58968AC1 -321A49B21C324F322B5FDE900D9E055BF6A020156CD67EAA1AF90BC64A1E1731 -D95EEB12AEF53754C7FE33167B9874D896FC5984CB032C60D66F09CBF5B045B1 -EC95734469F57212202F37D6E294E73BBFB66C4B821C5D844CE81981D7D50327 -F42D8210216D6A4826197CC24865813A441931DA18893031AA1EA62321B0DA7E -CBAEA839D114032906E18FA1C661C1E88DE33C6337929C6FC8B09B1CC5B95BA3 -E1C71C33CD9A3E4999BDCB55F0F931FE0F7A3EF924368616449551E3B0FE20F3 -6B26C6317A782DDAEDC91723E25A5A325B288416E06A62FACC35A22F7B1AFD01 -6530D0D6E80C193A2E891BBA5CEAAC8315281BA873C95C642253BFC2BAF34605 -9EAB0AF45C3D049A8F433472560AB5DC2561FCA3A2B89AC95B15CBCD15AD6CA1 -C1E7175097D316CBCC0F5785A1CB9EF5D109356B07EC553765C3542CCD4D4A71 -A6D402D95A9869E5194E2B4591CD6A89A83D1ACD0F3AF7ADECBF37C69960526C -CD96CEB82DB4F1504DB80C171383052DE99AD7A48CF508BE024BD574B06E4A7F -CCAA259439F581467CC43F1775A797ED8151A08B898A4B4A5E2F2BC98C4410F1 -108393AFB7031C8C1B4CC0880DE20C3BAE0DD0EA1F15DDA20448F7893995F28B -0608C5D9F4D434FC6B36C56A5A5748BBE676E00C3A9F418FC82F08F7C2650792 -BF935B7ECF4B4B2868A4646D3AF8442072DDB42CBD89671E3D8EE4E0C946ACAB -2D7DFAD319C93B6474B36F4398D06961CE2EBC611BDFC74C06AF95BF565DDC42 -1F7932FFF7A5658514C04D79CE7888CAB8C0C13E13A0A38DCA8F99A2B0BB9F08 -89F413B0BB6C208C0843F607D1DD21D2D2857F5B15113FCDDF9012C68466EF82 -C9E67E81904730359D72118965173587DA5EE59F28B0A101A8F641F1EFB084DA -CEF86B85151E31B21F66BD9055293B5878339FCF27216CB67805247EA7166DEA -065F283E2BC91E9C526024B6954410ED143A88AA91DE752F5CBA7129236D8426 -DB326A5A9DE91A2709F7114049A8FB333E87CF5D1D839F4F79D08FE684A7AE1D -20AA674461DDEDDE23167D5881AAAB018DDEEA28157CF944C55E0E7C7010FBC4 -7884F438049A6F596912E65A54CE36C42B22AC762362CC4EC9F9213FCB908814 -E63D7E10D6BA9CCF802B662586B6E5DDE8C7D5B7BA6D9C8792E87349A1811F96 -C5A88467B93EAA04D84764C10B344D51541A987548D4F24482902A7744535988 -09DC57E9031AF5955F5659922D46FF6727BE8AABB889563878CD8907E86742CC -AA1424363B562FE791EB65AE23596095311612AA0720655CBAEC471721635BEA -2E322E3603F763E4A151AB2A8608BBC11AF4B9EED89930B48627D12C7857D906 -E1BA68C9D2401056C6A100D5EA2A29E34DFB839A22F726508BD77D445EAE286A -50D46337619F86AF82DC4C2F0D1DAA005E17AB38E54756D48689EEBCB2B70924 -D913013BA5A330D69B7B4A6B30A7396CE684D46DF2C24925CDE10CAC5AFA48E8 -29AA959AFB2ECBB95FE16B483B49A6E10B009E48968EC7EBF2CA18B3A5175499 -8AD1CEFEE2E3A5CB84185BE886B912F4F9BD1859E86C0F2B3BA8E4CDCC509C8B -70A0226609B2E5B3C693588F89B8B9FD3DDC670B0818D59B1AB6392B61567113 -DE0F0AE4B5402ABBBC5EC181E3F9131E42B4D72FD500AF4A40ABB47FC78EC4C4 -340810870CBAEDB3ED8B6991611F978A9851DBF989CB54A7FB6C5590D6F389ED -63AE2BBDB9640A581A3D0D56394345EC8A621E639A36D7A3567ED4C646782491 -E6FC3D0A16096A748BCED36335A39D30BA544F5E3250C9A8465BB4BF1F78783A -A6F4C8AE394E45388641DE0810E79CECA8CCB82EB5B01AEB294BFC1E797CA973 -653AA8E25F12FD4637D4274540476E3BBBA984EC2B58B678650BB30D074713F5 -E6A5579EB116C013DD4BDC716EDBC4B0680BC1D1670BF465BC7575EA0C0FAF7B -50B4CDA35F6CB2F3801EA75F8B8D13D5CD2B81035C06440EBFEB05C43920C8AF -161BE712A91A009B3C1DE9CE9A29149E81A30BBC08A7DFE5291A137937AE8CF1 -D24CAA2620309F0CBDADE912CEE0801BA72A097446FE8DE2C494E5E7AB790D3C -46A4AA9628D791FA83B3FF9DD11F115669209BE8B4FD1EE6627E179BB53C245B -3AE42A6A95D73A45E7D9A78C2C46544DA9BF229077FADC8BB0A288B044AB219F -C62E33225DB5B58C19A0894F14C57E318FD66A56BA936DA1DA059FB5E4C89134 -909D531F94915EBD4309465038E6E2D0223EDCC2D9030BC5E6B07C12A28AE03B -E58266B28B0A4111B445670449021001771205A0016DC0534E84E02007A65E4E -DA5212D4668270F11113293A1A0FAF9E7F5ECF382760365DF24DFB1A49D50116 -D2959974973840F8BACAADA175B18B0CF49E47728F744F3D3405951EC677C4DE -F2A8B4AFB9740765742F701691B79309E7F8A9BA9CA4734BD8D6AB97F0B8DCC6 -A77EA6F065844656ABF04A6224CBC9BBBC929E1A4BD3230B901AE1E18FEBC2DD -1642AB4A5ED317F9AADBDA2062510300CA34A7897D0EAB3DAC7DD375C24221F3 -03E0A4697C6BF80426393BC326893D524CD60CCA3EAA8F09FCEDCE2F08F2DFF2 -CD8C8E6CA25343FC294DF8AAF1C4938DD7BCE943E92CB8C70ACCD03CB2589CA4 -E12353188F519A9E50AD95EB772C39F0D0BCC02DCC9A02C55303B370A511B396 -486313903405479B23FDD01A7D1644212EC65BE4DE730ABEC92F9E5573A7353F -139BADF8C69BC5EC022D92360A28C66992515A7AC3E1AF4F87BDA91832003EAF -02B611681A280492A0C0653A7B0502FA0F036B80B1EB5A92B6E2E34F1D3048D7 -9DCBC1994908801E17FC33109B407613C5537C04FFC152072F78F1591D6CEBA5 -37F9E385CB0330754F7FD33255353EFB68A88B6B65D378F90E85996E29E8F888 -E1C837F735FE92E1906D6A3991E23C5F4B6ADAE7F80B134DB3F2E9B45316B5C6 -AAA37C479979F320C431641B87D5164CAAE38089BFC5A0466523901846DDBB97 -7E626FA4406E96E5911BA848F9FDECC660F0D9C8C51855AE6F61E80CC6D7E4EE -8171B10C33B62C9FB6421E50ADAD266816B3D11B62926EC7674795A37B117816 -3DC5AE02F71DE34EA896ACB2DDC623C44CECCD8D6631517D3B0D51E3F5F373E0 -BA991518CE7A61A4CA01365C812DA9A27A7BF7F61B70BAE4A25353475AB28D20 -0EE8A274B7B81324CED23F8144C859318D24039DF4104EFF6A46A3E4AFABB7C0 -5D54A42B98554FDD4761FADED865F6CC6A62999A6D5E428B87773E34A3D59886 -1AD7953B918FF207806D89C4DA9E29FC56B5335F46516FFF9B0077EF6ABE1B64 -050AF7D08B8E0CA34BBAD1B70B040992EB6905A8C5453EF2A589F51ACB37D2F6 -D7435FDFE1D2647F8E7C9EE8E55F375AD259E806348D28F26685AE4E64CB08C2 -8479514C4F2BE9419CB9D2FE84B2551511171384BFE1FF2514948AC8E0011459 -0194392A0B0CEA69357E0957CF64187606C24B66E75B90E65F6BCBA6B9507400 -FF673F3ECE5DFBBDD8594B2FA9F7FFC6C9EF9E7690D1697E3286C9FEC9CDB3D0 -56F9D219C8A5E8BA1E6EF3C56B279998EA9B86E18678E1D94F1C51AFD500DD7A -20FD646AC1723028CB77572685818024324CEE2DD03EE89953602B0BEBF931A2 -76549FE146CF4211F5D7BA4CE8A4626D6B6DAB552E158DCB9A85A656F0470F84 -396B9537A99EB633499B8D06C66D543B638282133067A5EAC753FC7B68735FFE -DE9C5F435282BE7192F9F44D6716BB17CABC23970253B1C4297CCDF520407603 -87E0B3D295DAA1A72034D94CA5417B0E6B5E148A2F3B842A77C54EA8010642F6 -3C45F39A391F146FC070A9384872321AF86924A5C79C4932BA1E0E25EB8C76AE -C2FABB9F40A19CAB8CE845AF2161E6C5CA4F1F28DF86D04385DA654DDDF4EBE7 -C2067556D6E9C3326F8578DC526050B58962B3FEEADA9E30FD98162A7690B2D6 -31BA0428550DE10F9A61D02A2A978709FD31D2A208379E53B1A29D111ECCE4F4 -BDD9B8E29576B2F18DD4AB9FC631C5BF6ACD81CE8C9F194138A2A9497D966444 -F0868CA92BB615B511B7370CFF55492C57ABBC22FD278E6396B70BD34192F086 -A98492AC442E001B9B77807E3ED26260D69FCAD22B7733708CCBE7F84F7EC267 -53F8163315FADE113CC938E49AC9E00928D16A317AE338E91E38AF8B894EC75C -B5F3BFE33ADDC0A27F0E754D2CDBFAB0BBCF94A1BEB2F286CEB90AED9C34963F -39B63EE068288431BA3B31E134AD75D563F5B81782AF676FF5E39AF212EE0282 -D66687205CB81F973D1624F14D1E424EEE9FC189327F1A502F6B45CF3C2D469E -A6D952A5854556DD6C70382A7939F4333B6F4494D8FB50B1CB27C4700696BACB -087E7C705250D49F5298C5419F03F713619DC5AA7AF817A48C5E1702E1ED4482 -ECEA7E7EA2DD3B1BDAEE6B4E203346CD7F7024D0AFC488F4420CFE1ACFF96E8B -F52D2B9D084FA37FC69ABA82C5C1918ECD8A94CC7E3B85DBFC2EA7579AFC0749 -8812579E9D682FF0EB5C00BB9BC897CE9F6BF1F00510F1DDFB17C6FC832E0CA9 -79193FC6DE4EEAEF899448D12826E0AA8799B3E487916017CC3C0FBC559D5921 -78BFF1C4D4C351C472C00B3AF94436C142C8C70189805894A010BE3B8FBD3A08 -97DF5961E9AF3C9B374D733D7049EF23483003189AAE67517A5C953F010B4473 -99EB286E4AB8DFF15C226B1B5BB0CDC1BD1B5890B49525EC07FD9E757864E4D7 -1CEA3FF16FBCA03FE72D50A5FB75463D974BF5A8B9F4F8BF7909059FEA775D23 -5E8A48A69592DD766EBA72EC27126AB1537E8A9E40B8E908A968AB71AE86E9B4 -E34C4C0DDAA6CAE34DA06795C5C23B61F1B3029299CEA838209B9CE83B92BF1B -81DAFBEB500E13C5C9EBB2D7AC1A9F2428286F5CE7482BF12132F263742E83C4 -B99633A0EC4DFC9C06964FB47FA7E8E6C5A76536ECBA7187092BB64C97B51063 -03409528242E0D79AAE56E8EEC79D10809E0FC4C7894DB3675BE52AD3D954689 -23FD259BC85866AC5626C80E19B46D46BE344EEBB27BE626F03E2AF83287910E -F1137C184D279F0886A00191DD1E78EFCFB193145ECBEF516BAD89911E0F1261 -E9AA1E7AEAB774443B5B47580E94E8D11CFC72CE036D292DE29C0E458CCB0CD9 -B9FC222E3244A0B41A2FFEF2BB88AD788609E5E244C6C88B093582ECD05782A5 -010C2030B988B7DB1E30C6D8E54837865246B93CE7E040E2A482FD0E1AC9D50E -632B6508154A39BBF6D4A6BFE0C835B057D5953BA5EE7E0941146E9AFA61FC98 -0182BA32BFC0E8DDB61F96BD482A3F3BB5109B08A97F0C369E9B77CC863B5E5B -F7086A48F59EC18497AA38753F2CFFF02461FA37E4B555C0F292BFA8ECC2B3D4 -5B41FD849C8E94FC2F8A8FF379961E28EC3DB127D9F006C6F2B91168DEE7255F -4BA8FC35765D75A2A2C9065570592C25E1726B492819927E6A0278C26072A01A -C3FCCFEEFD6C303C9BD2189DF98E538140E7ADF92CE4673930E950CB2A5D4F1C -948FD5F5C0F58D730E710EFB86D7121A8C77DCDFF7563E756A63CA0DCE6699A4 -DFDC0E17DCE17BD056757E944D2A0EE68E819D2FD3326F9C3204CD04363B2767 -1765E56741FB06DFB613B2305AA464B3A2C5950392B7DC4A37FB532B128A76F8 -7BB70D92F0A5A84118658061D40DA770B3A2D8DA3F1EBA9754C451C8147BD4C8 -C8CA37F12C3B3E83DE897CE25B437A079BC16C1046C3935792EF7685B3F234DF -14DD781A80C66B7B315B2FFE93DB467323E01F0426DA7F488D5B28EC0C4F061D -CEE054FA05071CDCF0AEA789EAE744D80392BD557F4023ED1937A1B53C757AD3 -185C0710907E7B87482C48A1E13D2BB81F6924FD8E9E8D99756BBAAA03EF85BC -DE6E14CAD1265E16E781AB6FF98492DD8D479AC2E5206D2917C97966110AD848 -C41687115E67B559D183A07037D04E8E2FD40A5A40E7D87649739CBA8CDCF443 -C587F0D9C00B9A808F4E649AE7C767B35ED489246AAAB778D5E63AB7FD2777C1 -26A941846E215BC7496D78D098CB4FEFB819FE8E5F98E50677D238A1CD1D661C -67BE46A67131B095025421A13FCDA084279959705D53F0A940AD96948DB37000 -A68603C8843CA4E7444435F17DA361F2048D216763FC5DA7C687C6AC40AA7318 -677599384F99D33DE44040D7DE5A870A420F638E83A811283290F0D5357A0048 -8C1EC53D383C8E5E7895581B59691EE045883E3E779FB0470F901BD8613DB965 -D1D005E804FA715EBA9CCB6623C51F41FE9A5FC108647517FEF1E9407D4F2527 -8E593E8284E9FECAF7653D668F975436E4B44E15A8CBE5CA08C04DBCEB7E40C0 -496E22802F2938433DBBCC34A0BE026AE1C21CB0B89E81159316D6F847CBF057 -5DFA1AFB203BB574E7D5A78C468C285A098798A223A3234500C2564A07F416FC -3A313DD014ED39222BC4DF4F9C9500095A1F79F71DD3F065C95C3ECBBE57B714 -71FDF51CAED45DE330BB35CA4D3854DD4A353623BDB414C852C8CBC4B1AC6ABD -6A3F00DA0CB3DCA3189176A2116D9AD01E4A53B7A67158D52D6C36052C625F30 -F443FC0656863F451E67ADE57F662345C33A479B1832928B5220544ED54EFE3B -7517CA769B4CC4BD91C9A602B9DAFB48B89C3E490613A9B07C4385A121909511 -5A6B9DF7D5FA5381FDB8B456400EFFB006F15DC1EB93D74288E7227C8FE6E137 -56382C86FBFAE90C1E1F9325CB3E872E430F8525EF5A5B34BD7CA45362AC2729 -E1B39550E3BA8E2D29160058F7DA661C17E009762D0D99995E0EEAF8F8893802 -946EA5CF487C25E4C91A2A6B98E5B6DEDBC1BBB01FF8EF23C9928CBFE5DE8040 -390BAAA66997E936B50A1FEC18A90894D832CFAA5C35891CC01CE5DBAB20FD45 -C069106615C30C00758DE66ECB7CED5E8680417DFCBD9DBB672A71530254C71C -DDE3144D20DAE4B196C462D8828A3D612A998C8CB163BFA33CC62CBE83E63DD8 -3C4709E156A92123BF5FDB588353ECDD293A7281408B73530BE4806BB589C691 -5C10A1472D6C311AE6C173EB4A3CB06B7A3E2626D7979C427C8C11EA06C95904 -CF8A3D509C72C31AC379642EF9C292DEA069347C9136D71F44D39F4CC3E51525 -10403CCDD038D3ED6C6464989218475DD58B27153F0A5FA890029A928C053AD0 -2989CBB3B0176D2F88702D00DBA0177EC51B08D7E0F9333DC89C0E69B470F52E -38E750F11701B957A3161364F6BA74A8B8429DD87D0981597DA9206A46795412 -225635933413394E4BA04A632695F37E253760874E813FD8F4275BCBB0E4C6B0 -D81D546DBB99E27FF7A1AD640364EF547CB5D2DC12D7D609DB0B9E4EC651EA41 -0E3362B3745F9F1B3849E2C047138C4589137160F63FB5C093FE743F9B2A3907 -B08B14F51FD277EC66F56E19DFA0B0727CACD93ECB1580946C9E0092F94F740F -F1347CF42AFD46F3CFC4E44BA60BFEC83F31381DDF20EC1808CE650BBB75D8A3 -77827873700806A2A7D3264B95119514AB9940C0593F3EC58D3CB7281F2EA154 -E1C2FA3BDE6DFBED2CE4D7A74EC9718DF075B6928437E54872C8C66EA7C17012 -DEDE74F0185C67C4D884C0DF21C6F80D0820CAE35C6BAC3A9EEC4183DF461FB2 -93E2172FFA04E5470C9D87A71327278B2395201343AD09AFEB35F8501B24445D -9B2614D75523AB7A8ACB67301FAAF55321FAB88DFD65577E2980418C6EF5D8FF -52678F027130DAD71117820C20DFB4A24092D8FAED4B8D926CF8C3E054AD0389 -A2C37BBFE78622CCBB3CC1853E90E6E4D906410BA8FCAD74A04C51CF2691AE9C -6C462FC60E1A644EE0D90FBFA4D099F8B354A7E835BFB1C6569CA247C10B45AB -F7DBBA63B937012C6E1FA810B83D449D53331DE1379E0F820F43679145B59B4C -CDD277AD2EF9D907E940E4477D80EBCC77014FF7622E5AA8577C889FA8CBA263 -72510B0F22D28E2C5360B2B2C7ABC7A93AB6C3D728844FC7B841CC53EDEB082A -2253170E67AE6EA143B5CA64C28EE34917ABB202F2C0BFC6F8223EC68893E887 -3CEDF6706042F4F95D761D4B916DA6E946E66EB78C8A2512DBE6866F181F7480 -387C49646C79DD1C174C26DD5F142EF203E0E7567A680A35A7B7C9EF3FC361F8 -1101E034F202C5DB0D8CE9DC4BAB1BB9CC04CD0036139E96BA34B8F6C37EFCCF -4081A2B9F1305CC79BD3742DE74B82E39C533D4C2E65C7CD55625673B11AFC34 -2BC54054EED14E9AF22B578A36D638EBBE40075D3206294844283CDE49B54E6E -11CA2540C763EC4CC7C389051324238D0D380AC81AF4EE04989A762637CF871B -C43D284D7D5191C68BEEF0060081B16CD93E9F677300422A7CD2D4EC541A6AA0 -DAA2A8A44BFE7BDB65A989AC89E5332DCA160C92D2177ABA2B3CC510B1E6CB2E -F4C92839132A822CB52941E83E9360A96BA996B0FECF3EAD5DA932DACC0163FC -EAC4FA40275965FAF0920001F087EA4820B87A49CC4CAAB6C336FB89FAF09AC4 -BACEECDF4B4C106F70576C53F55390D50C6B8EAB81320400A24626E246EA71AC -98607D9733764521EDA48A56F6B9476030471DBB3D91854D4D6388D0A62F9E3A -F5086060024541499A375347F861343AE902C150AF033B8F955CB664FA657742 -93AA641F64599C02373F1881272B4A08A44D583D76110A43832F6F22B86DC5A2 -D33053854E746DF104241714A2B17E10EEF0AC2929B4C15C5CE3D5D7C2EA7FA1 -28335A0087CED3DA9536E8460CE5E957747422A3644F96C80714E3B7DC76BB0F -73D6229AD8FE72FF8FB58EC577F2253E2D5C27168D00401C94201E64EF770A07 -DA43FD8C31F41943E46EB80DD3D9CE38F72AADA9E70B772A692CA7A41573FCA6 -C46E4F9543C004167529716EC417B5EA6AEA374EC7EA6F0F79A5F32B6F40A6E4 -13329175694D7869E60B837C4230269922B681DD5588EF0B0D77050B71D3258A -89DFDA0E7B4EBDA9F050951D4573EA959E5499DFB5BA7FC894229B26DAE9B82B -8963640EBE6E892C84FB3954ED3B0EE64E273761B4CCC34E06D88C630A92A79E -E2B0526201FCD0835D5760F680BFC51573894FF976BF8E6DE378E3B24261C8DD -BBFE0C9619F2800F807716E9353489EA192157AFB5184B4D4847157491D61C9A -93AA2DA0B076444CCE6A2065BA5708FD5ABF50A8AFA43AE65982F596CCE43B0B -550C4D63590E0B8C48884B2388B1E3A050035DFDEB1DA220ABBC945B542E4551 -A039914EF703EAF77FF5A8F53073775703CB7681AC0ABA95E1CF016BDBDB0277 -AC407281BB4A5DB2FDC550DBB92130234AD7054C851A56EE0AD6827B89BCC5A5 -2748735C0F862AF250B55D2CB737DD5B0572F7C129C09828E4D71419C27B59BD -F9AB2A053F432A956EA9E6801986D3B1E55A80C4397E458ABEDE8E9087B07FBC -101F3BD84D24C5BB61CED41E292B9CCC884681A3072E0D420F0EE2B1129FC5AF -C74D2A359AFACFB92A1C849559DFBF0D09018496369B5377E696C1CC6B9D9B67 -030342943DBAA19E677DB0A8DDE0066D8E6896CBBBFDEFE13EF9E5A85D2A9ED3 -9540316EFA056C11A8E65480F85A0CC8D0DE150B8C7D22E45DE10710952C3974 -C9D6026A9A6894C1AE2C650EB15EDE4E87E4F457FC7B8EAD32BCC5FE508C9284 -EB456AA6FB8D297C3F5E71AB1526956C66CECD83124EC68AE6546E9C3BBB42F6 -045F4A6A557145FD982F599F8B285C0772D6F1EC2F73ABC61E7EA0E6A8A4D391 -B5CCC56AF378E9CF4DF4732548024D51CFB3DA18D78747566A7F7E9249834BC4 -6557A1CF2489EF195FAB236BB48FF427FD32E1903B8FF82EBEAD2E1CC6D54821 -FB3F6763D2CB4E6E383324443D1CB3295BABE7328B9FA95813932A37FFC3A9EA -E45196FCB6236C73CF95FFB675510259939F4525B298B3A69D0B52472BD31D45 -24CBED3F82F7477A180FF3430212B1CDC21EEA48F799B01B763C93CA93398E46 -360707E212942E17BF445D2E054EB9C35B4204A7AD6E72CAD1DE1589219E6530 -7E67859BB41148903CE77201B8FEE094EB659865F6A20E3DDD920CD27B118249 -FBBC11810A14E60E8C09E00363C039AA0360BDA398F3C65085905EE781AD5726 -DBF612DFCAB47C9E9E3E516CF26F53B6605124DAB8C876F50973BD3038B03EA9 -AFA4C6769405477A68BC4D7900E1DE54207FC766AD11F19A64AE8D9A2C058BE1 -E89035EDDA2E568783B36154DAAC4E3A980A38968FF9B81573D5C2B3FDC093F9 -A98050E3E1406E2FAC3D1F9D11BD6F511B1A044D5D62329DFC901E6F962A3DF0 -3663AFFE48E0154AC5AB244524B79B5D5649A2F9C2223DD97594E3BF55225858 -1E8173B8A7BCE623F9B641AB8AAC88B9224622E102CF2D091ABD006875F6C616 -FC7220BE93F77A11E729F04733D12F8E49AEDA23A449CE772971CDE7A8065888 -0032E17FD396B162C22EC213E0D303297FDB3160B303F1EF69851506E3332994 -760B7E59FEEC01445E28C6681E85D90BE5680020976DFAB52AB29EE292747C5B -41752846FCD3C2E0A2D0F0E8DE92D16B1B5DD41899AAB80EDCF2487E1A986E59 -F7442F68B05C8E1FF12D0D0CC808ECBE51CA429D9FE388929125DB8F03036C95 -39BA0153733DF29B00DA9C96303D265CBB80D314EFEBD2AA26FEDC7328937612 -BBF2714552B94C8EB9A567928C0D275C72AEB08638DE4324115AB9A451ECC6A4 -F0E47E73CECFA0AACD1DD82232540A7D1FBA6075745EC8FC36FD31E3BEAB060C -BF19783B8B65519FDA47D5BEF90ECA881ED512D200188ED498781F6EA83DC1FE -95815D1B4F05A33230ABA8A1FE53E13F35B92C1D76E15265C1B6F69103FA33D8 -A90B1176439861ABD9324D2AB91EC9A216BD93472BD9162F9B9D1C0FFD26B185 -A696D9C1927ECB9B20F1F7E1454AF91F9A4A3D129C4B034BA2D85BFCE6A2A1BB -97B5674A51D56C6DB03A8F26CBFE9DD301513B2671F0BF7B074C4D159F9FEDDC -B1225B515C1088056A9D81E6FB640FC7D37D3B9174FB65BAF5AE5A5906A5B250 -B7B297C805A087FAEE9D888E0844014C3E4931F29D4B75F8A31C02B0B69A56FF -A2FE418192D1E3E30FE8414A1E1852C8CC2EEC091F635F6A76EF82878A260F9F -D9CB3BD28EED2307F1E8A0FEBF82E7B2862E176EEC2947307D81607CE8761480 -6DB2053DEEA46B9391ECF931F0F9BB8BBC097A37C6B02AC724D839BD5AF43C5D -7DB5146B769DD171844C8EDC0C4F93A63CCBE7519DA6654422B1E4049AF6E96B -0B23AE5997644EDBDB0C139BD45CD8708824AECA2B07200CF7B384B72D23D60F -DCC3A98CEF3F6F4744276C714C08B835FA11619580E8E0F433E8D069636BC321 -42D6BFA12DEE9F2D22293950E5097AE72625C6A8BECAB5C0656716D4AF11C755 -298500684671ED70FCA40239AD0A04F4BAA1426B5931BA1196F1C97C765B1C05 -602B887B8482F9A4134E3F0C557E1420A9AFF802445DA1F631B82AEDABA2B98C -716B9DABFE8E40585EA65D7910A2965F99C5A63BD178E607547A12D60ADC5DAD -589F7EDD6482FDB2113622C07B0444DA233213846A61C260DE760485A35A47BD -C020482DEB042B4D7295A7F90032F7228AA7529E7E2C9BB2DCBA64D5BC6D5419 -41D306C16B0DA13DBC5EB7C6874B5362A6300CDDCA16425AF32FDD997E48429C -EB4B6ED76765939DF0EEB4DA1C58D79BE11980B636C9ACAB2776D3549CCBF157 -4D640A86E1B6DCD14E56F18B0B30CC1FEFA6199BCF33C80FE48EBE85BEFA1174 -4F52F67C06D192B48A79BA47D4E6790563DAA2F1B2967B655FA0111741854C3B -B53410C582011F89D2BD1509718DED0DA887E39D1FFCBA9BEFF793085A448AAF -2798D65DB0A3D66D235C00A9977F2D3D3E978F4A03FFF783BAF0C33949D42541 -FB24EFAADA5632EB66A1CB60E22C957B13C7E52D8F49B5C99A52FCEBC7159E33 -749A4F647936CF51D5EC511720FD6DC01A4B0C2D3120D4DEE5E498412213DD20 -5C10975536EEF28F9BDBDA565779E3C9F1C3A087295F6C1D4DF2CB44104BAA81 -C5C8D6B4811AF48F65A3D5BB01B982423E372D612FF20012B0909EC8E41DD25E -9B21963AF687A9678FD79FB8953CA5A1E38E709457C196D3D080BD764E898617 -F7EDFF583D9D75D8632BBBC57982BC9BD23BB6D9E6C06497CB4C01625579ABEF -1BB42CA4BD7261CAE0CDFA67F50A1563307DB14C7D3ACD49E59E3842343A97F0 -A5C45A8BD3D80A583B90D88D8829F27B093FDB2E91FF5ECDEAA81DBE611D93D3 -F4FD48F3B74EFD140EB1EC4BD5A463DCC84E2E7B157C778368E46D81A7B29F4C -D4794473886CF8E2CDC60D2FAA4F537C969175E3D428A3918CBEEF307B34E981 -9534B42005097443968D4291F3CEA793E707B37CA63CB2516E8575B8FAC0EEC8 -48C4CD48E2819E4DB18E428BF7A933753845B5ADFE3C0662C147667BF0FAAE19 -3B6CB8CD20C9D1B5657265EC8F04AB427FFF352BC8A343F98D1AFF1EB6EC03B2 -FEF15CD3CE27135CFFBC2EDBF29E3918330D13516DA2FD899299F4DD996083B2 -AA5CBAF791C8BFC31D25EE31BD8F9E1946FCF35DAC9ECC347BC33E82BE5E5236 -27E424FC8F18B01BDDF1B633C8BEEC69B772F2CFCB521FF7ADF2CD57C6AE9FF9 -B39BE3E3A5CCA2DB161A441246D970484B146B3275557216D001553A58859F12 -9A102D85699E24B901FC3B4D93B84F83BC0DE7AAFCD886703EB065BBDE63C83A -958EFCD18D53136A283E821E7AEA7EFEFC14602B1E4C428AF80AD991EEC31E69 -B0989D19353B1818874BCD39DA51EEDFE7EA12375B6CF462385963D5CA49F7C1 -E8DE6BDDB7807C3AB5F232E9C8B242F09B18EF6B7C4D88E47E3BA33EE16E0A3A -DBE6CD175E403DBB1EA5EA1A74C72D749D743C63203050E87A60C952E9925ED9 -9C509459F31F7B69E38E737EC96EAB6B2402F689C10567BB758B9844623C96A5 -9206B8B17A51D67745312CC02028917150D16CDC362E4052C6F5D4405B686A6D -B7D7CA7E60A99533D0AAA5C0797BDDBC078997FCC20645763F4B5F9E4BCCBE92 -E2E928BDFCB3EC1A9941CBB04D85A0BC386A612A655D849A34A76E3E3E1C91A6 -35ED8D77D27B090DAB616F8772481C57741CD4A3803A35E863D9D2C4863F0AEC -305059A8C70BBC916AAF8A79077287783F2F01C0F676678D6EE8D1E7F5855D48 -958D0C1304F94B4FC6BAD1FC62DC3834713803B58C680E1AD81E70A09143509C -B79A5BD469AD6D63AB7C8709BD8457A635E85EE5CE2B81B565CAEA18E6A6F738 -9E40522E0D7B3CD35B68CC2B88FE81279F379DD01643DD52D74046A0D0FCE216 -BCA962C1D10BEF7FE76C602CF2F8DAE1F7160555A806CE3F1F817A3694A2601E -443A85C32E47393B3D4C08ECB5F507C7A12536B89B446569E5E54512A4897EF9 -84513C8BA4B9C8AF4ACF81B2BEDA480003360DD08DCF43DB57EBD401C9C7C4AC -E08BDA494B711F9F2E2F954051D7A759BC73E5446ACB973F2EB4764BF8227DFB -08BA8DCC4CC289E367EB6CB79B8798FEBD585E4C3DEF59834570935A6A3DB3DD -9630020F4390FED9215ACAFD4683FE82E1F67CBCA8CDEDBDBEE29776AEF92743 -8A28B00C873FEB39A9C693770B410F1B91F631948247658632896F821A43C3BC -E0E9B92E8017F7E5138F1A472FF1C4BBD64F1642A5818F138B35EAC4C7C1FF6E -917F0AB74AAA9752283E94DA08563A52BBEFBB97E43121E5FDD1383FD94177C5 -FC7B706A19FF4B8434B33D603E4F05B5FEC2D8A6315D2CBD03527403FBB25632 -4720C539EA5DC49727BF459E73770E64674E49FB76DC914572E9CE7B0CE5EBDD -50CF330BC6DACA9981FC741455FFAB7E5C4095B0FBB4ED94F327A5D0AFBBFCB5 -5F795A9DB07C04BF326B8C95A73BE943EAB0203DD488FA7F6167CF77638D98B5 -FA44BE3FE030953CAB6CE9F0BD0258FC6862CE8A29D16528CA5597E7997B8078 -70534850BDC3647ADD483C6BC7081EFC121819CCE63A080642ABFF4A223C1CC6 -A866AF0B64EAADE21E55123A8181A1C7F36D5BC654C6B31231B6839FFFE492A4 -E5700603C7B28333967D1F17875ECCFB3590F84451374E30A8962EF0DB618EEE -D15660CA35168EB3531EF23370A13D629CD1B601178A2A78FAB7EF75D59BD3B3 -3C0F6A0A2483964AA9621848310A1BB3D9AC3EF682D6B2713F821DEFB9208388 -09862D1F53E11B5B822A4F3B02AC5C6CD27B7EC5C20CB2726E811034B360C16F -7E0B3CDA6E68A36944337E9277FF66379D8CA2D67BE9BDCD844B6FA85DB222A5 -DA51BBFCF8656D5038CB442C49700AABCA3EAAD9AA163B43EA2502CACB0FC4C8 -FB9E6520CB42F5BA1175E9E56A13E4627B81FFF8865DAC818B0A9C2624DD436D -A2E91BB348E4754020ABA942C7D521B1052D8FE4ED5B5680DA3E33F08B0021F4 -8D62D2DE042B497D8DD8B37CE488FD543A1706F1C87BC111CF8AB593E35CA099 -4D2A02E0FA787B6C090023AC5F62F86E1591E37EA20006B9D3195D8C047CC5B2 -A120139181147628CBEF57F3FEDFEDEAB16B4B7282DC465FC53E50F199A79B48 -8D966083736285148FC1A76382E4991C7EA605B05AB1460C2CCBF10A2EBBE340 -ED042D2A9D2092F3E91CD4C7BA6D9E60EFDA103206E67C6501CC95062F70ED73 -3A591E7FC37CB5A10C92FA2808B494E4BEFC956FEAA6EE82F8D03663BE9C9139 -836AE3D1F88C0B7DBD8AD9FF3BDB7F36DE336D4C0774149A9810C27B3A2EA083 -BA59788788002481964B952182374BD1F9A72545CBC4B0F53EE7411E35C04128 -5CDE87DB0C69A2B8AB74C702A74130B302A8BA4B85D021BD021A68C76357505C -F439AB81B5FA7834BB48049DF25EEEF85887AEA66DA7234F11FEEF9E665EA2D6 -2F896E5720679F8546C80B37FB91AC7A1EE7182851B3F20BAEC72E1C74E18755 -3B908AFCD384F44E26674D13F3FFE746A718A04F7C92D0E09C21C1AF7267AA50 -0C7C0438E3AC17251A08C4A39142273868BA91E4B9A41A159E6C7B3EE1B95894 -625F2AE90DFB33B36425BCDB41AC15EE4588EF93C29E60071F247432C76BDC13 -7270E92989CFDB470685F6B5D187E15C9078E09A0CC2A46B9229FDE4EC46B236 -4BCEC1E9E0AC88617DED14FF9ADD9B3C874541E226EEB642A3762A382988A15E -C1BA3F257880D0B0CA7912BF529F626E76D1B242833921A29725CEE9A66C0068 -3232BC8A3170DC768E8D9947B62742B9342B01AEF38E8331B997AF996A73FC48 -C8A457977CF1B4251E645F327B1CF9376D15ACD06D5AE59270E7254A56FB6852 -19CDAC3B14512CAA4D00823B693A1FF0C4E2462E3058DE548CF52047D9F9A39E -109C9CB83E5AAD0A3C958FC40FFE45415B1EE51132FF593913F3BEE1C01AC778 -1BADA832CADA92FD40EF207617857160563BEB866C76D14FA651507C6739FA28 -FDDDDEA39E858CF7439BE229697565228F4CEB4C94A6878D30D32A00A1E5960B -2D32953BCB686E0DA000AEA0192BD53618AF9481121779CACA0DE4F2FD4CF81F -8D4B9D3846AEB66795F81D6EDBAE8BBC60AAE4540E19A6D2173C22D50F9CAF4F -C4373617F5E449AE35F9820A53893570545D5EA6AE1E8B3D7775535041FD7860 -FCE9F0C78D142172CFB777081BB039877B98D59C797BB2CBB6E17E42DAF185DD -E593D88552CA8605F910FB64C4292052F781FF971200FD88FFA5BC85CEC50068 -A91B20C2D4129FACF68EE0DB5D814B107AD35571F3BACD2C754EBC6175522881 -25D2168FBAC61AAEBDFC1F5D64F2BBDD8615623BCDAD49F21F7FA77743CC827D -BF98D727204FBFB424F16C7151C282925198C644119FD82B9402D268755501E5 -7382AF8B16A825AF7368B2D04B77EA16B9A107F6588C346805EC51AA2954E3EB -59F5C44A28A31E7AB1724337C42F4950651DDDC87F5EFFEA1B537F92A3F60058 -F99F05AF0E58FEEF778DE67A0FABBD933F0FC8D82C9A463088D46BB24D649C60 -C32571EE3E11E17317459D2CB58CB54027F895A862C18999BC0B10B1FA9C0B8D -CDC2DE7847F8FAE9CEE8D817B4650D730B52506D2FDDB02B0B8FFE375E885C3A -0F4A747C63BC4D70751B98A32FD386FC8BCC07CD52A9AE3C959311941C77A5C8 -6A5109E4F43C7B79A779FE30DE2AB50F4D3CCFD51C5CD55D7C43917491B364FA -3BDC3B24043741B0C5D617688A05BCC8F01A14D643214E3B186E6D791A2AF3D3 -A972AF68CF394DE082CFCEC222EC928825CEEFAD02E84F845A5744EB7FB9841C -F73384071D6DB7E6692B8792DC38256446FA4CC2D3D1E6F7436C568B97AC2950 -167FCA9D6D997218C05A905DDE26DDD283F64E21B11BA2D9217D93DDB0D2F985 -10770F9D756090F8D5F3B09A8B917F12D8D43C4B354FC26C8D56F53C62872CF5 -E32D25F0A993BC0F2E4F0E2103DA6E729996268A3FE96EA48EB6EA6B9C21D042 -BBC55FBCDEF0C786F1CAB555DEA42862F3B6B212952C1D944B010EC51DAEB5AD -6E0D7361AAF600CD2659DC59DAEFCE791D9B0D3B718D45A1F93CDE3B2ED72E70 -13EE1705DBC0A8F0CDA57068E671B86F35CEF8161355336342F2B95D4092EF3A -D403C417A5DACD576CC9DE10F0F837240B3669AABAC540361BC69F31AE7ABFED -96838D6B70DBF3BE145BC07C60FE6498A925C51471788AA5D8E1E69010C8C513 -87C6602BCBD4AE75DCE4BC916D8E4F7B663EFC9939F55A6A8BA7D445D849BCB1 -2BD64A02224B841BC9872865F9A4068DBF73AF28DFCCDA23CFA589FAF6483E4C -1A0D5D377CC241047AF5172C4E1A7E6C16750E53E61A74BE0CA3EA6E65E9D53A -912578C709131FEDCBFCD1EFC0610F6D105438CF64A7F259737C3FBE09DA07CF -8C67CC6FFA640DA3D57B3E2D695DFECF53981357BC06FCD7D089859064651EE6 -607BA03B0C3D7DDB0EAF225F1F28E0E4B38BBC08C76B6C42C4B1747AFCA9F2D5 -BFD0073C03841155CCF38214F48EAE34507272EE5CE69051CA87A6B6214C7A0E -27F9F3AC4C962E920542C762510244A6B61502684BC99F9867557926066754FF -D707640D0EE946F98922EC777B3631BFC5230B3892FBA074E6B0C91CBB36E51F -4BEFA5CE13B58B6278D9A5D82C7EFE170EC2BE0367BF8531C7495C37B848DFE5 -3E789822DAC88A3D5ED772D681F4915983B3A67D3949FFD1A659F936771AAFA8 -C61C3C884F3BEFF84407144332DEAE18923FBD1CCB54DDE059694BB3E46BC0AE -8C5B914EAA3EC71DA87B4E08CAE59E839546E0D89B3287EF19796E397826E7CF -3E966F623FF66FD752460A15A7D85F84DEE0BAA16DBA3A649DD0420B28B4C39F -D49F2058BC109C46C58AE2A9CF47FB3EE019BE11817C2623B473BED923955FED -5CC714083DE1710E8648B6CE7F900F15C44344B2FAB16355FBD00ED9D16E4396 -36AAA4F49EEFF25401EAC8143E549824FD3949091BD47F24A84987379E3C3526 -8378C1BC4A12B09DD99B6AC638532477CCA879518994B01CD21A3930F1D9669B -8A778E0CB2A68114D40996A3CE8E55436C5E8F20359E45A434EA9261AAF98F82 -269F021803FB661D4F8C881ADC90A09A1FBB2D03AC115D3421F122D01376AB23 -0220BA0DEA220D22E1490FFE1DD1CFC30986ABFED309FE126F0AEFFDD76EA1EF -65DBF44E3765AF88E235C74E5242B02C802E4FDA8147D8874CE1C71669F4C261 -E06BA951DABCD307393DBE0F01349B66B8CFFEC90C39DD30BB8FEF864F5D85A8 -B46D8A796F5E25D033E59E14EA5E480F34807F92056CB5C143434525B32A77C9 -A76C1713EEB2D49C346D4B256D14EA6B0ECE2709A9E500C4EF203E031AA43459 -66CC59AB6C19BA33D153A4C53BD6B6037C59BF2C5EBC14563D97E38742FC23E0 -E6C5A1E8896CFA9A03FA76F1947FF788C7FC7C9973B958CE08BD2671C87A4EAC -BFC023F12BDC146A49533435C0A60D313E0A08173288432DBC2D9DF015547B95 -A09D740908831AB01ACD75AA036961BAE0EF713470E727FBCA880F252116EBAB -47A38B2D4901C84496FE92D31BBA8CFD8987FFF5E6E290EAF41E4EE3C9C7188A -76AAA149913F62391663E75BA83A077EDA63A5982C3FE0EAE75C5D9EE8E17E5E -21454664F25BC0684A225B5F3615205A85C07DF069BD1FE0FC10F12CD65CF334 -1C656085F29212B1E06834F4914260FF7862337BB4A256EF78D068C307947F30 -89C19617889308331CB4B53BA71E38AAB0D161B4112223719DD8D6D63C33FE3F -569132EA533758DB58E180CFBBD49DCD306FDF0ECADE93EA5495F03AA370C394 -F8BA290FE270F202AEF202A6D15311D2F6EF4D7240E86F95224F6B2B58E0F81F -82D037BB45D290EBD666AA3A3047484A4EC3ECE51978D2C860FAA066FC97C07D -D6CE20450B310D93EEA5A306DA97CD6FC055ED1BC298F994CF8A92F2F8335EEB -DAAED0BB928567A3F61A08AA1760B22413020CAFEBEC16A4AB9FBB6C0FCFAABF -FF240F40CDFB5AFA8814156921831411912E2B8529325C35E7EA940610C46CCE -ECC4090734C7DEF297B88B4B4119BD386E51730A492D9A53996A5E611ADED22D -C6D38152834AD04CC9996E2FBFA34C90BF57ED326BCC7AB3010273E5EE8F1EE9 -60184E436768D65329665FD1043B419D165C12223A22242D03BBAF6FD6DDDD5C -25570137EB04CAFF3B54198F049A587AEB1DB7604A79F5F25AAB7D457910A1A7 -A5C57B2626502F2C1B0A943C28CA273AD4E8750452FBBCF0DCF9A3E5A40DB15C -EA31013596481168DC5C66DB2C1A5C18E8A6C8DFCA1BE89FF5727CAE7E9C5250 -67EA84EC9B60DF4CEFF2F4B127D9E6B000B543048D67884E11A41EE56D2D7736 -E1867FEFF8C8B97DFF3749A6C583AD095B8EDE970E3E2011996E4158CFC4E538 -F2951A95B1D9B7D778AA7252BBF3AA1FE817B6E1A3F3831F981DBBE0232B783C -4BAFD6B0CD +61A06A43575568DC3CF3844BABF04CA767E2995196097015E0C4F622C4356B6B +F41DBAFD797A4B9D7AC22332C552043EF98913D0D9B50CA6B7CDAF903BC5C04F +D20A952BA5CC35B646ACD0A287C956B98C450051AF6AAF79DF37F8954473F8F6 +652BF03AE2AE82B99D820CF93F5FC0BA17EBD7AF90313E70594EB5C354023BFA +07912408F1757319C7288E99872B907D5AB583B082EEED8AB079C63E38B07D11 +6744856E689A479CB3A8BC081F33CB06755926204981DC0A45B3ACC18F6865BB +EE2C50DB43B62E3630FC1D9B1FFB3BFFAA6D0A20C0381ADF48E4D916BEE85BA2 +BB40F538F55C11D50F882B73913840B45161262BC8B0012694C3EF26452F9B77 +2CD7C7AD6BFEEAFE31C8A721C2D46AA00C10681BA9970D09F1E10DDB693AFE84 +246AB18279A2B24E5B50A2FF6337B7B1039FFDD4B00ED3667B5F2F7BC2786D2F +525A0E82234B30711AA835EAEAC2E404915FC7EC0081B194765032708B5E11CE +EF6868298CD26E5B9EF345BFA3EC2911E2B96A0B40AEAB95BDCCEE38F5EC170D +3BFB792D2DDA7E57BD2FB7669484EF9322A1BEE009594901095DE2BA9A15A0EE +4DD77404CEF16EA6C31FC04A8FBDEF27B9FC1AD3264388B0B12D8E476305B912 +30B51624D4605C45B514473F327DC3EE8BA69032A95301CF714F225A92C253D0 +D943C80B9CD0524C5B87A8D052D2E47A9725EF869D3B89097CC13CA9BC695FF8 +A9468004450A76A13B7EE78A03CC18917EC44036C2DD237344E594569B8F2DDB +21F7619180B8C760741961CCBE54FD6DD07C4CF73B346099234A1EFFEFC88574 +6324E4232BA18A38EC9F0B780C298877EF0AF42C1EBC2EB52DB64A1E1E352503 +36AA29953A073B864FCB31BA938A4163D000A159ED4D345331FA1EB4009CFF67 +1D107BABA6AAA48075C6C50BC7683929EC146594E55B01D4F5B582328284068B +2AB05CE92EEE1DF4557DFC8FEF287CB7F961F4F1828EA48B0ACF5C63E1EEC8FB +6A0EFF132268B7DDF7B465D4A21B05993F4A4CFD168A700D04A7303BC2C00391 +392C3FF97E770E6FAFFFE501242B20B4F7B6C17331C64BDBA3E59695E176CC79 +E7632AC6D2E920AA048BD1EBCF9909D8C314D2EF3CFC5CF88D8570BAA814D467 +96D86CF4415C5B739FA6FE7B4C228F06268D28EE33381982E7B005C26D2604B3 +AA363CA4732B9BB0E4D4EE50556D777258A7BC232087C9F00B0D5EF70270B40D +3071E14E4E5AB5AF1C686C5A7C268D36A0787DC9300D4CFA004F89A73FFEF780 +E6BBC957E31B764159C3ADF752E6E1A6C3B5B855F8A483497A347B601E3C8DE0 +362D76B715916113CBD2D3765197074104C7E17B87670CDD5C227A1467BD678A +BE442F196034B02132850CCB77143C2873447FDB8767C462C63916D9D4A13198 +B7910E1B274B27644DFB2E8372C8CD55E6E2AA5CA952A079E1E6389927495921 +CA39D69ECB4DF382FD2DC213EE382BA1A48CA886CB6AEF2B0C50CAB47B1FC40B +2C95E13190C92480439E3C56188D162C294F24987AAF4E15E8FF7ABBFF2A12FD +AEB884FCFFD671EEB94CC075B815C6A45549EC23DB85923F4C37221641B75CE0 +C5C8FA8403C2C9FFCB66CC74C5160D6C7042DDFF33A954DD01C8E21B21F8F364 +F6FC735507D0DB5F68F2D8B520AAA7E0F1D503211339F9466006E9A148F39874 +A1488F1F0458409D442D2BF5935A655AD4656A8411543F58C63DFF9C4FE56256 +7F9F876B56BEB208F9DCA363D2E0F7DF3CCAFD5F9674675BF622CBFC2D1CEFA2 +7A5323971101D3641E99D84197B00D67436843EB9CF74C273062159C361A07C6 +E3F1E0E4666ABFD5C9AA8F914F05D02EE1906FCB66E421C73243257170617FEC +2F02D5A7F3347CC0D290E52FA815C4D5D2A16A4D4A5E0B50165B0C5C77B675F1 +0EF343D70813346EC4D7384A9D9A091984AF29C810F8C3D4247D37F91C5DA967 +747890DFFB25E67F6FB766168487AE8BD8E49C55BC1B68B831E3F510BA1DA3A3 +9F810B865FA98AF89696CF7489BACBC1033A1C929023588E9E03FAD6D901DC52 +A2F5EB74DB679A16DE42F7B47BCBE16617EDC7328A2CEB2C23733D98ED753C66 +502DD2FC75CE2905A429B5B56C62C1C0FCE17144D96E0C615E7FEA48EFA05D9D +344ED266BD96C3296D6005D289228C62D572167E369AC65724E0E62AEAF608C3 +423FD37E586D41B2AF9B10E0A36312AC1A6F61418BEBF528932FE61881636837 +47CFEDDFEB25F7FC156AC7D6E78D608A91270FF6D1D510E8CD61C289F3E7960C +B6093B333A0CA3CB8BE51107C5C1C085B3CF6D6F61379420AC1E5D9A3FABF084 +80D6C719D93BF74A99D681726C81F9F83949E06A560F3B3905C0766134533256 +6CEECBBE3EDC220193964706085526386391260838C2E885C88F882E29F31F69 +149CB1B4B788BE82AEBD32B5A8F07D1F537D85077B4BD1FF945EED4BB41B79FC +CA0B25D1D761129A6043D701AB1F6655C06DF7B0891C3C5224977B9464A6A794 +5FAC6547F7548402420976CA3A644E5A7CD7F64974B71872B02756FF6A135EE7 +BA60B9974A0A2CFA4E46D91B929A3A0DECDF44C39CC06BC2105538856718CF59 +59B1D9BD88735ED4D83C17A67031178B43CFEB4C301E551D708F5F08E80E5A1E +5579CDA06C9902E412052CE7714A8BE29DF9911F556899F819A7FC2565522182 +20918E8C476DFC00F79BCC4248BCAC6615891C3115B30A39B365044CDA0AB26F +C8966DB46FB9FB7B7BB37C48B7CC4852C8C05A57D92ED8E6AAE6EE5A60BC81B8 +C0B22E5E74610495094F12BA6D60DA3190C4CAC7F46D740005264BDBCDE61FB2 +50B8DF1CBF41195E616F4595F7860F1538363D529E3E3FD2D408B56CE034521F +3D9AD6C30174D0AC1A9F9151C8C8DB6E7624290CEB82632679BD0A01EC30B3CF +FCE72F32F4443E137EA554CDEF84B62CFE21A5E8BFB2EE52C87CBD603C8E0FC7 +35A9ADA5E49FC4C7E3F1538C84761186C045B9F11074F8061F0F4BE061D22C85 +2BDC140F6CCD858B1A4E9AE9444B4EE3DAEFF4E3760A8B851ED3B9780F990595 +36210570D82E9DE83AFB3A20D0D955F69FD838B6F9F785231A84D8BF9F434665 +CB62D518CD5F4623711E022DF76D2CF20202FBA15A1D1070FEA87D6BE954DEE0 +370280ED09237334FCA7AFB1A0CBC9A153A25A929BEF57B202A5889958A9AEDA +535781A11DA8E2BB5C885BCB83053BEDE8436846C7B54B41703839F861F95D5E +3C34C4DC8FAADB39D20DC53F642A28B92D0BF1B02876E348B088AC9B2C55DB06 +808BA40658ABE50D6956C9B1201C8D3D97CF9ACBE1FCDB7E7C02D1BB8D87AE61 +2902D77900C11D1DA6CE808C425A7EC0B31BBDC690E98A09AB656294A1B17E00 +2D12DDCAA5E0F1B44EC9D7CDFB5E916045F5CE852D3FF3E8D421A11356EB4392 +F7DA22AFA6C18C7F507F5D8892E8F1DF11E5CC965A61D732F12EFA8339951645 +CC3AF8C3EC88C5B372729EBBD3530439E0E8AE43B43CF57A5258AE8AB259EB71 +9E1F057688B110D4177CF54B1D56D2EAB6B1DB603D6536EA9B9EA11DD57E7F3E +DB574B05043CEDD701DF8C0982EE726187EAF637ADC279BF7C83A244D3EA9800 +F9797A4D3E4D5F6669B49D2B37CC9BB1C9244B54DD62A5C4BE533DF46F618D3B +9FE2203DC6C75B25AD6B49B2A760D3604F156ACD80CF5458FEEA64E243B2E527 +E750720E97CCFFE2322734D5DD0FB1A8FD8FA77AD87AA1C8EA1B023F70BCCF92 +624F9A6B0B27B5C8A5AD21D8C08F62BA1738359A4D78439A7A580D605929D6D7 +60790297E11930F43BA89832A2D351CAD0F77AF8BB70A2DD5DEDD4B34FCBC714 +C2BEA2C26F768EE44D27F39021F5AC95FEF199F6ACC4A2F3109E081A3AC7F42D +1767C2A82683BED075A3293189784AC8D12F17FC3C15B83915E0425926D6069C +16D58DCF97B1D8E1021F51C47BDB1286B5F9CB60A2B2B7D3F219F20C8651DCCF +80B30FC5B20DD6D887BD571450A3A005F5980E90A649DEDD316A452589B2BBA4 +BE8625C231E5D4886124B24580C7795F7B3D063667F400C18150A80DEA255943 +B9BC4E1F0A0E5F5BFEF9F7322C836AE892F91A4B3291F216F99654C54BDEB5DD +87563AEAEED8D8E65D1B60795F1011C3CC63B8FAA15B381E04E1FBC2A5BA5EC8 +B76DCA2AE3686F7D71CF0662338C5E468C0E8155715EE8DD963FA7C257214DB0 +6E523E1370D0F14165FDEF1C9D2F9DDDB4C61DC764B946DC40BB897E8A0BD7A9 +A7D9B684B5899E1A8F4CF9FF67EE19B4FCB61AA4463C5F06309C7B10A131AC21 +63E04A69A223818185F44D48ED721CCCD98737DF4BD3CF6924C6EF30372E9E38 +22B3230829B054EC1B8B42D29059AB5E706E5EBD6CAFA57502005BB170E5B471 +8BC330C11C068849A61C37E5AEDFF994D9A53E73E12D3F7BF63CD6C435055F5C +875056658B8141B78E3E5050E3F8209CEDC015445893B5B798DED6777B98017B +4B9766F79E20DE51B4081215A072BF3BFDA0AA741D3EAB7F35138C2B32982453 +5681A66A99A21F0663C8B559FA49AD7B854BD648335DC7B8F72EA85CEC66231B +AE8F8FA55020FEB0FDA90055CE8255D02C0E2FCC829AEC8EFBAA08071CDD03E3 +9FE8C4F28DB460E0AE8514E319ADE43559B190D9104C78DEB8DCD9E1B2118746 +3DF257B5DA0A52F0F6F0F70352C2B1F851F14F3251A2CEF2B15590E4E80363ED +652CEA14D0CD2FAF8CD0CD6A7888159FEFC0A3D8978F49D85DC8BFBF33FEE7B3 +C0B040618510F483EF114F46A509E86D08D9470B9A6293083E6FBD511C388D8E +5A16B5777FC9FF933366757609163E9567B121906BAAB48B1D3CEF9D0B1028C2 +18E9B6536DDA27ACD9816D2D1D5571038F936FE496081B801485F9CCAFC7EE0A +34D2BF741863A5F639D9D4E123EE90AEB355314E4E38F3F4C243CAD3112A0504 +48BBD089B189203DF7ED4933819A0C1D57ED8AE20B2B15F19F8A0CFD927CAC50 +116B04C25A4E5B20C4C5864A8DCF8CC9BDF5CEA59D1EC52EF62CB642A8FCF1C9 +3E036AA4DD6F4ADBA4F8CD013C622F831397B8640936910C6D1F82ACC6451C68 +760E14BF5B7845762DFE0037BABBE5046C5F3CE3874702EE51D1A463F3B86C69 +7C758A4B1960E1A796F07859A9B1860AE5BC7D5703E63A37B9334D67613241C2 +5B606439A6AB29FA7386317DB876D26FAC05188B4C59672F2CD9A750A0E70CD5 +AD69A8609AB0C78F625E7749C770391D5426D9C3CD1CD7D37445D9718C07A37B +5BECECE3E6F3147731D5C12C4946F88A7C82500F8C495FFA7E2FFF6A9C2F0BFA +8EF861E6C369C8DF969B5FB0F02CAC74E8E080B16BEF1CF0D1A81E90FA1612F1 +FCF086961FDD981A8698FBDCE44A80E4290B7B553D9F46BDF6E346627437903D +499C80A29BE6E7A2C03D943D23C41F1B85C92FE922EE3A3E0601565564C55116 +17F01B2DC9FACA12AC59950EA410D5533B0C31D89FA68D07E9FF1139554C7920 +FF84CB51E13B7FA3EE6A32DDD9FCC192B576A871CBC9E04C5C66ABED560AFF24 +6D6271979BC7D04F7287E32F52B1D2DF60B7D7A53A7D776FC36D70E9C6F54E97 +44F15C5ABF2547DB40EC913EF0B9597A721563C3664E74E7283E9030CAE36B7A +B14E781BC772691347ED48EBAFDF23EDC452EE8A118A840A185B7C1DFB7F3AF1 +A2D64EFBA1C9F662A35F3B46CC8E2D7E7A7F63F9BFEBB6E4A6DB8FF0BDC83E9A +A70438435C3B8A780F7F92578501656FF963ED66A73921E014A46385450D26F5 +B73EDA0630201BEE50325B0F76B55E77BC55F4401251D083225EA5777F42A7C7 +748FAE7C22E6A17E04BA9F6D451B35A63DA6F3D80B0365E159B3E993E0DAA242 +2212784C9651F9A0766F473DF743748FAF491CB69728C2473ECC5524E0F2997C +2650BC1F945EDA4CE833980E706C4D413F7929804A0B1D182E26052876D6B836 +01284296115233D90D2D0FE83317D4AA206A67207BD899DAC1D726C937A34193 +F0B6EEDECB391C6434144275295014BA4283D4346BCC495AE3EC6EE9C4FA7711 +BB6004D39D7BE17FAF0241F2798C36C451BCC4227899837FC244BEC3432ADE1D +9E4F47F45E9B1D2C832FEF6896C92A207AAED7AA924520D096F983D66DCAF476 +83A2F6F1844E7EC5195EDD3E5FBD0FBAABACE5D13BF754BB2B0CC8FC633D83BA +3BB65BD9837B109AC1B5B255298E6B65AE4CEC0FFE24DDC3D1883FB0D6F8FE65 +94D0A898278E0313303CF7DE2E37BE0152A1D4CDBA04ED61D54555B1B107D9CC +C08C89BD2A19050191867EFAB8FD582226B03D7ACFA97C6D404BF99F39EAB7AA +9AA9397B57CD7CAC1B338C21579A593D7DE1241E6F77366CAB10C3FAA772C663 +BD1051F9D791A84C35196E74D28D342553D344199CBEF83D3A6ABF05A4779B16 +EAC70F7CEE167132D04BE5F56F8F20927DC3C7A20239AC6AAC2B57BBC83174D6 +25F59228ED58B5D492B16ACF3EECA04054F59247A8E318B6F5A09F0A8B3820B7 +2CE711056E3A3ED9300B6F2DFE2C665D7C3351D40A779FEDA09B406E804BFFDB +9831478F237DAF6352CADC53D6AE85A14E5FC7C0C1BA4009FF962FAA52499506 +C6F3C18BD4C13C1272D844EE151CB5A0DB0188AB7FA2DD47A6A2CE8554A7CB82 +C0CC30593F062451363778FD5A8D39C60835825D63CF3BEF323C8CBEF3055F61 +294FE558C7542977A3C520DE15A984C6D82041E06C356FD7BE75D601CB95816F +F05AA3F53144B7D768F6732339FB8E6A068F8E021C1BDDB26572385FD1B3794A +0E1C780576819CA271C78010D8416F6B19912227CE781CDF6AFEC335138203D0 +ADEA0617451CE0BEB024CDE135922C72FE0932F10589F0FF9F1DA721D32B1583 +8D032EB9049E4AC34B3AF16C4DC1A85CDD8B047035ED7D50CF8D9D02621BF6C8 +2CCAA23DE753C7B0B8818B68D625F44A54689C0B1CA36FA7C68A567FDAB813A1 +8B34DFF1300D5E42067F51ADDF7DC9BEC7D4376D304A417741E17AE427639676 +407472CBFAABB5AB329AA7CCF130B3EC6DD588A1F44409FD239238B1A8884382 +F04198DD7C5DC5E2288FE0B206C9D9516D468AA6E2B1183E2E906F9DE47C9209 +578321590CF839C9FFD5FBC3393FFC75322B4E703EFE69534745D579B74AAE3A +2336823D2DD5F477F39AA9386736476F5C0B1CB19457D44AD6417BA503475D23 +51A99BDC97751E7172363DB670AA50D21920E98BC1DE7349EF8B8C1E72CACB47 +557B3E2BC30454F75CCC41B84A67648E894AA0A43C5A2BFB5BEE8D0BB07910B3 +47EDA7B547EF357C2553933E0BDC0F05D596E4C55B33AD63E924164DEC1934E4 +58F937DADD65AC866E4EA2BF02D36C54AE3E3727A8FF9F3658337D2BFAED5908 +5BE3C1F4503843FFA47C83B3D9CBF1DF2AED7A6B97A7E68CB6B9E5420E70C5C4 +36843B29D902584DF95CCD8C34647E87E2335371DCD89E495A92033BA482A62A +0D2D3A7BB06506E42A4926CA0AFF80EC8DA63D7B73E8A04B25312F03251B512D +76BBFD76C1F5207FD6A8E69ED9BF063C7DDD0FD4C6974BBC531429EBB55BB715 +0D08FCB2F80275425FE42E87AEDCE78D2BDC07CED8BC49D260D1671BA0ABDDB8 +98E0F7BA7EDA086F4E3585157A71CCEEA35750B9DC3195E3396F1161EE1E1D25 +E6FE6E0B022A9625B5866B8EF59DFE5391AA7F033886402C654F4834F4E43138 +EBAAA758DFC8C27356F012F4D0F398EB8D013678059D8419C2D947F3FB2BDA1F +70A5FCB549BFFAC288ACA7051BDAEA41A4AE0341035B4365A63C553DB80CE429 +02670706A74AD397B49AF535067EB07CC3CB86704ED45301DDFD5238E7DF5ADA +8DF465E45F7514D7A0BAA202305CEC73032FC09294480796251045AFBCD6B081 +8EE4481D29E817C7DC32539B364076672596DC24CA8AC45D60A8536865FB475A +3DB48E98C675A8BFA39792AFD17B5251D56F0D5C27E229DFA75FA3560E7ECFBB +8164E4FF15421846BA40EE13146A316D530287CC8652B58804B95C53F6FA9DF6 +F84DE1E222C5D69E45E12C06C97E672D456E21B95584F8371FE34ECB0E6174BB +468EA60BB0C06B3DF48D996D9083F70181799CECC224FE60736CFCC6F246E5E2 +EF465A6B1B411ACB7474A59BECA5935DFD15F5C18160D4AD4DE9767D6213C35E +08AB18F834CAB32013AEB8C634DD6382D4C7E49F10BC5113214A18A5EB31A0D6 +923630A849327C1CAFEA3B8F5EBA83668E03EBE084ABC1A4C1DEFB333ACE0696 +EB20FAB6FE6E61D38457C8E10D8FB7595C627E8FBE2D5563C4D50A6E1F3DCFF1 +F5A2DF1A62301665C0E44C2257B4516B515FC995A52D4DBD54B3D4EFBFC63A8D +F07C27065CFE19527AE04A9CA14935B7399E30EF88D2B63891A58044D7CE07F2 +916EB8E9C65388A73956B3D82B4B41AC378B4B75AC304A32339CA7701636B6A3 +84254743EA5F8525897D4FB054698031D1FFF4C971A10440212DE812752425D1 +E71B02AAD20E994357EC8436BF1B74F016DD41D6B1F6C1578E4B261ADE5A7B31 +2ECA2C16294C9309F200AE0AB5BDAF2BBCB3E97B0FC5556BD8208E50CDEB88BD +F137D2F72258B6E41092F1256CA4AD867338DE757E29298F404FF94F247A805B +40524952A6D8581F065B11B6324F9F2821A3AAC2E7A583771EEE640F2FD0975D +299EACAB2A99942480DCCC95BC7CEA846EB1B2423FCE304596A2581583450455 +CD1D56843DF8FFBA723FBE4A4AD8E539828BF48BFB4D0C4EAA68EADB81A2C58B +EBF89CF83017DE3382BEF407B493FA5EEF810C740C3C8B646292AECE9A5180CE +07ADE6E6B2935B90BC521D3ECBE25B43F14DABCF49F378C26CDD2B27C690EAE1 +E888EDC3C963F55F1AD13C8FBED4BE0BEFEF31C0636913B47205DB1D0DDDBEEF +4441A3DE9825160AD57948567EDE8660567998D41A0AE2D9A9B5BD4207F2A0F3 +EE82DDE22D16C32A583613E0EC2BA331EA91042B8FA2865A8A7DE1BDAD0B6D33 +3DB1409222AAD20577ABAA7A2DD6B302803FC7B4244ACFF725E37CB5926563D2 +82AEF220424600581E25001DE71E1385C9D690747BCE051539AB8B03B2EA77BC +39B27AA8F63CA37E3886C50E125D3886C5132869596039589AD6A8421C8B7AF8 +B0EE2872AF974A4B779F09DC1DF2BBF673A7FB32BD1BF3D8D99A94E1BCDFEF81 +37B2D7BBB80ABEC1EAD544448E6A49DF730A1B7F63267C9DDFE81131867F0C0A +8D2B37E8B0AF2A6265C57CF9BCF98A01998081E7BBB94DD53FCAE52F3F5010C7 +AFB011FC6FA98FFDF173FA0F935D33EC3DE55890BFAD217870974C00CBBB6C67 +1CC558F6FB2C30B28B9987721722A27EBFA924A382569E3D7C47A3220F21EAB9 +1011D71B104BAD1A47CDD9CD64487A8E9721CABFDB83FDEC748EBF0D08E77CFF +1A54D0B3ABF4024DAA403436C9F6CABF3B6CA7089776ACB183AC01C8E7F287FF +9DA7959C4B7D73F00976AC5C3E4B810DBCCE732E4C9ED9EF8006AFC7314F0055 +FA3FAEC780434F273ADD7D07C2006E4B755B24A26341AA5AC2DCE258F8B03409 +188109067E22F078E093A76FA372C87CAD401794D94317B2665DCC7E21FDF901 +E1511307385B6EE148FE1666BB616351F48A8082ABF94040CDB058DD584364F8 +CBE3E94DBB8A2450D18D435FF5C8CF2DBA1EB562E957A83F184C9F3CC43C1860 +E6FBEE91C4D240C61D7A7D554A17B90D0A9CE1E7AAF7840846B3F1A1BB9926A7 +CF8E9DA56DB81D35CB3687E9818CE74C0336DF7B2CEFD8BC432268AC93EB34E2 +3D361A8387BC92B459F645BC069A49628D7382E22EB249BC7CAAE98AC55FBD24 +F570D8D654B54710B809234AA2E662D2ACC44E1FE1AA63A497FDD94A46B9D1BC +E37B29430A5E0C2E592F13BE227CD9A6556E9A0E1C3EAD9DCD742D1F9CF62014 +5EA4510003418D1881C4EF1589A8B9EFB52DDBB67BCFC4E55B134A3C2E31AC1C +4658B592EF69C2E23E335499A35B91A58DF9A947712DD55BDCDB7E0AADD53E29 +2777329340EC29A51E9020B8EBABB7B066113ED3A4791D3FBCABADC40CC45FB6 +8744DC0116379D2649B216366C6FC83999E1FC558EEE5E17E13A12B252E5F7A9 +E760CD51C96C1B4815BFE37D4D39621BCD10DA9428CF186E61E9921585C1944F +DDC084DC9216FAB69CF54E456D47F65B3FB02F34B0CC998E12E41110A4791465 +19780824EE2AC1B799655553375ECB24149100E539C23829944BCC82211A85E8 +6A2D3559BBC0EDFEC2DA02AE3BB86A9E30AD5BF95E5CD956297C1F6AE85D0768 +1F9D96DD8EAAAD78CFBB543E913951A78D3262CF08BE0DDE7D870FDA94C51A1B +1F8544122EDB7653E66D772E3EBCBCE4419F17500D8469EF4FBF93144B20DCD7 +39B815E0B09D0BC3283E8B7A907F203EA3B22924419C1C3A8DEEAD335FD538F6 +0D5ED1581BB64FAD4979D67D51F18B047E096747FC50C6A2B48377E458038374 +7FF93A3A46E09ADA5A844EAAA3EEFA1625510D3AB7A74764FFB229725FDA314A +72CCE353A9693869F26CB904505B089DE6D41825336318DA00DAFD986779D4DE +E8DC47E496A9936DD3CF46719D5E832E3B7C85B44D16D4BB588CADCCB90CBBF3 +3589F08AF2AF77D7ECC3AB68D6409221B2ED853012C693C522407B4E97DD4F89 +9EAA4CDA6C85F8B65F5E165399F6CA79550965F3AAF7D875CA947FD6BC42A4DA +1AF797BDBAEE65A1C3BAF00E8E48FE567E757715166DD2757F7DE6C45FE4B3FC +A0C76D12FCB66B4CE9CCB47060AA5CB3FD427BCA5B549A4AF34CA654D9421C26 +9EA4106806950525CA856624E9EFF9DC5B598AE4AFE928447D0704D4EE99DF07 +69AC51F4D3163B7424059ABA4381DBBBD5C8C7DEEF723F163AE69C48962C34D5 +7514F73FAF946C121EA5848C29E127DD0FDACDCB6B1AF4414EA369093282383D +0213B391666CF596FAB2AA27270FC273E32B90D3209091D8360A0D50F8F28D23 +F7B8B097E2FCF2DCE92A7D5AB68EE680B691C2DC7BB846FD5132EB5789A30B8E +9B849C18E8560E9F49764CB89FE01E2E9968C769BAF6B44E08E45E563EB14BC0 +70601E5133AAC33723E934677518C54A235EE9E4A832B363DE44FD82D37BEEF1 +E9C842EF2570C97C3C5D6C0DE94DED4DC5B6681E4A04BAA725F0D9061B16C431 +8ED6859AA5E5BF254BD3C29F100293FEF2D0D6EDAF428490E13B06527B5FCC90 +54768BCE8007EAA2EB1AE14F3F577CC243BA416AB6E43E92EC4FC99775BC1D92 +CECEA05EB8ADDA826E364921ABE388295AAEC6678C08D26415B2725025C70089 +9F12735F37C45F00218EA2E398A8CB173086C43B2A7EE4C95852110F8DCD12DD +64AEA60156E560E8D8D84285B523515EC15888E9912C6C1AB91290E1D57D7595 +1DF73319FCA62BE7C04F4E9968F7E453C384899736D48EE6FF64DF1260057C37 +3082E207F796CE6AB2271E3F31AD2FF83B99FC3DF2826C07F4E4CD05077DCD69 +A3B9EC76BC02C12A468AC4C0D7D83FD4BB4BC8ACF9C312CE3144E76D2F3C6246 +A210DCC9834608CD0A52CC551FBC059B88BC2CEE954AC6B5811281737EC83C8D +72B39D016B0ECCED40BDC58706910851447C80E3FFFA9D57898204F9815DB6DB +1EB38FC10637CC50768703AF9FAE89A94B424A3C647A7870B26970954CEAAD68 +E069ECBADBFC0519C33AEECE55AA93C75B6CF907DF65B98C7A9B043E4BB5840A +88DBB212EA2E86888D36B76D270926739B48D6435C1547D703FEA7B989CA60A4 +87CDF9DF654919F730787D58680BAD0E5B506FDC2BF0C89569CFAF6BE11F80B2 +07D69B417562178E087AE3AE9380CAF8CEEE40FD3989BB50E8521963B0617401 +2996B2C32A3F03B7F312A211B605932233E7C230FA084BB912BFB20E85D721C9 +532D22AB85802085C715206297C09713C3142039602BA9D607F7A52FEA25B0D9 +FDB7E9FB15499E3DE1E47CCF2500BA8B8798497469DF248B8244493738C81815 +1008200E9457B4CCA5740897B17F8832515EBAA84A237E17542B359F173E7868 +64E99FD8159C9051E876C235E434BD5920F55084DD7F31C6FD2B6CB58E5FF307 +0AF6020EA9012AEA47F9BCF018C30885988ADD1A630C2F1CBBCFD5A2C95028AA +6FC89D43E089957267B6F94C7F4E05FCFBAC85E879D27F7BA921FEDB4B551F9F +3B5D3197C0FCFE264D45F6C1181BA26796006B94BEFDC342C7CCDDBFAF332F8A +D96D8D6C52ACBB10C871DAA7162501071CBC04CE01D8FDBAB48393E59ACCF1C3 +9EE4972D7DABC3E639B1C2722F346553DA9E9F163DCE4CC7CB2D1B966F561A07 +8862C3230BDB104C55DE3436ACA77800229637A6DFE1F041DB4B45B2D1A5481A +6641D77981CDA367CD23E64AD5355B484930C7B09B47ED6C79851844099A68C7 +1F4E6ABBDDD7490259E856C267804A4EAF61246AB4C1233F025EE81793312479 +CECC3813C2D887855573122E59FAD0B85DBD9AF66203F4618F22D6D56E1F7323 +2BE1ABF7702D8BACA8AAB9FDEAB48E3ED56BC0D3E4696505E16473CAD93D0559 +54E8991E7F146F4D4C9E3DFD35012F5830B57FA04BA42BEC724E5708FFB6D521 +B209D2F6CDA86560921C705D6A99F822DD3B182B0BAC8AB381653298B82C86E5 +098FBC2E1E30DDA83919362D1BCF4D91702B16E849E032B44EC2482369B4C342 +211E7382390388FDDAC362431B45DCB55FEAA7C48C30996C47B0E21BB32FAA7B +14D6F0DB95C450B59975CE25D65E727148BC7400E00C249A415AA52DA829F547 +8D7AF32D029BFB27EA195EA3E8A038493FE5BDDFD89597C420CA1ADDD2D5AE9D +D3BF13CE3B530D78BB7413F47056F663395BEAFAF4002BAA6E9FFD3F1F0C7C72 +03592F5627EA49F1C0E8C95813E1C30BC256C99A2F34A027D4552B650B0376EB +9BC2482C80F19BD6F9315C71A185EB246091F6D7D019637100B555077B1549FF +27446A2CA0C8C815B6CCEE95CF19B78908DEDB25C1F9A5E6C36FFE65E0A8F694 +8A3E847529C50351F6CF88F1F3B901A78378BAE535678A6C60D7DF4A00505B14 +FAFB1A1AE87CE09E1E90769C046C11309AA7BD8476AFAAC0EA48E6D32842E0FA +10CEE024B1B178D8B9A15E29F825E42564A8F8F1E1F1EC760FC03F1D5773DB78 +E177A95C3D2E3FFEBA469404A866E662D217FEF7A99D6BEDF9F144A2A8B97542 +9423BDE10EED471B99F70661A7AC7A260C6C32EB4D00F21F7A3A5257EC597EE4 +885981989562FB08DBFCE4ADCBE6D9A1C92F6E9FF65A23BDF943835BBB7C29C4 +0D7C987B626819583D4D52DA32BF7DF15C21BE5BB64B575C7F4B149AC539ACBD +A49DF3F0480DCD61E3C14BBC956DE5D968E74DF4141BEB0106E6C5F7828E4F77 +4EC7F0775CF320C26323EBD09354B3E2A52973E75E54CB42F6B0F5C10AE8A8E6 +EB93124C15AD140C971D2E2D9C2B5275F93BA3B01556B72B7630CBE7AAF3D997 +E82D11875B82071FE770B13C232388C07F2E6F7E9C6930F4D7379BF74FC3436C +D301123050BECE20F2BF95FAD2E57FC50203EE6EC6D9420BF8C218D3D2F8B236 +6572EB16DE1CB2AF00CF19C56BFD8D333FE1DA4494933BAD214701819B0C2ACE +FD02F0682306A6B0039002B0B7095D992A30CB675CDA3D4B196C447F102DB4B2 +FCE3AAF81D94B2FA40B31EAC2BEC613654B1D885EA590F675E6106BFD0575B1B +4AA50D0583A2BA2F79AFC2EF5640A9EDF12F6BFE45ADBBBA43B773B36DE8DD60 +C4BB8FB6F09A334FD947877A785AFCC4F9D366326F5B609ABF1E0CB8942560D7 +68D0FA410EB83A9BE859840A9E024FDF850DCBF5FA8D649B40505AE64B1BEEA3 +6776EC44EA3298203B09990EAAA5FA937CB648A0377173CAAED6432A38B48DC7 +906B730B6BFEB2B9B166526D1E8D4110C6A2A4CE1ADD2D0C9C179621F7867669 +31D3A28EA97D1281E80B4B6A4F223D1FF77F8960CDB83E5768F3A8FE52120CA6 +15164AA799E18FCBFD91697783BA537FA897D58726F5F3BAC1F0B20B57583374 +35837E9EE8DD0DE39B6CFB69EE47ADEE4624EDF65E43781EDD056024FE108280 +29E5A39815F494C65020B91F68D1187F815ED8A312150B414D9DA84F542E0F15 +32351B82F2322C9200F987E477807E9E4051D4057240E99D42E6852164704F26 +81A939AF1E3BD237C4FA341C702F7AB978F63CBA8DF745DC2C57AD5511D89AE5 +B4A80BFC57B1A5CA1A110D3BD5859EF41959EB364DF07CE50F709B30EA099EB9 +01C010ED4F4DA9AB062BB8E10F515559D2FEEE69C579859E43962AF7640A705B +2C3086E862AB4297EF9625C58AF049BDC0840F9562D8D8BC686CDECA7D4259C7 +4C86D8C92909BAB7FA09AA2E83B4089B246F8B4AB7A086C5B9943773C496C62E +9E6344BBD213B44C821CDDA42B1BE933F74BC8FDFD0A85070F50D4881C7E875E +DD689E97ABBF6AEEA6E8C8BA377BF3E4A8EEBBB1D47FBDAEC3B88462A62CF500 +727EF93FD166092861FB67303490DCC4504B759BE754808BEDD580E6DC38223B +E02EE2D9BB8F32E2D3386376F8E49A853F7C81650DBD33E23437EC98F4A6F7EC +12705E52817A7B647F4CDE1B173EC370C78589E329D93C35895CA8B3EA2B945D +E30630DBCB2B8ACC49846C7835869202FB5231ED9167F307CBA31D2DC0B423D8 +65DE2E24CABD53913C01C388F64BB66976FE3B0B421AAE861E0C0D495D5E0B26 +1D207792F1072BABB49156544C024118BF0D239BCB1AEF8AB7F38EEB34C88CEC +C7401AA6177E9B7849AAA081334E04A2205077A90C0377A363F22091678371F2 +36A088CF84558630C3F370FE00FE97209AF40D77C6F70B1B4028F1680FF6268D +EC09B05DB3F8DEE17678CFC46AE78E02DD01454A9A8ABBAE157086DDC92AD22B +DBE7861A2909232DE46FFDB6FC84989B2B137C564FE84961BCD663B592FF2A85 +A65D7B595113AA7DA8463F852A28233A754591A5F2D7F70649A12EB8CFA35361 +1410C7E2F08EB5353A91CBF2109D6E279758B8E458DC7737369AA35B330A9229 +B73DFB9E1745410440E440DEC966C0B21349149E08D57740773B1F17161217AE +B0605236A44353081EA2248CBE9E8F4A0CE1499354F6475C10346F337227B8C0 +2474942B49CF891C5D0953B1015203B1BFE0A7528C900968D16A876AFD9BF28F +43EAD0516A38FE48F7091219A717617CEF422F7E2054F3E40D7D6239F6744E44 +86F62AD7ABB61DB0E75B245B44E7A6FF9D72DAB469A07D8046DAA059CA891766 +1420C7A397CEFC7CBFC41A09C54FEC6E77312347C14CB8D87B313A0E7F2CABEF +CEAC4B9E15C279A18BABC098027A02EEA025F481769AAC7A89F9F419A9EE5908 +351B0D25A2F9FB805227F0ABC3D4A87C63C59E80B1BF915FBB1E1E164568CCEB +1EB5B1A19180F370EBF2DD11827844584475357DE9E31A138874E567B8E1DA93 +FC5D6084A3737CA8EE391773F3F91C243AF33013891B4E7DCBA7BBE1E06C5031 +C3C0FD60806B7052C5F7B069BFCF4F879914D9C2827EB53C505D5C738E1564D1 +1FE8A3EFE5B3EDE0B766E816FF02473739FC5BED647CEB758C6D7457ACD5E352 +1C3F13E6F1DBA43FACA8FB3D257B24902EBC64B10C7701AD3850BD845140C3D1 +A6CB630AFD8E81ED647D65D7F51803369D37DA44F36D8AC77976AF53B9C4E56C +84D5969C27EE9DA518FBBD8430D5769AD02F28B6036D5D8AB73C784734C22D5C +7200D0A706326DB04C52907DC99648D46F2741B3A9BADAF9040F2CA68642156D +E597FD6BDBB5658C87501440DA17A44557EDDEF1C576F8FE343A6E2DE27CDB35 +8E62AA7C8367E3E44DA6E435DA063BAC3DE82D73AA2A147CC5A844187D29B83C +D12D91B9018718B53C9CB11CABDC9F7A8848C19E73E1DA7067632DFED7994B8D +3A5E1260D0315558BA94389D996A960836FD9C7570F02C453129DA181B2BB9B6 +56BDBA69A47729BB3EE50403667025273C0FA725D6742B32DF5E58BAF48BA6BD +DB77F2571F3643E792CC757B8F1AABD13B60965B5F1AEFC5108B68126149F4F5 +F54E72341790C7D75372F0550FF3C9FA8844DE0C6E71C261F94C2A763C6853CB +6179437BFB20949F530804A81C8C71B2E04531E2F3E0C158040763FF38F69682 +F8FE6FC7F914C9BD77FD51B7F533FADAC22C819B6F7E3094BA3B4F96A74E43BF +240DB5BC95B8577597AB79D6ECCAB0D65EE279F5CB8527B05BB521EF2F7F23C8 +42349BEDFD0E303A7969A9383A6290B9ACFF7C7D402EA8A7C9517F01C28D31A7 +5B705C785F6418B802A18AB458C03291A0751FB55AB25515926778649BF7DC53 +8E94F949469AB3EEC16FCA42F98220A5EAEE73D6E82C71779E8892B2BE652796 +E12C2B6E3D535037013D60F8211EBA7119383CEE9B06981BFB98666749064BEF +338B4AD1C6300DA217F38EBF093C867A7B019F1C8F4C64226FAEFC38027AC7F3 +A528689C44EC4CC0D0612AEF76650826D2B16F53675A57273A78A911647D112A +193F579ADA161BB62859141F9893013F55D636A595E532BCA11F26E5846724EE +E6F3026983BA6E24C1E462CB599D2C6F3E7C0803244D9A773D1DE70325786EF5 +C42D2E9F3DDA5F7108E3C28357AD1F088404AFF56EF5BC9ABC92A32BD46FAD66 +4BF53BD32E3A6781F4DA33E25E0075638D941389DCF2D5F3FA3C9AD7DC26BC19 +28D04510B6DC27C7C6EF0EF6189968C8759920E15F65108B389BAA1D2047B977 +E1818381DF9FC5FC217DBBDCA80BAB7B98E7A00A97AA3BD47EF50ED526FC8583 +1FF5B2B4B470642E3F575F4C0B1FC5EBBDA263F89E6D644E2F56DBC6FB50D23A +A04A2ED571997F30657BEDF19D268F69D7A624FB11BBE30E94448708D077A238 +CD4543C8E805BC0DE96A0F4E14E721CA75A34DF4F911034DCAF94C190380D55E +77BBA860C105DCBA06BB201281A02830F8FE7951855ECD7E13A2514B2EC6A93D +A40D690A17709E21DA5305E3DFFB395708581573005A777EAFA0403B2F6ABC0B +EAD09C5C3E2B111D8E3687DDA302B8AC5B11341E916A63832439057BC72B2E67 +7BAA5ECF2A8FB4D60751A1F209BA3F80E2BDDD496106EE382F0B704B94A7EB2D +1659474F5B80774BB710BA2A744794A74061970230B044218212BF7C908A9F5C +8575922D7E0D13FE10CC1E548C182F402346C6E256C3C77E871703214488172A +76E46E6B5BF7B7704AA57E3C8CE8EABC9F8BF0A53538F3A09F27ABC005117354 +39F733BCE06C01F617CA9552C01B0ECC3AD05D9C04E67CB7C194007C4C64A460 +726BA5371B9B33A713C6B3D69A6DDA20E104580E1CCF7B0958E5086B31C28AF0 +D645B982521DDF76581C7DE21C7FA385F5A5AE637169427D13300AA66B53DBCC +4CC79A0320A2C5379B7A9A54AC967163DBFB993753FA7AF4E4F7AB3710BDBF8C +3F10A9BCC0BB17ADB5C5727895910CD7CA7F4923F00B07FD16318E0A53633A3B +0501EA6D8851CB557D80120DF270B85DC721881CD897BEB71CD7EEC64CA12990 +E8E580E138EF6F9EE2F8EBD3DDC3C5F63AAF381ECC7350379646788EDDE61725 +C72975D2DBD54F7E7B5B1DCF78969BBCFDF726C8F7CB93F39CA28715C943C782 +5CD1C1DDB42404E24E079ECB45A8C3625039AAE73D365CDE69473537D4E575A1 +1D017E12D1FB54B41D956915EB6315A82EF3CA876200D5CF0973CE5F56649FEB +F62747208C08C8C61A0AE81FC3A538B16DDB109177C7A686A256CF37D55DBDA7 +8F807AD40060A99A44BEDF27C3B7178199E750C91119A7AF35496F6F1ACBD666 +B5E1C8F49FF59AC5C5648011E2D0F7F85596705D4DF9CA26541624DD059E8E70 +4E74F1743A6C6DFE15BF1FAC3CD9A004F3AD0828489706818A60C1661B9E09D3 +3F18885643D21E8EFFA14F48E22ED8124BFBB4398024C177B02C760A59F7C0CE +E1B619449022B819131DDCD178F826A0C2E9389C2B8B44B229F954FEB4D5FC0E +CA84B53501FC1767BEED2381CF24BD89BAC6BFE1868C78416159F6F933E7C828 +DB743BC92B2EC3DC2DBB0E14F569EF1BCFF9182C04627D1E2BD48EF654850CD8 +7151797484EAFF38C38F8577737F5EE125EF08565E4F6E6603CB9CAFA165A355 +4B06608C939495934D515A13D319F3F8C4C1425363C897D025D28BF1A4BFA09E +0F97561179C2C0F030F0B6A3C8591537506D9FDF232AC0BC848E517E61F2AB95 +88D386584AB5F92CE4C68D1F419A32576D47EA6CEF4B37946B1E3DAB1E67FED4 +A5B70D62A9F69C227C21C8AB490DB86DFB4CA788B6CBFF8F02B920F739B141DE +1A095167465D82714F492EA9D2B4F7BF14719BAB487EF25F8BD1B377FEC95E66 +F3D7020294E06E743A606D61B27DE20252F211737C4026FF7B9B4945DBFC9809 +8E1594CE15A1D7E5270B7448CDEC0E7D728AF99771E64A43B27A041FCE6B963D +42B6E1975F5F8F8C26602DC75D04ACF27CB1DA2B0841529E26CE6A1D0E5E9B31 +0C191C39FDB29C4505CAAC095E91619AD29468DE658EFE5D5198FE5EEFB0A2E1 +4D6A7F1BBBBE87D543592D0E658FAD7B5A002D6464C9A413D8952C533DAE8507 +B88888C8BFC31C3F8838653527A3AF640BB9CF67FBB5844FA83E7D9D51D801F5 +62C12CA2D6070801067033521249A56C5B0B77B19811FAD4951E34A6CE5CA1A8 +443E4C5B72CAD2FFE1650FFF90A91EE8D7DD95D77F681C1858857EC9C449AA1B +C0D7145473917BC9E1D8D6A691C91E1A9DBABCAB74BB080F506E992C1A974E26 +00C556FE22EA28DF85CE94B3898AD28F137ED56D605CE095BAD1AC60BC6B73CF +85EA4ED98FC0ED5971DC5A75F289698FB94A4FEA6479479FB2A9BFED1859F69D +1EDF8BEFD567FA71B725B11D55B06CF0E95F817DD67612B41AD48934A4D5ED7B +D888DD698395041DB1C9290F599BF0ACD24AD9EEE1ABCFEFABFFEEA96A02D292 +C78CBAF56DC3AE9E909A2856E2614E2EB9D4F46289AF8248CACE1CFF69C66F94 +F5B939A523DD14332C225110DA3446A4818FDD67B5D16FDACA990DDE72B9F10B +F3924237D2B6069030B76DECAFFA70FE97F5C5C684A750AC53EE37B1E27C5910 +48BDAC0DE147D16BEA29E4A67AB88588CD8F3B50C4EA3A18D81778949CB17F14 +E4B19BBB9FE53ED4105C05FC9180CFF9F59F956CA0A6D11230499F04724051CA +B98968E61ED0DF26ACB0D0EB7EC9BA825547B42F4A439AF0F1B4D4F9F4518ED9 +4A80B709484E08438B6D103CA4F0C7C8CE75889EC2C501A375FD8D91722D5FF8 +195D24FB5D569630D94FDEFA35A8D881FF0271B3D451A884D106735D4A2361A6 +D71626BBDF60991E20045C1B980FDCA1F436C1EC063C9B454E55062FE19F88B3 +C84211C2D38911CCC65C1B10931EBC9D633FF04826D1875DE425E69D60905013 +3280E96B205088FA4C3AA2665B595DC5BE5AFF1C29FE961869F3A03AC93569CF +A1EF8D26E4FCB55CC541FAD73B55A60A9AFDB07C4F26B7AAD34193D5D3E55B6E +53B7E8C23EF6AF8D363C59A59C1C5DF268B43E3BDE031C960662E3B308BDE103 +5717C31227ED287DE82B9C1923F0FB2885C2AA2839273128EA545CB9704CC989 +C4B324BB68E070E9F0810137F4B1FDAD4B7E959872BDB8929AE4855EB15D88BF +F1A10FDD74B735B9EE49465875B67070F6D6CA219A64FA86934A4CB5EDF7073B +B814B8C9892EF9A90129E3C0D84BC60C0DAED6A7CA8EF9164BAA7B3B11736AF8 +C58302F9578CAF243178E37C0CC8C3C9544AFA68952BF4B02890A0D000645694 +7AEBF900234A5374E199A5D90F10E57A1C123DEA596AC51BFD29DF7433141F90 +E0656BECAFED14399A3CB3A7CC99D5B2A8F88FAF17C9EEE84C08D0EADBC15B41 +7B21B8BF97FE52CEB94EBA37CEEB39EF757F7FC8A76B150796A27C646D5C85DD +69AFE8AAF7465D0BE73B348CCD8E6493AACB6CEA5C15A9636C2DF301E5C7F72C +B8C6BA861E90D2015817619C9A013CA9E7D22D26C6E8393187F8179E1693EDEA +F2531A7555FF7BA758D3792108786E9745DC6B235D02AEC8A65A45CD310169BB +F8AE3BA1C8A88A4C2A8C2C730F428FDDE333C75558417E41F95D6DC547E0AE93 +134F547C8F7BCA1D2FF766A9E2A2C799C529348871F5A56D5B8ADEA3B2A11DF0 +545A0A5930AC1EB9B33D296DB9F1E8B815B741D855622350EC35DA65E002610F +4EBA010D0E018E168377533CC24CF7F4B79C90FD7C4AFAD40756621200E45012 +6C65F1359854128910451346DB93A34374EBE00140D3BB639CC14901E7C448EA +B7C6F6D76DD96CDB8910BC20869B7E235BEA990DC962554C1D92EC9625813BAC +252E58DF9D422C9C3645A999A3F25B5ECBE2B43926E2E9951E47DDC1E302FAC5 +921AF039D110CAB81962ED99254457E99A142A2F3230492827806417B1480691 +BE5511A7C1FAEC3B11745B30A10B8DDBFCBAC3B3B8122115F3E869C36AF8584C +ACCD78A3B88E09C7AC348187D3D9B650827FACB330B2492DA961EAF8CBBE87C6 +8ADD19B167EBE1A73EEFD7CC9239DBE4E8438A4A16A28F97A1C6CEB14F543C23 +238478AC9630CDC4CD3A01C8DF7E06C8B8F033A32D2B4BF1C23CAA5366367DDC +D3CA457D69489D0C84E56D50796B28F8BD089108F4D8C7FF554CC68309055B12 +9F910D46D48AFF711073F5453D8DE7A781FD9DF4CF4B28799093DD8FC2055BCE +E8129ED81391F18F26EED523B9BCC59E941DDED79B23E74FC37BFAE9724A9E24 +5304601310BE6FF3B480C7BA9E0B72E4C6FC8BE2A0A9407109E1770ABC56FBC0 +A8A44AC1496D3F41A74B8AB00435E679E7B107C133F3669697E8341B70DEDED3 +48D6BCDD9BF9D336F25E5739A9CB1420D6F1813D1282C0E0EFBFD8DDE2C66089 +8B82A466300D6356A3257222AD8B28F8185085218997DFE0FE1A1CE1AF554B98 +A1699E9068CB49374FDEFFA433B638B71284FAA1211B65898C3C056802FD3AD2 +3AA4F680922D437146E4F7DEC9CB8ABF1A8EBFCCFB7DC9B3BCE38C8C4F2A578F +51B3AA15BD2BA58496CF4BF26DB0DE0CE1214674239166AAA4A25606920B81D2 +A0AD21E24B3AC6A74368F9E7F116BBA02DD2AECEC99F41BC3D955D43C2E22F2C +7C81B1EB554351D47461805FEEF5CB89426AD58246617F6E5135F7F735822D2A +8A41C2A685086F145175154762EB694EF1A877670A51C4A86139E64063A80933 +61B9C6111F450BE26BB644316FE30986368945EFA43F6BD4BE3840F578C6B7E5 +64E8BB87AF2A7E2F4A8B1AA257C2DEB9C8BDA8A5274E5076756B3E942A44F1BA +D26498BF571F450D904733A0F796238403E5A781E640330D70AD296F6D74B679 +B0B1168B656E9B28E4BC7026FD15197875D89A72696FD7B20A3EE4ECA24B78B6 +6391F8DE690ED48966603F2186424B17A28CD3B64BE1E3768D8AE01954A4DC91 +CDD6F3A30D3C4EB5F9C2CE00A5A64086FFE87EBD9B4ED432FE59DDBA942F72B0 +F6B3C8CA4CCFA5DD2BB195FBE297F6E65CF6C06E9D4475EA2C41D61D39F0B25B +889E1EF856FF0817142ABA12DE2C80A2FBE0C0D98A60952D93E3AB87C644D4AA +B7CD2011876AD53DE27BB957F69F4C4E48B292D916CEE8BDCF3AA2FF9C72E580 +EB5482E26EB7719FC7BEBAEA7102D55048289FBEF5C5829D96A437F4F7CA57CF +9FDE380071F7859DC68EFD00288063EBAC1112227AF649694E3D2D63B6AFDD3C +7702EEE2F4ED8D760D2023EE1193D3266AD408AB8A3FFBBF6FB9FB1E8E849F75 +D79AA064A146C42EBEC6B1F5B77A02D9C92DFE729DB8F03C6E67E9587346ADCE +213F08F02AE6C6D2340E8F041B212A760F0EB6D4C4F7AD11C0C7D003C384E9EC +8009BBF3B5351BAC77CBB2DEC5547D9C9F2ECFEBCAB4D48B5985E891E51C7BFA +0A02C7B166565EE79D8D5BDCA41C79C69399102BAB4561B1171CA99A57550363 +3231BB3E3F48BEAE734E65310AFB89A170D7D2C23690D07050E6246647B2A3C5 +BF170818138683EA1B4DEA8C2F018D0FD5778BEA72C72E6CDA1458BC8D1E553D +E61050AA240D0677D9DA9D9C22810CBC6C0E441C02B27BEF9BB48027E07FC495 +9E83F67BE50872095AD837B6BF75C0B5669091CD4923EE8929877CD0BBC624F9 +17B90C8D5FCE286F68DE2FC1508373EE9F9FA6F5A3978C75F52DDC397E368A0B +57F5B40322053BBAFE6C7F8F293E0E3BACFE054A8AA7DCC3FF253F58C75B9D12 +4669407237089506FE8CC6A24A1025C8B4673B48FF3174C042C4D66BE2AC584F +6A346027B020024CB9816965E99F62488D47EF144740C30CDDD2562F6BAC56EE +04AE0AA4421F68C2525130D92002CE82F361624166C24F7C2B11C69310B93719 +0947BA4E74BA25398727049E1E8C94669B709718B2BA25D889BA48D66B0A9EF9 +173C6CF93116BC0DCE2DD62D2A936341BA360D901BF23D9A6579977464D12A3E +14A083FB37A4049BDC5F4D9E8D49D05FC4213B01CFB0231D2B03F552F366846B +7AB75D68EB74D57CA505C571AE2086BBB8072B00881A57AEBE38304FD73F20D1 +B3A3F4DBA7CD736A475A04B7785C64F8802DD8483C75E50F385FE63D063E7ADB +0FC45DC313B0585C605D1529D226FE08FF7ACA26E0CB2C1B23444E976107731F +1795EE18D69C11B9969542AA52BF0D3C4D00862494DF946B74718DB8FC586DAF +64BAE620E3C1512720B0ACB343DA448A0419975CD986B40D91192158129232C5 +85E18BBA914D219AE5979CF98BC9A4006687095BB53215DEE575D4FF7FDFE94A +25A05F1CCE048E2F7A801C7AFACD586C218C1A04B43F167EEA5D6A4EC9DB4FB8 +C2E56225709D9AF95C88DFFF3B7EB9C337069278D51F0824C96DF582C630BEE2 +C4DFA3E9C9CE76D1B52A23CBAAC840EEC8B3786D45834D55942B46B6B4C612AF +BFB077F21E0F7F0EC6436BDF1704EAC52789C75F7900EB441EF83E37C780A699 +2E3B2F5222D7FC4440FFBD93A01205FC7E64CBE9849BD01FD4448B343FEA4101 +9FFF4E1527F81F4DF3FEE2F42953C4BD655A50BDC6EFC02E25A5D8695544E166 +7ECC195622F1911EE8D637DCEFD8686B01A130671BA5597768246CEEDB1DC252 +214E01AB3AF7AB7E3D766C1FF37CFEFC2FBD4448DE566042D46B3F2A0CD85D27 +52F4CBBF632139E86B8A2669321B4488AEE0E3EE016440B026BA4F3CDB798BF5 +1E026DE9653F2851D1B095C7272112CC642066872578C2063921B1F1DC1DC37E +6FCA614E9EDC7EFBCADDF112E3127B753D0DBA1F920964D69C779343ABB1B56C +EEF95475F7CCE12C08A5AC0502C65284DD6F34C8FC31E6D696D9B1075B6CA4E6 +8857AE5D9267CF640DBEB733B3FA1DF1EE67D578445DA58492A8BC190AE91CAE +DFE1F1C833312BD85578E1D63F8E593432BE3D4A9307127750DD9F9509660664 +92F85F9C97860433F1190C2448AAEE97CEFD9E048681D41D17F5CD3B8C6C3AC9 +E7D46179623C806085BB5D23E6ED26B2D900515216EFC224A9F25660536467B8 +B47665F6514284E567397A7AC78784A8CF47B61DDC9A66B74C04FADC5074B8C0 +476EAE541AB9F94E990FFC31CD94CAA9E93966096383C1951B00C4E79B51A728 +7526A4FD3A5F6E9D673555CD7142C94EDE73E8A3295341698D777405898E3B4A +E149CB4E9EF567CC18C35C3BA9354CDE55382A6569A8D0B2B7453E5008347B32 +8B5745431E577B3525D343EEE8C0CE5CBE1CC6D3FD13AE8C5C9F672B10451183 +3BDB33698C0D220902195138EF44A545EA6092A79C9F4AF24D73B735E3733FE6 +67E47D76CE584299B16295BE997949021F949E035F49593BC128DFA89182F89B +2FC9EDE36D2010B1BA62A6D900B00C4524AC6981F0DDEE41043ED7500F574409 +C275BD142BE36AD2F5B08121EB0EFD58E8EDF388CEE211D4FC3C2D04D09E8757 +17CF2869D202B2302BF7F5741F4DF47C1D76962A3DE9E718ACF684751BD968F4 +6B3488D623E734451674276CE47A465AE3F50B50A938C17DAEDBD7E40737FC3D +35A709ED283B930E0381A174F3804E78BDF8B8761BC37179A96FA636127145B8 +639577E80613C9A547AA8C3441C85E8408C0C4C1A5143A3179F9366DECA49F47 +324BCB48FFBF44DC15A98DF0A4F9331BCD908E5D516881A82ADA22B906A85015 +6643813BFBBFBD2790451F64AF61E0252CA23D2C44BB92D546B50DF7C2F5F3B9 +560117B9EC0D5DEC65A4404FD7CAB019E50B6C468DA7B5D2239F298DB98C83EC +8611CDF1D5207EE2F8F817958D2ECDC5557BA2D8023B69FE98BF4ADEBA5610DD +F12B997F1D998441952BD2EB089AF2C6CC99FAD2E7E9AF14648BF99A09355470 +F32C0A511E8A02FE7E24F7E535020C6FA0FC4D9015532467666B0192BAE64768 +756C8AC401A71864A830359DEAC2919113979FE4DA48292EFC5DDD97A53377ED +CB29E122DACB9C126F687AD2684F4EF885727C84F09CA8C579D48ADEF1F47859 +DA6848081327E0316788D90F3F59452FC9EBDA175845FF0FD6178A0582E20436 +4BCE9A140877B4DE31EC9006341568BDCCC9DF9DDA0B086DCF1D5A8BCE4060B4 +1F13F5A274242B4A0990BE59BC8DD36A2AC264258E19CFDC1AA63432D07E9DFD +C35528A40580887195D79101345AEBBD0041A765274D09780B2BE95BD42CD1E6 +A5B490374097FA0E5B6F196A3C47C18E8499717C07A36BF3DEC7064845253515 +E0299143BEED08AE775CADA4F8ACEB96D70F08779BEBF179B2BFB0DCB0F1C126 +35B6BAB5C1F755CC9C40D5506135F11A22F802A9F3C79342B6FB9522729E681C +C4A93373F8E6DB2CABFA5B7CAB4C243C975EFF5C5D634D4D311EEFADBF115E41 +1C3EA696F82803A071B80E18BE67F7828DB353FDE5B51073E86E68486CDCE01F +5D79F3E3DB087505FCEF1F9B01908F1D9FE1EBEB25B6DDB40C119D5B28DECDDF +0F579BBDE6CA59B903368E3460730A756FBEBA62903512DEFDA5CE765C479DC4 +5658ED736D9EEE0CCA46CD2676C475FD3F8E2BFEEF43E7B959F19468FDEDAB2E +BDFF5ACA6119413724BA04E9B006C4AC43CF2A16FFDD90A1E46F52C661328295 +B245F8 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -4464,10 +4478,12 @@ dup 47 /slash put dup 48 /zero put dup 49 /one put dup 50 /two put +dup 51 /three put dup 53 /five put dup 55 /seven put dup 56 /eight put dup 58 /colon put +dup 59 /semicolon put dup 60 /less put dup 61 /equal put dup 62 /greater put @@ -4722,399 +4738,410 @@ F871C07E725D4518013D9A84CEC96782541E5580E33C2EBCDB18F08EB4655A46 507A8526DB26C854928B81FD502B0CCE4A68943C12078F57C10F4E85FBEE1025 46D925B8B3B447D4920410FEEB9844FABE985F9228FDD9F58392F2F3BD650E49 2E3AD5A14984874DF4572816931885CE8A448EC95BBF40DDF4F85653AD90A88C -C3ECC63492962B685F789DE4E796D1EE2F23B7C9F9A1656B85982FFAD6E2889C -7A667DB07ADDE075297F9E5808A98A05DA37D8F23C62115D1C08A331532770B1 -E0C7B867A3C0DB7557FC8207C80F6E3717180E7D4F3D6B66C7406275A3206C80 -4CAB4DA1D6EABF67CB1B8D2E34F25900927BABC9BB12685D7D153D0960692BF6 -93BFCD7FD07158CECA1F10A5D75C8B02FB448147838490E80AFCBB1340C523C7 -E247273704AF5EFBC8FE5526AE4159CCFE773D9AD5893EAFABB4C4259D5A5BE2 -1B50B7377C8D45B3D39C45726F023EA52AFCD5C7FC6577880BEFBFF509D61A27 -A58C80AAFD09CBB71E088D7C414275F6256511CF4FE9B3F3E74D8B491F2E775A -0495EC4C7C74092A337AF57451EC45DD1BE65EBB4F6F2AC454F58EDCC6B7AB68 -0728EBB958A1D5AED112BD7193A3047D23C8AEEAC26C7FFC1E78386C0FA6BA73 -DBD43E42A5C77201D4CD352EC3E9C496D2EA2BF7995852A50B29D3E2B16F9DE4 -A769ECC02C227A8487D22BE8EBA57308B5992B9433D88982233FA0C895FEDFB9 -10B63714A2FC8B9396F9D625DEC3240EB2AD54E3F08238AD01C665529018529F -D078C2C287675D7315CA64E907C3D428ECF2F3283C5CCE860EC461D403251DC1 -75E7ACB31F8958132F3D57AB5E34F05EA9F5042786C108E51B07635DC743D063 -11AC9348380109216561C53A74F4C3D595426A1A86E9150D3A9EE3B09D7670CD -D4F33FE94D92E8981FEAE708E978EBCE5A6D17B4A1D1D9161156127EC0AB5B6E -22B801EF92649437D89CE344D6E4C92F942AC811710D83589A03AA83B229D3CE -861D48CFA69CFB61BF3A6176FCE2E406CFB30ECBA8F9595CA3405C8F0FE23DAB -A06D1300C586F8DBD775F22F2368B6714FAAE85868C9EB6F7548E63D6E08EAB8 -B6764FEA41156D3FAF9BCFDC75113B8E73AA4F31F475BE491B45FAC197ADA3E1 -57E0DFC05232D2596F7B69CBD593181849FCAD6FC6CE7217D6C6CAA328BF57F4 -FBEE4E16CE5035383201CDE43EF601624AA1E9061821345302A49C06AF6B003F -14B42E6CE14F978F194F0502B7E610DC069791E52CE628CB5452BD6080C37F1B -0A7E8F6FB6C40329A70AA824616CE893FFECD2EDD9F8EFABC788BD415FF70F0B -F584471FC7DFFCDB8B5653DCBE2D191E1BCDCB83FAEDE288C9FC34C6D35E6738 -64F02C8A76BD7CAD08F318050E711C1687BB8C208C8ACA101470AB06D4975F82 -65EC88DFB0CE26289E3840E8D3E7146C9A03F3CE9D6434B04B0310308C221E7B -8D8709D363DED43CA5FF1C8CE6CD13B5906236DDC75FF76DAB5A38765CADE270 -3BB52ECACFCEDB884D1453E01A9653816ED352AAED96DE3D2894D64D1FE67656 -57E1E7E51CC85CCA202965C0AB8DE87E729BE4D7F1C631B6DB9F0C901E83D397 -791E4DAAE3B96B8C7AE44F70AAFEFA1E8FE0EE6A8E811652DBB48F2336AED844 -3BFC598A713C268C171BA0331D042C38001800A4C8C647055A0B064DB18A9D3A -AC9798AA8208FB2862002C164D0FCF6FC38B33F2AD7E48C29D349583E02248FD -61E03C71E686B96B4D4E0124EE78FA97082369335AAAD3429F5A961BF05A228F -11A453C158B731A5805EDA613947AE9FB40782C1077A71E5C95228916E337821 -DCE43615341DA9FA362007D0ADDAF128E4E336E0DC8190C5CE43B13C27519FD6 -8638AABF83D71DBA3B68D64A5E62CD663F9D79E56AABAB474EEBD3B4BC812DC5 -165D4777602F732DCC2A342BBDBD3215CC7360DE6902096DADAC86D9C2D17F9C -23C68E22931E91FF5DB218AE2CA8EEF4F3FBE930FC47141078B466AB2C564FAB -EA33AE882A540B806AB69CBD2A8E55D3C26BDF7A0FF87FB47A2839A2A7896502 -47F1C68F882E38CA6994D57D8EBC8F15FF8E091E3F1C87CB83A65571ABC8BC42 -F2D2E63D7D777AF0C2DD7E5BAF96F20E29D2F08BB1290FD43DCCB7C0C7F7B5FB -BF67E1289014DA74C35B6734D3618489DB97DCDE55F701A63A70E3F59A3DDB7F -C6A25976EC99019C6680BEB374214E92BB04498556D84BFE289BF1E02E07486E -91F9E5E5FAD11E65FA0356054F352E3489ED93DF3A241CA4A354EDF0C5858517 -4C7B889D256FF8721CCC80D14C7B40B6CE001EB5EEFA0E2C991EFA6B80D1E6AB -19B86AEEDEAEA08876BE071C01D801489F0775E46460F6DBAAB3F2C2C7F95394 -4CB70205A4CF5DF4CBCC45E8FCA893CCF96BFB8D08F2E439DD00EB511CA34AFE -22AE0ED77D48EA49EAC1E2EA81594EBEBD0539801393C118CA227A95968FCB1C -0AC1B08AC36A6CAC79E033E4283A38BAA3F3081D9AF5108E5185175C2D1CF1FA -CCCBB612308A6A8ED21199759C04CCCCD3BEF1631AF6EBE4437900A3A581ADAA -3DEF3F55C84532F7A083D553E91A965A732388B1440116903A65EB8D151C7135 -AB91DDBF69A6386B15C104868DB82ADB1FAAD169531A04FF73D89C8ED2356F8D -6E6EC6D1476B8345D340D8B6827760CEF6C191E8843F12F3772EED191E596728 -80651E10D1B307DF76A84028EA7E64321F59B4EB9149B347248517A513750E53 -E61A74BE0CAF41F18C7AA88EEEDE0ED3D5CD84754657A92669CC9BFDEFAB9CE8 -11355329988AF84EF116B0E2F68451E799EDBA2007CDF555637E247F5E01D3EB -CE40A4264D275863AB55D61C0533A4F49D64EEA8E05B2EB93366C64FCFF33D6B -718706490AE470C0F297A27F4C1A269A3E9B75E9EE8CBEFCC44FE045B62B66FD -47A2CDF0F19DC5210B65EECDA51DA371BE25DBABB2D13AB45F3B7BCAE838E26D -B5319199372E44FD4BBE1C09AA6DB28CBA5D2EA7B9486B36BC7613A0F0246543 -B3824B039C624E2A05E4D3E10656D67DB6D7E5B4C2EF7D50C3A6F64CB2F35563 -43366F65963EA1EA05FDFEEF8A833B17DE2F15F77E8D1545EA1AF87EE6F50A85 -ABF31B62E3BE1DD013BFB96A574738360B1A6C9F649FD44176F5D4FC98A44707 -DCF14B274F902BC4580FF1E61176AAA10879A94A8BE4B7B8F191B2E624482DCA -F73DBE465958ECE3902EB75059E17F3DCA96CB235B22332CB80FA23DC537231E -02A005794EE621B1814B612EA22ED5710DDBE8F6616F1D67F8909018DF3377FA -D66C42BD2C15D185C7B9CE30E8B27E6A142E89E6EA90FC9A02A52F5615394448 -923B60EE0CDB61683D6D6F786A20316B992FA8D6BA3738BB66CD55C1988F572E -627FB1ADE7B5D74A54A8AF5A621AEA30899A3B1D45D75252AC88A7933ED97847 -B972F944716D8664A2E2E4BC4C28358583BD960AD45261866136E0A626C36842 -93F9D95A23EC5721F7783BCEBCFF7433D1FB87E6FCE3F16FDEAE6A34EC296E4E -BE5A6B30FBB47562B4D2E8A1B3FB5F2AB273CCA2B4F32353A51541FD44E76060 -8889B4A454C42A159A0239B1E451987846DC2B5A1795DF53458AE0995EEA0521 -867422FD27F7DE1F177F9DDE065C882EB1AE2ECCDD5646D93B7FC13379451C78 -DA50030751DAE5776B8CB90DC02512BFA79391BF8B8BD3B7E893FDC359A36822 -536F79289BA4D82FAF112AC06A4EE34C8499CC7AE22F3F5DF7E096FC1748D1F1 -CEF00A20701BF1E476E19B8C904B4302D80D18F49E30DAAE2548EA21BCD8519D -F1EF0D99125463A8E9B5E6943D1C18E1FD1DEA5073B6DDF91CC8D4FABDB5446D -73F0A0CFB4BF1C4C74BD32FC0E299E355F3FBDF6E0A75285E2EEEA66E4EB2513 -995F1117FC751D55BB5B66CF37573A8A932A34AC29581D46D5AB5ED21A5C6AF7 -938C400AB449B328285B211E54FB22F2620E1908DB3F3396F91C5A87C4C4726C -C8A54D630E9F3D878592520AE5E5B53668BE3FC3D1E4D263FF5C6A84BB5D55C5 -467BF67904172EF0CE6772759EB0F75D2403F8A0B40D6DB9F5D74C3A5FB6C30D -D04B316A8B11B9611743BEA5CE92D8730E577B13B84283BBD970DF44BBB87A80 -959D4303F25033127E48173120E3C3595D095843F2467A3473C498CEB9075A20 -5DBB9F82DB7125B631139286D6C5633F94C4D5097EC8B7A8D096DFADDBC89C22 -135440B7929C0724EB1FB9D8C9D5480E97BB4606EE6976418A96B42FB0556928 -ECC51275CFA1D0ACBFFF46FC0B04CC70CF302406767C7FA493DF1EB10A5F9CEE -B3AED9CD32F93D862FA2FFCADB986F443F088DAFA906D950D3257F24C64DFEEE -C48CE69284FABA482D68FF726EB83685DD48052F130E18132954B3E44FD3E22F -B39515841BEB0A79DAD72984C39DD4FB8C4FC508AFF5B45ECB4B23789F0EE906 -9EABEB099EBC24D1393866FD9F4CC79BC57C87D5F027501DA894F237A87BB9FB -B09039B4E9CA8E767319630FA2CE444EB878069DA89D36AE4D9CE4E7F8ECC5B0 -06D85CF8ED33138F3F7D664E275D9041BA70C6CB4F9BF26EC2B9C5EF2BB9AA2A -B5FF38657170B736D0A06F148970A385895F4C2F524A582CE0E224E778585652 -7C186BA249BEE06DFC457D728C6226027B8F92A0DF24E7F9E3A7AAE93FDF6F87 -E694DD95CCD0BC2504F3D9087210CE220862D34139D33EB505D90D39E7DEE3D9 -4DAF699231D57B5AC3DC301B2DD84F6B64D3EACF5D0B690D0BB7007693A72DD7 -949C98D8EB9035A0ECECD035CDC6E7B8A007BFD3EB3D8DFCD130158E473E636A -3D00F8A2183766C422991EA3FB1A6F5DC967EF9C8736FB190191154216B7AC75 -F5E269CC1AB5FD8B1B8F1632E9496BF02CECAA66532357A0DB3AE03D98351FF7 -0A2AC142089A891607B075019E60BBC5CDB1AB6E31DFECD6500C6E40074023DB -11474C87E51DC00983F99863097050A7E428E3BA47F9E40C9EF1B5F0590217A0 -A9DB1CAD41A5D420F20BC2AFF0A25BBEA832C3128628C241DF5FE78884C6ADDC -E617893C14876F6330D6951DD113F3C4F8678EB201A60F4D9C07A3E29D763741 -10751577429E325609A544F60D83D0FD5D44990D5ED78A02BDB2467C8815F792 -804C8C32AF13EA9476679DDC9504C39846228B064450180C894451A8D43597EA -50C94125A083C5A0F2E38E993B049C75AE05949B5B09DCCE5EED7C91601BD79A -EA08883D8AA2D08C9D5E296AFD13383B457231E8797E5F8C73D0D56A1F7E1ACD -3A1C48486E9CC4DF715366FAFC79A197595F18B60FC89EB02C9B8136131137AB -222A517CD5F5797D6A65BE553168878325162072BA5D719F3510639FDBCBB448 -5DFA0B1774CFA961558A0A72D139AF0D5B42EF7897F697CB5942DB7B2FCCDB9D -71472A56B663D2E55A7263E24137165D2F917DCABF63814C818CDE0B03B6E961 -9F220CA7EC58283B36F3B7AC37F415FDD00C248DECE7E9B57B07D0DC7A106C69 -55BD5F726687151CE743BA4703F19721E773F3BF02E67130F273D35DCF38642F -919D3D0CC9434EBE1126FFED9D7D3DF75B2BBE10CD30D8B8C0903CD1FE3ABBB8 -BC90B87AC4478CD688616E797B2DBEE120183ED696226DA703C0CA001BE9D46B -B306E7F7F63BED6FC610B8A89B00A5A95701FCC80D83C50874EE764B7C487097 -DBBB0146746FFE1CBFCF7D7195F08231FB46755C1DF964C7CCD803E7E69722F6 -9D5B3CC4890090A74AB2121E464354F724AB7D39E8DC2234DDA3674EF0695148 -63176CEB812F168A0A7498C96AF70A1A7FE2769A3E725883D789ACC8C71D0278 -CF3538E7AF786E5F241B9F91FB0604DD3EB2E444F548F5248F65DF7D175A0343 -DEB9AFE845F8975DA301F1A4C4CFEE3234AED965B423E4D203C9CA88AA967195 -B23B4CD359F7F4AD551BC2564E677FBBAB954D0C3EE386139F7F5A4B1DCF7FC7 -7230BCF476051638B337BCC8F5A9145AF38D4987A65FD5A7E8301F4B8D06F9E5 -B26EBA34CDB951F14C7B0BE1CFAB8098F64D529F70B452492A1B29E03AA1D0FA -B54AA53EDD3EE3F74E230CABB2B94FEBE4913EF0A30E0C4F27A7E29FFE700BBE -D43233DA1A0E4A32B0EEBC1B2F9FB7F6885992E21BD1BE5D912F282B0FCF1EFE -62013C4B5C1CE5B8AE189B28747FD30961A3FB1C58C700C9119E592B7F52E24A -F9AB44BA92AB05E2CA9CA2C443CC9E7E0165D8345BD37D961D945027E01DDEB1 -1DBB608A3A7995A9E99ADC90970D7F4EC02EDCB7D32AB877BF4797F38CE514F2 -C7F43965C3135FCBB4D8A986E119C562E6973942ADE968B09A36DBC5391321AE -97265D39A7B7EE00ACD0661D426EA4E5E8114D65587170C73D3559258A172128 -5CA211EC04137A6227810826C10E676E9595F9880C0DAE45050EBA9FD950A591 -16A39911D102EC836D067418E3FE7B361BA40987B660717E4CCF43CBCF5D3668 -6AFE35386A12B9992F9EF7CE7A326A8C02EB51E90837A75A0B781DA6516F96AF -F7BCC0503C01FF3C7DD5B574307D454E664CE49E37E01EDB9BAE51D41BAC615F -08590D7A5CCD633E8EB051D8A4C066F0D63CBE9D2A0A38CF97401B541668661C -7ABECADEE4BCBDEA822919196BF14DCFF9CD143FE5ECEE374907F17ABE47AD79 -B88BD1B6D6A8DDD56A95A2DAD1B2D3C45D19389F9CAAC36CB03641BB8CAB7C93 -69F7418CE2956990036E3A8BB0E48FADB3B56D08EBB536E3A2D176159DEBF462 -295F700F66A6917DD457589CCE6B33F498859C33E35F2D46336776BB31686529 -B303BA134073508E67ED9FCC2023873B21EE627CD2DFB6F4EBCCA944C3AD2B92 -4F9411C31ABE2FBC265D09AC7315F74D393AF906055A304AD1636A5CD22D2684 -83BE15E9A035804414CC68914F260510A30219E72F1C4D63363FE03C220A44BE -90009E869C2DA6D639759EC8436096B593A917B3B604271F75C6941DC839EFA3 -0B9A58F85E67EBBD0895EF6BEA57CD716017EC0BCF009D27434156CD86F0B768 -175571C451520F4AA26BD45AF025C230BB98A9350407BE5C1F1C71F83517E580 -7F3A2542F4D6DFB5BA77D93116800A66D29B916F2FC78042068D44A8D6620DCE -97A64BF9A7A488CBF302A6F0173EF1350FBBD46E307FA637AF4600D643372835 -04F98F008F3DBDF3D584D936FC268B799340D8647F0262B3C9DCE41687A8CC27 -0D6B2DD19FCB4E3AE162CC44390DF0D2A6A3BFD0DD5156B5ED3C031A371A24D4 -4DA4CB9B961C5447242055FA6CF13F67C155E6F36215628736704094836F03CF -1D2823E43F30B68B4C0A95EDE5356C2654F9782FF4CAB180ED7B362914F4882A -F765062AE02E2AB49E3FA86FBCC730849CE306949294893D2CF06DE88A7776E7 -ED162FAA07057BC0C1F5FC70326B2884A5E4685505E19DA512EE2C90EF91D7C0 -13F41B468ABDD40FA91430DE8289D65ACECF7BB7A4162949AEF4BCFB5B329542 -31F35AECE5E5641E9217BFCF742B8B908D54431CD98DFF97989F901C114984FA -0B2726174AB60C6415A71CC1373AEE18D5A29C34C66E8822C2C298E912F2E217 -44B52FBD94B98CC6BD235322BCB219185B4273195271FD3DD5625D9483069494 -526694DD7B5632E9FBE1E6C71D50781FC5E4C578579CBF97288A9E92D84B6C5D -055EBE77F09EF26329C9D687E89F7307650AF8E45713B65CB92C6C356EC62F33 -DCA398238DED9E66283D790346C019900C3EC090F97A9153F5E1BA5460B5E4C7 -52C9C90BE107B5341621E6D3BB7EB0F2AC3D11595F8F6DEAD3B9310B9F706A3E -A3CD958623CC42ABE4E8BA63E102D56838503B608D5DFD3DF3BEC35C7157576F -AF584C90AEB1012890559BAE9C90E3935CC1EA4E913FFEA421ECD35AA6F6C089 -82078877FD89A115C98F61E0999ED37FE634B710854AFE360201E858FC4F10B4 -9F3887390A579E01928F8C5AD522DA87167E6F1D2153A48397D23A9803F08478 -AD3ABCAAB2ADA02F36C06FA7B262AD0BD026E6500FA6600D71BEE0A365DDBA7D -71A812EBBB71766909A02AE6DE30A9EC76F56E17D811B2EF177CF3537F1A4CCD -5D39BA029F063080AC2ABF0D9EE11BD2593E3D637DC34D4E815BD6664FEA4969 -8F5E128D85484125F78AB2E16BB78E605A389377EC9E1876E5028830360F668C -C77F377D1854ADA97454DBF45CBD2F10DBC4E9C6B29AA8A875B2012441653008 -F5EB97CA0AB351859499FD9F5ABA5464D1BF21CD3D3C1277F8B9796D98BF4CDA -C045E7E674DC7B472D05ACF65FDE581C93A0B213C8EB8163957F28627EF14A72 -6049530168A4E11D2B7F4FD9391130007C67C4792CA94A72B8ABA43CB4B708CF -DD0C96BE177380FDEE3E46DD584FA820C67463CD4031CE04652993FF3DBA19D1 -D0A520FD0E52DD5BE265CBADED20CE377F90F876998006F67AEDD30E3E8CAB3D -4B2518556A99AA4FFABBB1E6ACCBEEDBAE2BC1DBE9D8292AEDB8E3F103DBF748 -D9E0C6C3F0A4A203DE481A462379216B3CCA465A41D0B9B5090206D797D3A3EA -6E750E5C13F6DDFFF42CA7F046DB5699AA2209A038519F515B4886AFF04FF03C -1DB46BCE65DBA0C4352D85F88E4AF74FC376B8476F610846100AC2A5C1CDB880 -A959EB2E020529E3C8456CDF94C36581409E8E1789B2B45AFB8FB541D431A748 -35443C33F1E4191B71A3996F53B98722DBF5E30717629EA737E4EB1F7F3A0F7A -C0879729840AE4C830E3A2CC3ADD62C1145BF535D121E3875F12228B90561B82 -EB2CDB4F8BBF201769BBFDAAED00E9CFE295023034AADC12C217B0100CE8055A -8D2DB665537FEBACD5BCD69D50F72DC60BE0DDC9AAF703C8041A3353DBB0244C -A8488514C101E4D662D394A84C5B9048F2EEFF7931A3BDEA5DA02F3C4D564F1E -73DDC5FE2CD57134C1DB9468A2DC585717F65E68CA931CC16F0F7887D2BF2375 -FD28B4C0D900692E944BF5710273E30138F4775422955D09B22B738142A37FCD -83ACFD05B6AE9D17C673B24855F74FE10844B5ED73C25221623FCCDFED42D395 -DD426D6EAF323A54510021065F91B6248E1D8B0F466E3BE65C203FA87F98A297 -E5A95829A4E0A910FEAACD69F6FA81A9AB404778AE7C3BA4DAECDE05C1F86749 -66BB8107BA7F1AB76CA04C8C00262F0735ECB6D815C7B2AD937BB50275E1617F -01F89AC79015E809211847CACEDAD713FED01470469311C9F6AA26EDA3021D7B -A1C9E4E0F3D073B66BD9C3FBCB6B97FB5C48991C14F8459AAFFAEF73F83F4074 -96D705FABBFF885B801AEF577C84BADF4AC26B30A94B8C54B1229E666BD2FF2C -A17D7743EAB5AD6E1C2A38BD2A7FED4300A81D982633440A01C55331895BC45B -4B9DC7C0F43FBE75C02BE6ED47836EB92D7B6332D9867DBEB2F015C5A0F3F522 -20E262070FD52EE2BB71BEE7B0113B1FC80054ABBF13A376849751AE61ADF535 -4B95D1BD84934DDCA41015CD6BB80C324AE8B2772B073C437714B2CE80E11F2B -76DB0DB35372C642AE7BC605B52C844F088CC468FCB9CFB13C6A4DA589049160 -2E1174520BD195FFEF8EB36EE6CF7C7138ACD19BA70CD00E7C6A18E0E0BF7C81 -295CE640135318682A1A4285C68B52DF7F950CE1BD26F6A5A51BF6C6766D2E66 -423B44BA965BBF34AD26D5A0F284B9D9E275AC18D80112EE8AEDBF5E2A6A58C2 -937E25BD76655873F1863056E3AE2325CE6F463D89A6178E3FF77351470579EA -3BC3F74D30EE32192FBF71756BACC7E5BC8CA579247276A109093DA0F830A790 -9A3671B00269E0D361D7D08A09920B895D1F89346FF161A125E5892DBCC7F52A -2848001F31BAB732EB4E00C976320F04088D0204434C9230B3D2D276A3481389 -49CC6E3FA168E4157858C7C6B50A8773F7F7625104C19AD63F2DA9503DA5ADB8 -8F8808FA9BC76E2FAA41B2A3BE135390C866A8B822C6E0AF049D82498FE60CEE -529477538C36578BAA7C843BC8FC8659A1F685EF19BA5D5DC53167092562EA73 -BA7FE5D104E616DFDFA9331F7D6C9109FE513CD31940D87D0382E7157CF171E4 -A9236D5250DE6BCF0F246C5680A8D92791CA155AE942C1D8A77A9DCD88CF49B3 -663E993B0B1389DF2DE4420F29C0EC1FBED031486AE43137C68D3CB178B44D4B -B181F63B11D2A21DE4A1E748C530CD046643BA951A81B3C0A5D78F53DE84D930 -033793C346BF6F1534037CC10E4468D0E359D6EC741C09E4A6EA4D8CEC41F846 -81CB64FAC81C877FC43DB4D00BE2D0EB06A80BAF795333376EB46FB942D38E90 -F3EE4A987EF66419E7989984ED8B36E9D936FDAF433D1A26DBFD21E69D37117B -12426FE996620C50B0CE91BE8814410442FFB26273FC1F2C1FF4C9CFD3CDB6B8 -789B5DAD9E9E95474160F8F293F2D70ED25850C6EB5890D6BCED0B92B197C3A3 -431F2098DAB97889705FF519F48284CE07ADE6E6B2935BEE3BE6143EFF691949 -17BABBCA7B31E6F671DE31E5EF9B63C4C655460FFE6EE62852945BB1138052CA -35CF43563ECA3587FD9F8290DFC9AB53D599428841AE1C67B22CFDA355FE092C -252048396D0CABA7154EE336D1F021F4C0CC7C3EF47C33407D8F64741642DCDF -C9B4C3B90A8AA883A327B95164F17A73F8BFF93F9C9BC8CA3075AF420D4A68A4 -CCA219B3D3BC5AA25486046277CEE16F512132FAE2D02CFDDCAA396083AF0B89 -591C79C211F90E5AB011E52B36827C7D3DFFDAAE45E196F3A37C0254B076E857 -5ACBF02204E8B1E01FA474C2CE29F8FF4B58E4A9DBADA84ADEC02749830CCCC4 -2ECB73AEACD6481FF0039067C298760A48C561AA968666F012037DA102DC4B7E -450DB77AB426236601E8B53FC2D483FE9C47C8C645539B41D84C837E1875BBBD -963D87D00BCD894434C466F39F7CF2F1CD1DF157A8F096FEE3B05E250290C74D -8683F09F2CC02DC1B61149332E829494EB03469353948AC5AD5D84F04B4A6BFC -C48A9455D3DBEC6F970E72A4F1BAE25D729B32280A43D16E0D780DA82518F0CD -D7FC7FDBF93310A5C1B9CA867B436CB37DC30328966F8E6D85CC3BEE3ACAAFBB -7AD796D617A6B480DCB507A605FD1347A693FF85C5DE7E864694EAB70D92FE56 -2E5BD7D673F3CD0D83F64192AA679CC947AD12FFC7026C7082AED8441A1A4008 -1761C4F442D8366B9505301526445E821C9713B00D6462E0D1236A363B9A143D -5755999AA3254174F5401F03592133E2924D4994A97A620AE2A307BEDB04D9DA -92D617AA7E1DC41B9F486196F85B0F9D4C26F4D67D74A3F8BE6A5E05F302E15C -0D74CF24E14C4BB5625501A6863B1EE19032C3A28B07899B21E0A8DF706EA672 -D9DD51A2F5027A99E2B58E626FBF060BF25200B484060450ACF9C64318A86F69 -990ADC813C1EAAA76830206527AB4240EF28F04D538E98E31AD943D8B155ECCD -98C39C82D7E43481202EF89CD4F871D3C997BA62B8DDF0CD885A6576CF1FC080 -412A9B9BF9FFCBB8DE22D63F6DDB9841ED350AA719EDA87A18DF0E776660023F -FEAD68C95A159E5CE4731AA7FEF11A62FEF73CF850142CA18B29FD4981B2B461 -AEE5B1ECB409E9CEAB2F2A83940E79FA805E71646A48C120FF056D978F9D931F -D5CA93F27B4855E6ED4D7121A56B90D9463EC6F9B76F4A262313A08E76BEA626 -3D33C83EA3262C03B5ED7B4C10F687E88F3FFE3B5F3BAF16F25003A21432826E -D1C17D67172C5BD9B1D5E3DCAC4C14E0BE2D194F2D42DE37659C704C518E749A -77E1AD2B11CAA8514791C9AD8DB8FBA16905349A0C8A176620C23342F68E8E27 -3880EBDBCA5F32FAEE3680092934BC7243500E2DE3A22DD325246F39ABA0F354 -36289AB53D71B147C85088703C683C1D96F47EA244E8513814769A7B30D52CF8 -49C9DCE11E912F7BFF5CFD25BAC588E476C76B5064D528381C6882CB3BA73A8E -C1E605B14304D5BD1A755DEFE9C4D6D5100C1B810C622DF4990C4CFF82187FCA -8CE5A717B266D35EEA7C2719E3AA0829704B3FDC4B0DCFA34E1EEBFB9B8BCAFD -7036015D1D26573C8DD513B8E617746F89E6C890D11721AA61419CC3A3D256B6 -47E79645560AE6FBC56725850C60D68ABF8FF3514AAFE242CE44EF87F851E991 -C525AE6E8CCD5D2FD7E091972E688B826CCE918852E4FBF9DCA5AC377F7F0195 -8CCFA0A096C20318C5BA8628F1B3C553C1E0E083F24E22ADE00B2DB1C8439E8E -F2138E45D8D6775B2910E50B91A04CB493A0E6E3F1A971ECC92E71F3E8F14DB8 -32CD332FB4C9D0C89CF1F1CCD77536DE9FA04DC3354910E3494B91659DACA558 -EC0F8CCFB7E0603570FD5CEE33FB603405D211B6C734BD2DC3378370B93087DD -3EBD7184464B513DE3164CB0C10F5BF386D1308FB4AF8C26308C93ECAEA20C12 -D9716C8B29FC3367B36C77BA6F0B40B6220D70AA4C699FEBA3D9DA0655ECB2E8 -74CE90B53D74EDDECC270BD267886768DF920E850FBB196080512A0AE489D11C -27D0DDC0DE1456EBE8376163C48ED8899E5C2BEF686464ED53277C764A1D8D80 -EC7812F2BA5B7E65349582CF436ABFF6249B4141EC6F21CD7CD4C1A23C8D017C -DB296BF885E5B09B8EB36F9799E0355CAD64B60611D64001B91FF15FFCCEC35F -4C4A4FF37124D8497F0508E52BA7C490F2481C833A8072A120ED280BC79336EE -B03F07034E8EC04890779D7D222FDA4C4A282705B8A3E66BD5D96FABDCCFBD8C -4F0B6AB3CB420978C2DECAB2D3CD19334396397432D8577CAB85D875E3ABEA8A -51A1D8643619BAA52B7DD571939A2C327955DFC03F61527EC239E696E7C0B78E -73A6D83EBF19244882785A3F582161D4492EE515C99623E0E0E3FCF6E38B4721 -7EB379E4491CE7343B593A8A266B83BE2A2277D5CC84335A776E658FF85D39C7 -9612211B3BC71E2B8D85474B18957807E746DA079887E28DECB9B3CE7E94669E -EC25FF3035BBE99A7E2314FF4A8C4CEB5ECDDA4999B9B2500B46028A9B370B91 -61F6EE06F9E4C02EEA683FEE392659CDF283E39B61BFE99DCE8F30F5EC630067 -42D44AC6F7647AC4424E0C4964D8CA25CA6152364AD67638F2B7397413809F1E -24F916933FA452A8683A953462BAC73128F890B07E9454FB4059D69B5851D744 -AB67E7C0A61414200E9813D685BC535D2B621F8C75F56014014D610FFC4C56FA -06A81021A818D6D368EEDD862C9BB334F050F5502BC63CE2006DD12273746CB0 -4335C8E25C462E4DEF12DE2C80A2F25E81A04AE22205C8F61EE20636C2E1BA41 -00CE04BC0FE7A2128ED163112F69BDC089FBCD33545A412E24F1B885A315C1E2 -361FEBAC883956CFC4F9D2CA2998A8C882A678AE2F282C8E03AEDB9EB7D4F471 -55A5F118459A68150BCB2BD96FEA71221EAD5BE0B2CF5C80895F8CC2954A670B -32BEFAA720634E28A6EC26B3F87C74AB7EE8812DA0D25444CA546A29CE234F7D -09BE4F16D64B517D6DE603CCDDEEA0CBF3AA4E01EBC780B3481F8666B11B1C75 -C9EE8989EF359CAE9A3B90A20B946F6FB3E178A459BF425984666B617D9BE899 -1DFD5E21DDD66D2C064ED0FF7DE1307C3F0A720E0A97EE937B2ACD5518CFD8D1 -CB354D53E09E7F5576F456E0D48A5B17487FBF7418509B2E3B64C9B55282C9AF -034233818D88FCC291FE5CDF13DC78D85AAE8892407AEE591B1E9AC0F54513FC -BC04173FE429E9A56139B59EF1E68966418316B704C87F1E6A65B71776E90790 -6FA2275B1E008FAA1C24F1A81C96AE91620C54F48083A32C22DC34A4F3DB63AC -39A3A61843C9D5F585AF29A534C5D81A4CDA1C29EDFCF2C85937206EB4CB1ADB -B9616941A8E3F09E5CA686AC3C48D822A9D427C4A40ACC498E53A98704334CD6 -0570E591AF9C82168F3640BB70E1ACE1ED7DB6394603DC325CBD657A6333482F -B53F47CE8207A268408B4C514C7BD1816C7E3B39262506597110CBF5B2C39863 -4272EFF639940302C2576A440B8D6D5D42DE3DE12F9A72DDB062805155DF7831 -18E426B79F4DAC9CD8A7A770CA7AD3CF6E980F1E3B970C9924E037F238A1D136 -EAB6923A8777D40C107AE9C94F6DF96C7906DC4D3F316517461AA237A4524E29 -044C718C69A97B882C85825DE80D2EF200A80C4ABED634374F207D96F86CD82E -BE667AC443760263ABF558A985DB39268FBA2E269F8C2FD530EDBAE11F8B675F -04002CC02F06FA8F0DD337CA95BBE3900CEC3FC4A779CC786E75519021848414 -C627B78999A01E4F1DD583A59F5C214B0237CCAFC61AC72FF1EEBA89290919B1 -5A45EF986EA5BBADFD24A349ED6A045519F74A5E562088FCD777DF45C6FB3453 -E4D353C5743FFE7081E04325E7EDA574DD56F297527EF7DABEB9F743EAB4F519 -600668E4454EA430D311BA1FA97D1C14DD3404B460C0F409C3E39CF779AB4F1D -17B67BC88081D452039777E5D8D47D77D324EA364FEBE33D7B1A08828CD8FB05 -3DE0ED55F3E530AF1633E458852B735929381835DC00DFEE3D300F52896E5079 -7297820CD077E2F0E0ED088584EB67E64C99A62CC8AE9A9B3F5253E81A4BC631 -BF7332968C6C2CEE6ED5A3F1D2E1DB8D362A7B09BEB329B43716CFD997BA30D1 -074821847E87737B51490856228FFF070B7FC27DF6C18CECD5FC2FD568723BC2 -E9620AA94742606023A015F445B9B3BC89B5AF91962C4E659B2CAE981E4637D9 -5B5D074474973DBEDB804148DAEB0CFF939C282918A219726227BFEF91EFE98E -F274D8A8A0E32EF7301BAE01A83E7FDBEEF87D87BCCEA23BA55F4DCE15F0E05F -0EC406A4CD62E867A7CA57DD3D019BA08780F859EE584313D9240A8C3ED2BAE6 -9D5AB6B07424651AF5ADE40A7673DC5B3FDA0CD476DB9BE966E696F914D22014 -F46330ABB20E75EB0DB3A5A727CE54E08B44842F2787CF6BBCB7AB230EB5436E -08B1D0D9F60572CACEA793A91F90C836F83E022F3C8D648839C630CDA27E74AD -8A91F120882446E4AF11C73D525EDE5C005649A880FDE689467CB09A642EA5B8 -3C0DC11578DAD76E7017B88CFB546A081762C963DA2480430071D8A123DCD6D8 -A350B33C66E11B08E6B62CAB222D160E6C48776913331628DE5F0710F87B1C22 -C77F2D888F5C01BFF9879441A81CB7992A2BC042013008BE382206D45DB802BF -BABFCA10AACD0E4FED2E035179BA5134073C1010226DEAF9DEDC976F0C524625 -4C4ED71C9F114B381AF4371A8E95352B648CA9F681978A49093A6C40E338CF75 -49F7998CFDC29670BAAE16189D6635A80B6793AB9186B66B8814BEF45B359F41 -EB3F7AA1E75D8D91373EB23CAC6E9A2C69F153AE238C6DCB7A4A4326099572D1 -AAE06D49343427770F37ED208FE983DFFDD3C7E32E0E9281578E115ABAA0EDE2 -0291B95A050B24D486D5F2CDB12F615AAE8C56C6D07DD22FF592BFCAE7A01E67 -333F90B0F07751621B32913A2DB059CC00F537425EA4EEDB491E595EF709B414 -7634D80E767BAF9FEBC1FC41D0FB3F5D162F66311F416A93BA6301ABB5AC7173 -7CBBA52D93D5031D1B7F2BB8595FA1C84E440D99BBA7E8EAC149DFF18C7049DA -2788E3F847DC10DD9439C584D0446309206AC1C1D2A172BE0A6C5D8C5C0DC137 -CF56300F4156F86A1F4D502A0001BCFE8E82AA4212FF2864B1E081B3504C9ED3 -A508FFDB26EBEA894C33CE7B4FEC09F475F585B2E61599B4FCF4EFCC08B48CDF -D2BEC7557520C0DC7A69A74CBC4C765025ACB960C010986BC5E2A96F5DEE58F7 -D05BB869712E6E66AEBFDCF2F90530B4262FE620D9F8D66B352A529488C005BA -C3144B6A47053E9975DCBA568BB914F6FEB4E1804D2D99C56FACE488C8ECBF90 -BED15297E72E45A12C2D7D2A9D072B11EF324C6B5115076928B694E39E50C386 -F11C687EFADDB68C57AA29E3064CC387ACD573B2F29D27746F169902D3957EE1 -A02EC362C66754EFDA5A4644559536D3FC592F158C77B50708E74507A8AE6324 -3023BB7C93882B2675D612ACA1198C3B2813BA6E04AF30C98F3C0CDD9C63DEC1 -D0E9AC3764C872EE8D7D525F8AF36BDAA0B0CC112D2B46FF2EE95EA351321B94 -93BB28CD9BB63AC0841EB3070A33A016E1D6C87A55057118D14F7F53E18EAB1C -09D22FBC1FA42CC6C7975E4FB0268944EE843E4A90D7F0AA228F0BE55B42EBD3 -EC32E11924F5D9742BE8E7A803FB25CD75DE330AC140601ACED8B1452BF8B2B4 -C55AFEF142AF8CCB3F394E5859EA994E3ABFF4C77871DC8668E47C858C35770B -D9BC3BE31CD67C6B5E607F6DFFDC7EE338711C98C2A30AC2B612089CDE630E04 -A73B07518B9EA8A3AA324B6AEF0E5D7612DBE06BF7DE4A55796DAB2C81CFE23D -0132797108BBB0193CE77D91DA6B48E951338E1E0DE6054FBD1A4FCAD95479DD -2DFBFE923FB7A3B06B7085793C165A20D79BF09BE800B2ED7FBF43436EE7676C -FD2EE1495E13D572912BE7C2379C8D1E7DA4A6A2EF9FE33AA14A75377A356DEC -6AF1106AA3D780D1A99DD2E0CC66CCEBB8CA3CC418DE0A267E8E5D34EE925E2F -827461088DB60E0D56BBD217D9E0C3D2B591CC60468A3F7A5A6D49FD8F64DD46 -BAC6215C2E56E67A10F69219E1C8A09DED4A745CD53E5748A7C2B57FCEFDE598 -A026E280A1E5767ECBD3A3ECC41D52232674BE60A3A8BB6FF9EE627AA4B2CC24 -9474949DAEA29AB9586836860AE1FFB4AADC75B0760015C86FE32F49F26FF44C -C03D4BD3CDE93C57329410FA84900B19338CAC1C55B507A6B130EEFFB01A5E44 -0E3E133C17A0AA4ADF837C5D6CE284D053DCBB3C03F59C5C9BB80C0C4BEA25B6 -5FD00C833BDAEC0A4607285DEFBBC7D3A6A100E8D6453115233D76CA2C132D31 -A3A3FEA39606F68F0AC10CFD4F5701C4B2A7B6848C77A903BDA77904D038A1C5 -6014E31F975CF627D67B0D3F3AAEE72D32EA80709CF712A6EB46E508177AFA03 -F275DA9768CD589CB298322B0BF50B578E9E4B58989DDE12CBAAAEB7E36655C2 -842F5C7FC004B8B8516D8CD35543F3D2182DACC5EE8750A0CAB151C6EED04063 -71B111101991BABA8B86E9F6F718B9ED1E69D91EEB503C6AE45B661C8CA8B1CB -20A9C01764DC4CC575C636B84755614BBFC242A5865469F87FF4F97A43B5A651 -B2DAF746AA69FA6B9CFC9FF4A2590DA2D23BEF1EA97DE3FF48A0A23369B90395 -0DFD36B3C7A992CDC1E49F42DE7C37CDEEC35A7AF8CADC2CA0BBB01895613E03 -9C157B1683F1421F74B08184D56DEFCA72132550C6C1061B36769DBD39EC22CF -238641C90BB9510D564C0AB202205358CE42CDA4723E5506BF5A274236A6E9E4 -DD21C0FC9FE57974FCABC6C808856B5F837AF759863BEF5BB381E2A729C6C4DE -2F53DD2DC92BAEAD141FD5FFE341E0FD5AEE566E2E1C6A44E94071DA0C3D4F57 -07B02D120D95B21086CC12F33FC4D0C7C8B6147928A00339324024F787193073 -13DD96DBC559F2339FB51C6123A3C51C70B7676B39255F589A80747491320833 -0FD6685904C70A865AABFCBB7F5E351BEF3B535D00403E1B5C4C64E8DE7061DC -A1D9D4AE825BFEE090412772E057A13FCD3A897FDE348FD50E50C620C89461B8 -BE07B057B796B16E06CD314943153935D91152BC6E331DA67D73524ED7548385 -0F087BB2F0023532B945ECC61B6E3075FCDAA3ABBF945B64AADA7213C590A9B5 -11D068C9183BC0D2238DB3844BB4C7596E00BF6A67B6BDA2F85D5D603B80035B -5DF1EC6C3570609A972B752550C89C34B8E14BD1E0A030303D9015EBC9114F57 -2899C129E72055B92DF22636EC479B03277E3E60DCAD36EB35CC3898C056C72D -B58CCC6FCE3B2FFDCF560E130B196BC278224FD4901DD2F2F753494FFF4AAD61 -002715D828FCC2B6BA8794D843C1144231E818579B305AB9022AD279E0514068 -F4330A1C2C2C3FBDD150098C5B7DED6374D6B45CDBB7C88C78343959CC260B39 -986001C07720E3B745CAAFF84F858CF3AC4440B592D5A83BD96FB5980286CCB3 -6EDA47D11381FEE3F3CAEFB2D6E35F2B896DA68E8567D9327FB956733DA2896D -1A63B1FB168529BE23A7D04607085DA1596BA1858B1A07F3F37A233D2E81D599 -82D885596BD3D041DBB2F3972CF605C0FD781C1360B368B49C4E41D2BF45FC3B -15460C0D9AFB5BDBC87FEE463493E471DB54CFC064DBAF00EB126DEE19C58319 -71E77AFADB3B1256673E0B9226177A6161133FB030F063FA67C6 +C4A879C0C7596E61997B972E8A55E57B17F802C738E5C7A8FBF6424F8B131B23 +CEE3EA3747DB066246C250EAD335A76FA166ABF75120CECB59076AB31A51F176 +57176CBE8C802A97B0542A5CFD6D5E6D7EC848B923012E45D9F065BFFA0D03E6 +788B68BA4DE51DA37994948F859D41C28BA939C3A82BFDB44DA585AE80B8CD7B +A6EEA79B70BFB4864E06F06A9751BD2D2A209D150D7135E0A25D67263EDD2A7C +C63B5B76ADB05A2BF747D5699036377F1A645372E5CF6497D8D4465492780B56 +0D7A64F4AACF00DD611A0D4AA2A1B4ABBCE41B0BF87A7351F26E125166E2E07E +2E64639C4DC21B996EB744C784A145F80D07676331178ECAA4967195803AE02D +1A6A04B38D721323251A1B1F656498F5FF255E4F1632DEE1A8C2B197CD7BD5FE +3819B1998273EA5EF8EE032E0638F6DCE419852021D098A19CBA9A2B675BEDDA +B6513BFA1F239FFC92CEC9ECC612072E87FBEF1ABEDF6804E605AC8979E970E1 +3EB524894E3949BF090C1BB477C45FC0054DFB6B6816C5B0312BB9FA09EA87A0 +9A18B9B5E0DA687BAB199267EC6668094D1FA853632DE7124CEAB78BC994D6BF +FD8BB4B920B89A68DC0D60BB73AFED84D38925B4E8C4D4E239080FB47F44979B +7660A9C57F1CBCE1AD69AE3E7782796EE69BC910251DF8406ACF78CDED5224AA +B13F1E17BB454BD4B5AAAF0143570E5FB2236DD096A2607B8D24EE238110486A +0759B4AA276E3B5AE6BCCD2299EF7EC5C0ADB9E3A838DF0A0541FC56F62684E2 +F165BDE1EEC719A7DD44D7251B0D28C63304BA3758C76B1FACD54A4E73C9B32E +A49366083906EF8927B6463215012B3927CB643C0292688601AF2348D62292CD +5E20110FDD05739D7EC6A3BD1B166DCC421ABA7901FB926025EF88A54B0E695C +38E9C894A2EF7F33E5D0304268849FC3D2F972148ED6C631EA375D67DEA1F8C3 +C44173E5FAD943C81B72D818D7202AB20B77EA0299D4FF7FBCFCD7BDB0C9655A +B02646E5BA32F6A7033BEA306BE69EDF532347B24DC7E6BA226C6005EBF841E4 +16430F8B4405B2ED05003F10080C12CC74EB07708FDBADB821BFE0DE6C8A3278 +C2349EB88B977D15639695B35C35235E00862E70D7E9BF6632E0F2E342FCEE2F +16880A993EA9BF5FE7C0220D844C5920A5428CD87225C7FF28FDCD4FB898A052 +A0B1A3CFAB8A066ABF646D25C4A9B9B7E940CC8A46D56B1235EE247C868B3040 +A83D4392DA442669E8524ED46DFAE1514F44EE67F9147F0A8ABD317CAE4BC719 +0E0E2655654FC2DF6240564952A26549517E0B48C2500F5F052CEC01B7D39950 +109BD5E58C7C0EEDCBC27CBFECE20B9291E85CC2E80A8D41D1603838C789F254 +30E5E1A7B589FD23566A12D027B5BB21A3A0D9D40CEDFD850FADBE1B12A00F10 +7E3B1011AA803A608FF37988C7DE6AC1E955C04C1D1D08ED95F1C0520F069B4A +53082ACE33BDC0E2A514CB5EE0ED77A861F64C9FB4E23586A6B2ADC96B4D71A8 +CDCAF63D2BBD0D8D935025944BF6B17546BAC8DC48A5ADABC729BE68EE00509E +B084990A2BC6178A994455F9286937DAC6EEE7583FC13EA26F504E6E66142EF7 +09DD59E6A9FCA4713E92EDE9E4D415872F1FFE2F5AC5EE285E03B895E81476B8 +1871ECAC61DD555266C1D037B1BA381D130F9E21F39849DC022ABE678A7F2EA9 +1823352AA456085C98292DED9FAF082E89FC52487BD40ECE92476CE768166431 +92F6AB4CC2844565A01B9B8C16ED8FB1B59A70832339A063C5D408C566DCEA53 +306C334A0F24E5159870B2F8D999576D4A88AB3C92E5990D22AADFF62906DD21 +A7C173D5BC35A4B35017EE8F7EB0EEC8BEC6A54E1FBF1956A3650BD13560818F +75699A8846A45307AC3C6AC39E7147844D098E2011490315DF92E188503C59BF +525AA6C11A07F3FF28D346BF0B37C891A8CB5DB768B20E954466C7032C6FD35E +EC745501DEECE92659642EAE17B656DEC9A19E38AE2F07471333774B9BFEC3B6 +2AEF7077B8FADB994B61C91C7C48E51FC3EC6CE490A71C82A089CD2DF1094C39 +8E652DD1F7BCB905A78F5F4350AB844877956B837795893A9D08EB5EB02F0881 +94A0670ED2AA24FE20349DADA8B51874773167DB9A897BAB5BD85ED5F38ABE6F +A6D4AC4E4347E745919A78E8AC8781C586646D0C4195ADCA042A4F4DA6F4E253 +8B208E59816B15DAD0C761F0490CD3CC898BBA3647C9EB7B316717EE859DFCBB +C1CBCC5CC82ED5039851E8BB34D4F7BA55E5268D7DC5010F985B12D28C94EABA +89EDA7AD3F181889DD8BC773044C49C8DD6D3484ED6ABB5E15F4DF7898D01CFB +EEE92BA769DC7E4CD4A8FC8BCF5450624F83FABF5CA9C211B89490C5C7222AB2 +3779526A71526361ED2C379ADCA9DBFA54708645485ACEE6918CFEB08A3B932F +B2070F32ECE42722897C1AD9E6A375D7F789809B4AC77CDE3467108292EC20A3 +2C93477AE6756D18A0F6E3812E43BD6B5BC69540904C2AA56825D73500F90AFD +5F008EDF78BC053A65AE1FF5A96C70431D39319341D0F40BE6863DF9377D1E52 +FF3322E00CE6B5407E1085B1D5104903AA396FC8BFBADBAD045C005A89B2C0DD +DAF6263FAB5B49AEECE01384C811D7CD6F47543077A1A13C521D64E30219493B +2268F34FD8F101329AC69D417756B409A0E3710FCF1FD58AE0BF6E031ADD737A +7EF145530CBB631666A10C443D004B7A5B15B913A00461E8A77CC311A899BE4D +1BCF43FC73C175F2A6CE589D68CA1D4231D942499D5874C9CA6B18D5DCAE8691 +25C8F66CF10B72F697410AFBF10B097312CE5B3F3A1DF658E60183C6B41D526D +99AA575525B01BBC8C7FA511AC55EF418D623CFB9BDA56CF7A0A6D9631A8068A +8D64EAF69D686195515A8BB77FE8832DFC42AF6120FBCE8EE04C0AA8BBE76698 +AA6E14AB126F943975648593D61B43AC7CF02F70CC7E73AF153DB464621608E5 +34EA5FFF06BDBABFD479E76EF16C20B6B2708BC6975A0916AAAC519852ED02CD +5A0263E10A1E86A3B24E090B54A955B059E1CA5D7C777FE5B14C7533E0D25D1C +DA7C18633AA579BAAF156FA2B70100CDA3A4DC3CC1872C27D7B74DB62AC8AC2B +89436B90799506697631BDC3B5046645E447542243FF308F1292043098AEBD4A +582D640FA44E67257672F6D970C895BDC9A4D76F64A401EA9546B513B07DBF4F +E9BE239D2CAEBA74AFB0478BF80B60C49E279642C58F8DE0735F63CC8A90417E +00453A7C7894EDD18CE46DB581AC7B31B200C195FCDD345D4E041CB612C41F63 +0A9E92D85A844FA6FBB87FD97F8F73719BFD12A0D8EBD1DF7DFF8306DEC16839 +B837E406959906450EDF9EF40CD44A3AD473C97ADE2C01AA359E228F9826B0C6 +C5C1D434F1465203E0729A996DE29F3BCC92C87FB454329422931B9207F736C0 +5D5E97514792F2083FD9F1525E9EF04DC053B789B421F3E1AEB49D686392777B +EBC0E947BB46EAA99BB5B7AC7C18F14B69D8610C8C79B65FA060ACF860AD4A85 +D0A7739496E6DC26B83665DB7108F24530D6F4A1A61CAC9C73600E741EF36EC7 +7EC5B8A90DA28F20DC78EAC9DEA0FE09766DC2F366F035471E74DF28FE5F0ADA +A9DC604FD782CB0E49590F55DFE398DFA307BA722C9D6FB394CBFA74093A9135 +B8FA32034AC05E82B513763721F72F6A4B7C0CD71E40BC5F39EB014512A973FB +61CC99399D73062A1BCEB2E5181E58012782419ED04275BF52E0644C8B047D51 +90A9F8D14BB550C9275957C9B42D776A4A6580C29F66C1D558BD532303DD8F6B +355E4589C383B16C30C4366584C985E2EF67BF9E4ED2E43C394C721C08256F8E +BB96D01319C9249E4DF21EC9EB11A5502614B3AB1FA3E88E78F574F24F9BB0D8 +CAA6A831219E22B4BEB5565D90F47F65063714F1E1072AE989D20E3322A07658 +9005E26EBA791BE0EBECCBA007948EA225EE84D7B17CD57370CB7E81E20CBFA7 +C108A591743A35470E9B75E228EA751EC4EF6FDC8E7FE4AA30CCF26ECD0D9201 +288A20AE15E48B02416A424AF491DB60594B63C2B3B58E51A0E68B8C19685FC2 +ED2E9CE4DDCE32F69C5223935CAA058FBB23FBCD1226095D1B08C611A8D20455 +3305D203E4C7E164F6D2F755789FCA26D9FE576300D0D67FD60C7A5518287D38 +E921A0FA64A5323033B7932FE2E4F2C611D57CCB21E013F5C68BDC1F9384D359 +F69A9FA143D949DE07F815CEE5C2BE175C21EFE7F4972CCE0CB5ECBE15D1F935 +07B74E4D562153E20034E9963772452873FF6640DEBDACC45D478107E1F63DE6 +2849DC422AE297F9AF9BD5D693F67E94075C78ADF063F15E1805CC6E7613DD44 +4F737BAE5458383BF6CE214B25B597B94015052E1762197A486DF662694150FE +5861DB71C9B1F7C8363ED993D7B07D03A9A7820A3C7CB15B22921C618C5A7597 +C0C426049928B01E78C6FCB7776D3BB98787A498BE501A394771789187A40AFC +F4C8DB01466F1F45B7C6B8FB1CE812FE29544F3242FBADF7947D43C5321EEEC1 +661568BD694E7EE8D3FB402C45DD5329CEB27FA083A633E9AD0C8AA34B5C8E46 +3ED00B2B20606532FE953B68CBAD741CABD3F7D672CD605F5E64FCB1595453C6 +A36EFDC1C9E98FF3B2093CAE8D3961BFF4E005CFF5CBD5601D2EB5536B9B6CEA +139EFFE8E9B2D4DEE00EFC3F842097050B18031420D76E5AFEE2B8B11E09EDBE +29E6FF5974CA3320141D185AE1F530168F2CB0C1C888B7D26324AD488FF12DA0 +431080FFB11CFD5861E618A7B65A5AE1D1B56D26AD7CE67FE12480B601E4B6FF +4237E34F2D3E727113B123A27009A4C81693B0AA77D121F3831FC72C9D5871DB +94BA60B6A0105618DBD146B6AF1DA4DF3CE38296CE453A05DD95ED9694F57009 +83C2678269CB44118A8C7B343F4797C370F5656AE36FEF1C886BF01C4EA883FB +0C42F916AFAF34407846E2AA43A3522EFC994E554D6D65FC0726B1F11F12DE77 +4C78A0BAF54DDC1C9904846736E274007D95BDB876813FF180704CA8EAA734DB +FA15E13657059E50CF9A7551968478A76740A562AA711180FE6D9F373C3401AB +BC6077CDE48C9BF0EEC50627FD195FBBEE1D90B03C9F7F767AA93E97FD05A1BE +ED5A5B069C19403A0E992A7886F45D4C06EA8546AE507B0299436932F2AD0478 +1E379A14CEAB5ADDA6A8626E6DF684070B79BA96B2083B410A02989C9EF5AEF6 +F7A804382F47D5A7B66B496DFDAD64AC9D6086F92CC88190B2307A4B5E3E71D0 +35E24506FDD43EF2562AB4867357801E5B5BB6AA64ACE2DCF1B97B817F789E15 +8973096781509A4058F689A98D1B05ADBC207645FF13A0825995996402D5EA00 +B847BA18818498028B02AC410BFD5B3414272C6D34DFBA9CDA4AB9930BDF9506 +B91857E1F4A5049F4B05E172009703746F067DB51D4E997F3EDF5C075EE127E6 +18E8EE032C2E83ECD277079DA1941E31D952379C7D63918EE958D6E25AAEABBA +06CFA50DC26AED0A2E6E3566EA97E0F21CB454EDED957119EA0A8FADFF8B368D +948F218F20C4027148117C60D3B4BC939A642CD738C876A0D92541DAC80A499E +248DB1E598754E33BACA4615F42D6397260E70AAB376943110888E1D69303AA9 +71D381EAC2ABB156E11680D550B4F54008A7938F38D6FF5A50817E55DE259420 +29AAC7E7123D75292E73235B46A3CF5A4C28365E82EA7D8CA4EB509A283C37F0 +35A6F52AD84DD677A24397048D047529E11253385E15C2FF341B7DE707ACC496 +F0A2686CFF1B5CEA08A96D28659800ED072CC2D9C79CBB1ADDE8F7394C2F67F1 +8905D68A157A1302EA67D781351C78DC34CB2D1AD93C6C2DBD48A3A53DC61D5E +F9E6A0CFF942D6D9DE3BED7BE729C2CA6190F64A0B0EA8493EC7645531B7CA41 +0747884902D1CD0298B1DCAFD5CF1F66A5A3AD0436FFEDD294C72A0B0EE7A5C3 +90522F83DFD8481A0863E3F07A4714791641E56D5E9369007DBC4491306DFE61 +2047BEFF64616B48EF99038FDF956C03FF681FD3B7C1CB8C6606E39DE034E294 +04DFBA771187CA8695B9F330278FEC2EAE9F45478D2C1067CF1106DEBC98A274 +5EDCF9558BE466971A70E843CB54A2BC53E862EF20D256C92401CD94B3BE8A88 +BAA77244D0B40764C8D8077EA8EC43BCFD0ED135EF8C88F1B9AC84415247B838 +5F4F709AE4DF8A2DA0135E8DF48B8AEB925DFE31A01203A33CB1B74A4535F408 +A8ADC7F972D5244C2AA189644C106465D2E6C2C48EA732E7BA43E7067710928B +B423C4432713D799C40EC86EF024F092F8229CAC49B86ABEC80250787F487BD4 +BBF8314D2F4F9F539117710BC6AB068759C16F1DB4974827282BE302A7313685 +16BBF11D450E360B5B7C5B6A75A4CD29B666CE4ECBB1FC1CA2B99FAE83F75812 +E61344B81C1FA5BA514BD5327E69C9DCEB4BD4AB758FAAF50DF78DD4BBEC06CE +EFF5CEB85A11A42EE3C778B7EADC94793550EB108517AD41A4598ACCFA639E40 +D39EFBCB19C8CCA7DA731C897ED64471FBEC17E91CFD91BED8181FB42DFD3778 +9E0C6B93D8AA7E26200711586603A656D57B0F558DF3796DE457D400B6908D67 +479FFE7AC76B66DCC4FA1543B5802017CD00D4219DF00A0B93D8A4C2C3831751 +BE64E87FA5E64C6B248A6FE29A67DC089B61574B0ABB2D4335455C9427F39AD2 +77582C61F93397A409EBA5342DD249087364DE2A572A1E85E1FD719557551582 +91119BB95610F8BEBB846136D9C1F061FCA81D9312A96688067E4E4521715605 +F22499DD4DACCF31B2CEDD089B492C1AD8A932F8F317580189F9405D1411E119 +7322A61C34D8C28366732D159EC649921DD30D45104C6CE3545FD04C37F56171 +0F31AD0166C87B3044A9FB57CF1022D61426353D4EB90092AED1787B93128566 +CD834695773A27D6824D0A27D4DE5AB3F4F7B4E2033AD18B18382515EBB8EC8F +1B14C8CB4D16223297C948279967D5260373EAEE3115BDF4879490C057A28955 +2D61B67A36F7C36C22D4C1809AA0C212B7C5818749B8A05E5C7C29BED844424B +A5D6B567BCE77F47F68948E4A1724BED4905ED6242C25B4D340BB286380E27CF +7EAE415F40B6CAA65CED05B83247C1D7E7E7FB13840B032D1B6417D387DFFCE3 +1FDC074917C02C9050E30FD3515F868D14E78EA6DD1774D53D536CBBEC587F08 +7ACCD9EF5D0AB6783D7C5ADE6EB45635BF621FAB33A2C96146F66269A61FFF79 +7EE8CB26F53AE36DDD6B5A0F5DFE4623CFFA95C62022DF4C5F7DDD07BE2094F1 +1B52D753D7BCC7F2D027C712549BA2573A9816DF204C69157130413ABA61432E +D5FE2C8F832310FCD4F447224EA6480493C81920D2D3FC3F09864F3106B3FE3F +2A7959D486FD0399684DEA5ED991976051B3FA1EA35EBD85BDD576555B4CD7DF +260C814635BA76377BF73A1F731D3204AF925597984921257E0D96298A4A1FE9 +46B5C0EA0E2B2300BF6BBD213B90D057C1C9FE128B538F8A468599DBDFBAA75C +D772CA628843D9B974D71C54151F1F39B03ADF0526BE78C4FD254B1804797F8D +712DF3256BA1CE48C84114298044AE44974A85C4DD88EF100A343D8981F63DAE +54726ADA9541A267178BC364ADAB814B4843C220A90C0E3AC2B50340E401E79D +7EDD9C79050D36BC884EADB9A709914129412F54413EDE625AD5BD358EF2840D +B790523F2097F866B345C6C7387C96706E397F19C8AC6B97DC0E81AC5661E170 +05B7959DF77C5A6303FC519BCDB33133C1E15FED427C684AA3E6E97C37D37B7E +27F7073DE8D29D302DF8D54B85B8A15A10C5DD9351E04C46BAA0609A30571B95 +1679D5087B19A1FA8CF0521D7FA06064919E836D4863D78782142F19C026C89F +E4A4D63DB8616B2D0F1803C06F1E5BAAC418E60851519F5A26E128ADAEF6539F +BB81B33A953E7D2EDD4876380897CC5005C5A6446EBD2048467BFC12905A7E91 +0B8EFD5556FC65611B041949CB215856D8C2BA72B610BF430528F83A65511E8C +9AC94517F552BE2B360026478A3FF288671E84F10717CE62FB5532805BB08995 +635CC573539FB78027C7FCD047DD3A114A805AC8DB17CEE18A2F877E9994A012 +E50A6C1AD66644E4C9681B0140194236D4ACA0A3373BACB09A8697703EEEDFC7 +8FA20135C17B1ABA2FD0070181E70B4E7664F3F3D8E101BFE84E017B1FB63878 +41282D114DEB771235694F26D7DE9E56E9791A82AC31EC52773F803B564A28AB +321848A9A5618D672EEE376898CE5E8F1041CE60623AF6D9E93D1D0656B0C5DA +537134D9DA2B1695EA902D32EAEB3C052122044F4BAC000C7E9D08281C425F6D +65F6C9798F355209DB4E064F70A29247785CDA9E3EB4DCDF8F8EBA3692165CB3 +BA213D93850DE5BFF53C5B7F8FDB6317C85022DF1FE61D737D9386BA33C81123 +2A178503ACB370A73D47EAE72AF806F919117FAD1397E06411F6A38C35B41911 +A2A29A108C2727A94AA062E460C9DF98285C1E9F18C11E46E9ED356A57D86E09 +B2B354741C5EB89D030373D05F8BC428633B2B3B34E576129AA4E00B747D5D64 +92EE15C465FEDA8CDD7198B281921F68A358220C1544A4E32AF3F46A14B878FA +66C3A72D2099264FED218675AF7514DE124379D744C9ABFCD095A180CDFEAC7B +55CD99B8AC31E70F5025FFAA3AEFDCA59230511E5169E869321A10735C150F8E +20CE65284CE384EBCDF8ED5625FBE021C06881474FDB5CA6E35A93DEDAA4994D +4583F593618B783A04B4F570F4A49F7A1B5D71A973494A9A1847D31AAF4EDAA0 +32AB019FC8402204E5ADE1F6A4779BD194A988E12A5984865A01A8B3803F11B2 +443FD579D4526DF6367091BD71D7EAAA2ABCD4348EE7EB8A9297BE2EFDCFA98F +DBF753CE4F12E85C8ACC4E08FF3769A7A3F726938E0E55F5A3A9CE490D7F5431 +367968C741B2D995B9E85B3EC55A82B1296025FF5C21E1983E472EA337E7ABBA +72DF1EC1DA965F7DB1C86CB47681C1081133343B11DBEE24C85468ADFF83471A +2CAB807668E6062768887BFF51D8FF80EFD05D60970C54A2E5537C92FFB9B22D +3FE513AC19802FDE6CC580706E32055BB984A519FCED4432F14136C87737EE09 +FFC9C480F1D18587850120D87DCB4B7D3A917F82CEB781456CB15B9E661F5040 +4AE387D7CD536748AEABB810398B2DE36AA14D5DB5CFA46AF7EBD109685E0DBB +34DC36E2C71A84CC32ED67DECC9E14B9D1D175A82E5F71285938C2247D1DA758 +06C57A01BD59DCFAF05348AB71C019B791B1FFDD106139AAE43D89E718858A4B +4C31FEF996236826907BB9EC5842625AE120335B1C6FF4C8F68FE7BF748373F5 +2CB3EECA756C9CA0151D91FD2EBE7B6DA5E887E235DC6D6B34CD3FA42F8026AA +30B9C7BF0F5A2B991C1F4C0FC1D675E7ACECAFACCC07F08F585C76A18397CCB4 +1EE5B17DC4B866AEC1F5284361EA5C65E0BE363CFCE3F14B81B7E44090219538 +43BC367204A88570D920458E36614D7097DA6C015277F83476AB0D9BA3CAB2BB +F937D01957325E9442527D3892D3EFD388DDA4F7C1DCE849C6A490AD5AAA13A0 +A05F966ACFF3CCC6CCE8C08D8F384FA73A96E8799865D76340E9634D0009AB4E +C4F539A4D6EF523744294A5FF4D3B934ECDD46460DEBC6852468A85B33C53210 +F80ACD68DB86979EA360CE9DD06FC7194808D064B35933E5E046CDEE1AE18183 +31FA6A62DA4F18B3C7092234F0FFF91A2635328FAA18D250C18C688422B243EB +D5F520A6457462C393C57BA985588D0FC47F2D8E6CD2CB3D73D6C35EC6E578D8 +3254BBC4BDE31429C6706B72D518DB45D4457E8C60D0007623C520B1B7AF3A01 +A79AB2AA961FF7A5237D9993A4446FEBBD6AD51D662C9909D2D1C2D3424E9CD5 +8A170DF06CB7C304AA9774F13301495CDB010DA9218EE9A1FC05F477DE533217 +5ECC5996E4D340CBDD2DD6C53F9B8EC5E9E5300AA0D5967555B9DC31019F45CA +A702C6F0568109C55DF33FD90A0E9B8FABF3ADBB0CDC353AC7B18F4E60D88A96 +E22A85193C953042F26BAC0A4182352080D44CDFE47AB34FD7848BBBB9021EAD +82D68F7A6C6ADE8E317C8B7026043F5321475EEBE56C21EA0C6FDD617C588986 +EF0044BFA70E2FA9285625739D63C8C9DD6E2D62CB9760C62EDE6D29700BB89F +AA7FD01A9E4F3A6364B2ABCB324DA52C6A518E68F7DA61FB12878DD94F8FDBB5 +57300284213E77C7D6DA5E2BA3DE91D7A3116CE9C8A45F3F98C8DE7C7FFB5628 +D3175A93A027FCAE02A0783A09D09997F247A8923D7E7442DC3B1D259893BB6F +3D664620C9C4A2C66F6B4D1F2E9957D8C47119EBD1759B9EE6F5BE2D2FB0EC32 +EAAC468888774B8AADCB59FEF948FE89F18D2436D877718900E4F5A4B885C38E +9C9B344895FFC5F2895DC187C3481CC23F4F1B87B9FEF11AB9FEAF9498ECD126 +99A8884A86BF9C943D6E03EC4D974F030F157E387B51D360BF8C21C799DA4848 +09DDE528DBC3AF547833DCBDC7404452245E0580012542267EFF13CFC5DC8EDA +66958A20A94176552A25D024ED91C3F6FF945DECCAA7C0D71EE0591E53E75008 +0D31A8BD2D1096C8E8A7D5422595D65E1B981F14489F00D5A57C9884EBC6AB67 +2E0C5156295A3D2EA764D77CFABF2DD2A8F32F75B1A4F42BB819F3B59101EB70 +7C571225510ECA1DBAD5C618B6864BDB0FBA7C5055D2F36D5599022F2D95E340 +A0329B0C30B54CC501448AA38EDBF41E023EC8CB8451D32D392D5FAE1736ECA2 +647D6C41BCAA3BACAF8070747ACDC10B51C686534EF2CE5967A94BDA40B8AA37 +7E21DC9BA34B7156BB4310A60B179DBD4CE01E76A84F0E8F9788C356532ACA96 +9A122BD6ADC5F94FFA90A0C3A14C839727FB419A6A49B119DF87CD515CC5E85F +2A4C2CF778C5B893B8D24B966BEB874B5292C31737F985C8029CD80E1AECA3ED +AAA8EAF5DAD31C8073512D5E68511D31513B066DDBAC22B75A5C78F213DC962D +ABA84D447C6D68BE5979BD72B7D5F060F96B9B1BB07B7A0CE956BD3BDFBF116B +77CA0D330B08B4D276393CA20E16DE346AED3650EA9CF3DA4FC30061DFF8801D +0AF8C7152AADC3B929B59F328ABAC8357C09A393C33EF7BC23F36CFEDAF32024 +84CA10A51E1469915A3BFC5602565BCD3F89A875408526A90491D570090C98F3 +A2BBC8B14F8F4EEBA923594002203589879938CC709564111459A10D152C45BB +113E255C541E2CA81B683D4249C25A2C64F46E576F1037138157477B23631E5E +473DF12785547266190EE3FDEE18F2B78308E3B66996949E4482FA814CDFC92E +F6C4B5CB7FDBA581B35B5E0B8E9C93C2A0BA5E251DB94C4C56D1DD4F7FACD2BE +A8A28E20B8115309859E681D4E93148B4F09E06C5679BAB4076B808BA999FBDD +E654E96EFBC2B99FAA1D6B03D7FDBA7044B8C1B9A4EEA8E9AE07071F0218669D +42512E6BB0461118C832392814C7E8E98082FAECA79DEEC151E2E09601629A2C +95C82BEBA0B97206EB627CC80A12CB85D93145802AE6394F40E53D0BED4BBC59 +0D36545D1D272C9F9FB2DF0780674F8D4E482A85F8883516691BBBDA48F23308 +F10630CFFFFCD8CA7467AF857E5AB4C8B6DB9162C566438DC5B99301D3FDE196 +C3F84B25C8C3664A8375C41A63B2ED7F3D68E9C364CE6E5EF3E77540D8FA5D9D +D5333D3BE7705DCE754BABCDC8ADC7CE092E877AB0B202B622BAAFF4B106FC00 +11821EAC567FC09BC1A6964187419AD9993A67AC4D7C9FD56F59FD6DCFCB07CF +488016ECF192A7C21978A965D9B7DE9A3A0D9BFC4FBC575A5AC759148820876F +CF881A503EA410922B51A9DF213548943125218C779A598FC852C08098E5C3B9 +202E68950097BB1B7990A0C814899C446C332E662622B1738A49E60BA8EDAFEA +F7079B848946ECEA50EB3DD0F45994CC0C40E1FECC5372FD16D15DAEA0CF4EC7 +2142A6996B21BB26C3C0D2ED65EBBB549B3A5BB223F7558BB29FCD5A74407920 +17088857E275CBACE034358B1E6019E1EA4D99A4B5AF86420ADC8971C3265979 +5EA9FB66C49EF456D95343BCD7481056158D0215723ACB98D856242265882D07 +1073E86E684FD4AC53818058147D91E34A3354337127C6068B9C795891748532 +D9E212FF70F5FE51F71A735CDF254E9756D4925377E50203F857B32669F68E01 +5E1E588D7B392F7F68482434FF32D1075112ABD9DDA7B5548450A842B75A05C7 +8CD1061A90AC5AFE23901FDB209CFF92A9E582B78DD2BB2A9FCC9500C58C7483 +A8573576C96CF7AFE5204544D975C5D349C75E0C100D4F4C87E5C2FC2C4C2708 +211C9CF169EB2E862EBE04A30F87250440BA02BC5D419E2EB73367CACD2CC246 +B8470A0AA6859105193365520C5D9CAED67D98D634C2DFA472A78EC5BAEDDD78 +451F8146DF4C698139C7C87E0548AB705A738CC3D88D4D2E8EB12F859A319A13 +FAC067CBFF9A5382F5930E144CC97C79C1D3106204BDFEA2E668F3B78A5ADCF8 +64B925A7626E7A731603D1E0E18571D3122435BE105C2A8FC81364AACFA468B0 +2BFAC6E5725A0D8302B2384FD5A6AD833A4BA6F9A68B60F11B4268F8AAFCA77D +B1B97BF7249815B6E4747E80AF42DF6EADBE5DAADDD938425FBBA6AA29BA6162 +19349F546A26E5CAA8619677493274427DED8D06D8365C4568FDB3ED722125E1 +7F71A26172462D731D08B26826B673F61588C4C72141504A3A1ECE7C63BE260C +B181571B3B01092F8029909E2DD0AF6B569970715A10039ADA5A1E8E408C5A42 +990D9FFC95976613079B5C41FB82593B1F43C7E2B5AAC5B380061992FFE05E67 +AAC224C578AEA1E900048528175C1397C39FF257D32CD11CC5724EBA27A5FF63 +CA8DEDEFB7926E1A9484A733F3E1D1608A8E7FD468F8130290233F4843C553C9 +A9AB80FFC55DF6E961A32174D02C569CAC2EA8D8D72B9B301D87F695BDDE44AE +AF7ACBCA79A169E05D9156613E3E6A46C9B7B1DA76D3AAFA9F0E40630EF57F41 +EF285DFC9093EF3C6B50FEC74DF0B9063022F1D3C54EDACC4B7CAB6A219BC271 +7CAF4D3B0723F822184FA5A22899F2674812F54951E7072C0F8FD4256748E452 +BB8D0DF7B9D5C7C2A6803FE2796CA7F49DC97D9C2C1257C0FC7084E5D04B96C6 +D340C9839D58A3C10C9A8CED7DF1EA90CB6DE2917C62B0673AAD1053593681DE +3E0F592B5515A94B0289DAEFF215958ACE8A8552B046B18D6CFBC3498CC1C8D5 +FC3A971757DBC374C25C4856EA4340659EAF6309C38F9CFD28CBEB3A69F39E56 +A40DD0DC5DD44B1FA830973506CE0B06391DF4051E4000E0C3C26F60F872A4E6 +0BE9119C5DB19BAA854EDE7AF240AE413A197CDCE98DDC42856D4544EFBC52FF +5D6D174FB3D034CA658D8BDFCF9952924BCB88762C3E1AAD29A85E5E77654ECF +FE26903AC41E3A2B1CD3FFB89CAA132D5278332FFD46AA489D5667BBDB73CC0E +6F450052759710E8B96CEC8487EBC16ED29A41D4C5ED88212F7FB702F876C03E +481579AC5072AB64462CAA2337A720C89FE442B49D135C5935FFDA2960710E64 +8A7B80A5E71AA1A693671EF5718E7E342DD4BE71FBD10919E9A2F79FDEC33F0A +8FFF1628A6A18E8624DE0FDF484A0647DF62C7C67D1AF3959E452ADFB4493521 +DEA9C6C81FBAE5EC68379C93DE9C138E2332E7A2D9EE1953BF10AA9D1CC9CB2E +654FFF2A2514FF93478E9BB0B84A445FE6EEC8D92BC52282BA53BEA122768FCC +73DC0E6F1935A06F2E253988CA69649D0E8C39CF9AAFBD3DDD04900E2698CEE6 +221D808B958CD833EFDA976E6D7B359D8CF62428F87FB70D47CD5CCC55007212 +A9B932E5966B475FB7DEF27B4F05B3B969C100CBD384DE7DA3B1245B5BCBBF4B +F4D0496A9B0AF3E5CBA8A2D239346CA6577AD19B2C23D2E401A9CC6B2FB9DB72 +F522E2935C3B3D5AFCD18D27F94859B797473502372F188F5ECDE0E69064B6A7 +6EC311DC3A6A7FAB5691652F7C486325CB6E58BA814C8EB2861F974913D173F4 +2A429DF45B2B91BF02DA372CA190FD22FE315E877FD24E42F82CCD0570748C3B +BE64305C56E7C087D38D28147F80D93B8624E63093FDEC6E546157DE842D9021 +26FFFF44372AEEB9D0B197B668B82793D719A50AC9F819A3E4EB3C0C5BFB0C01 +29412E6876FD5A5A183A19087A65270E06AE876E28EDC8FB2C49EEA549BDAA4E +2E03BEEEA8B22C667BC6E6B193E5C914A14E09FB1103996B3CEB61F3F4549EDC +B4D9A78D7CD44A28448F24F27EBAF2C255F19097AE400B8999F080167F14CF25 +959BFCA4059FEC8B3D8B1D1EC66DD5AFF05CE758BEFAAEAE7E5D1D434F1B0B6E +1EE01D63FE8A2C2D0E1FE4A14DC35D2A63128049DE51BEF14482812ACF89E981 +E51BBB5BE0524DDB01771D7B419DADE73EF0AA7CC99591BCED208E55912AA6F4 +EB9ADE2B7D47514F7E11AEA12BAB51E93B24313A2CC4FEB226B00934A1D50CCE +21F84E7C4CA87866A3FF5C5529D73F7F848B49C9D350BE4543CEC67F1D2A0BBD +A79C21470C090659081CA4FE7DF3138ADD83C8A35DE85B44BC4DD3A955911DB4 +B78F9CA3F674D36FC9D7CEBD66A571F73D1ABD57A2208706ADCA285E4483A95A +73F1A9D762872F0AC7AC808E59F69D1E273C046940D642F92E8E6D37D08CE03B +608FFE19F882B40AAE1DB3F5355F6C2192EDB927935514794BB8DD035C072BC3 +A9793A31480B7A761144B77777EC03357A58D90A7E08B0EC9EC90F0F2D67844B +0E6AF90CEDAA04CCECAC1EA93988322CD7543E57DB0C763F68528C7171F264A7 +D1D016B1470DAB2747EB3D27BBB448E040198A43C67AFD52CF31B801C6A838C2 +A720B7A819B534ED283CA362CE12EED34B31F32BDBD521ECF71DA160578602FD +ED11D7B60D313A5A613ED89ED8BE69F5C2F1ABD04331A2E1D8ADA570FF96A5C9 +C6703EC7420F8EC43598E81691D291F193AD4F95CBF82EF712EC190A898CFDE4 +72B0388BBD08BC03CBD3DDA0648E3E0A0DE0FDE15739060FDB10629D78457645 +1D32ADCC813FD66FDDFC9EE79FA705B274BCD3656E745B1CADC2A1799BB8430F +7C34ADA3E81DF1777D175B3BFA199E092B3CB5517EA3D41BE449BEB1E5BABB65 +F42069121C1014B05D9D2B90DB93296183CC7FAF597D88329918BDFDC283F3A7 +CA2A2BFC573F934E576B438761E75487377CD4BD09085158ABF569C0A4BC209B +9952457D15BFB036BD0BBE942E10A82A89E4D012AB1B72A4A59A18A55E5EDFCC +CC9DE3382ED090B1F3CC5D8EE59900828175C92E7C5410631A804FEC75603CFC +F1033827927E485F6236B227E9D54D29CE5D2A3009B88A3D2ACD9430FD5E3AC2 +E321581FC966FD628A099EB795A4D1230C0F57F78E8F619A6D4BE8F328886E3D +AFA2C1CA5B009075056F92E55CBF2B55B59EBE68859B7584CB852C3924095559 +B255ADFFD79AFA6BDF6D68838AC48DE5B79A277932244DEF5306E4A47DD0325D +5DBA34765AE92F8094C11FCDA5646747105131838106D9C1D79714F9576C8F28 +FC6E7D0BD07254B1D29FDA5E4FE5E2F7FFD1A56D41435AE2F6DDC1970C9A89BC +930E99448B124112B488AAFBF01DB6EC917734BBBC7376D6EF09DC05EB283A36 +C2B8CA16F4E3718C00311C64DE6A03682E84845CC57BAD00F9C4F5D85BBF6D46 +093A22DD9DF218019573415B8371AF1DEF2770CEE7FADE0FA43DDC61AF7858A0 +ED625FACF6FB35EFC5968F5FA0D2FA2A8961CCF36FED33CE945A1F7265AAA702 +F33CB51F651600EBAF3DE4F3A2326BC38E48F8A6762DBC107DFA4F5C5BFBE52D +CB3D2A1AC15DAA0564A465FC1BAE1202C3DF85AD87832C27F4440C276D11BAE7 +7B591FECAE5171DAA8C68DFBBC2AB09312BBF1B4D2F43A59A80DBF22AFECC1B6 +3B7D57C3DD4C00B7ECC587F40F5211709340A56FEC69DB55DF1B5E8F78790722 +A0D712FDF782AEFA64A7429262E976AB9057466C549D8C05178AD9545ED838B6 +CB5BAA750B223DB6DA2C137E4EC91A1D3750C09D56BEFD4EF0760113ACABC2E1 +BC2A833994518E00054595B787195547424C8D96351C86113962E507560A92FE +D7813AA3CB95AF370975998ADF00AA0FD5F9274976B119805AC287BBBAF27E25 +91913C949BEBA56F72A7B6D01789313B63DD404F575BBC1D2336BB81BD1BE035 +F54116DC276E02E0F70D6C1BD3FADFBC43552E07F39758D5E2BFD423F3A06341 +524468B77DC403BD7D6913DB11284EBD1AF581F391B9D4CD599A0DBA01E0907D +4E211BC887BD450FF7FC5E0670215037AEFEEFECDBC096A4141764DF63D97C1B +3A77F3DFC74A0325937A5D6A089C8127B511527D2D5FA186FB762229809B7BA1 +E49BCAD0B9D7F610FBB3FC37AC5021250FBD022BE60A841FB4FAA33C359A4268 +2F7C9E75F3E72DC43D2DD07FA94ACE36FB9A774F2E076563048068D6127BC83D +CDD9C71A01C1D7F5C345741C64F2AE3F891914088A1F1E5CD29F6CE3D5B54F7E +0C8407DE6E8673F1AC639E20178DBDFFFF951FF36FA22AB4ABF6A99EAD86A733 +2D50D2D127B66F5155BE6EFEBBCE178C529CD741BC5B2630EA89B7A18C0B084C +07AA4DDD7DFAA145FD912C380809D194DB1475B00798CC816F91747FE19C062C +9B3BF4C93C3A7B33B60C6F143A67A877946F9C01B9CC781DFDBA109101079CB4 +FB585C978B17707F76E1DBE44201A0AA388B0237BAC3FCFDDE2A714BE0B80BA2 +FE71AF9739BDB8DA3A066B5ECE33BA7584924EEDAFE2FE28D5D984B9243DEA82 +0A92529A6DACB90EBE1F1BA717E80C6F25167C5077E82B23A1B66FF964736B51 +57E1359B9EE4189E21A889AD4EA99542612C88B6065F294C4937B816B7D3324F +F42ECE164FEE84C8A6E31D0F16811D1FFF66FAA889C28240669A8CC40C84C547 +EF4CE28DBD4CF4FE5A93C70C707894EE6B6A85CB7D017BD2ECC11434319D2AB6 +AFE26BC9BE7150F6E8BE52E3A925DC06D4A309EE9BA0432935B095B84369AAAF +CE1C65F9E73D867235313C9809E2B6733ABCB79BA9762FA1215BB41388854ACD +66E5FDD73927ECBBB55C485C88BB540470C6EF6699C8C9D83EDCCCD207780DF3 +84A4EF2073813C676704C6F0C1287733007F7E05DF0FDC445B22B0315ACD75B7 +9AF8B5471A1EE52458A1E34CAAC8C78E8A01B7224BFE7774314736EC8086D7A9 +2B3A4A95C0D4ACFE4778E4827062FFDFC4A11ADC64E85722F459F9C21B4D6532 +5F7A90E3A68F55F9F4712CB1BC050DE2A04F9F49D84D4675FA5C5A0C6C747CF5 +55AD0A63587BF4BBFCF882201038DFAF873F155FD375B424191EA3FC0017B54F +81371A667B8746EE18B794186C109949289764A353E54118448F285BAE6F364D +39FDCE512FF45982FB9DE54FB2B13702ECEE078C0431B769DF0B42ADDE5D64A0 +A3B9B94CDEFF9CEE74B0B48E9E380324B936C6ABDB7F80503AA787200D09D0F1 +07359242E0EC0566E9DECEFC02898566C5457293E1FDA6AA2CF780DADBD2FEDB +1610246EEDE4BD00C6B7284DF3794711E6D6EEC64AF3F61F5F45A468E400E743 +C49B543731414124EEACBD9264C76A6A58ABEC3F7292968695617E4B4F4436DC +EA3C75B8BCFC570AF2A942769C4972B6B8A4BCABB2F6695B1E045249ECC4181C +8EE6B49C53B38117755B95F5843A712B47B6098339C5AB733807CCEC17575439 +78CCBCBBF9D852C36062A586DB00A5EC089AF853289A9F089A08F2C7B8285844 +B2A28E5B6E4367A228E84F2A1C72B1FD37480DDFFCD28585A24D7630FA56AB02 +222A5F764029C82DD67F10986E77865AF507A2BBDA4B3D4D54E20C00816B8202 +F2EDF2A828528DD170FB0ECC605EC794EBA4E7A78B31F4A564FE4994C2B65752 +820A49B51196EB4192CA4B777D675DE57A00D23F4BEEDED6197CE8BBF6E01F26 +B045D4252CB302C57C0D076294E407A823BEB4FD7305C230D084CF7FBE7BF161 +1DE690D4765927D2B95DBEE0A1D678C4DC8F2BEDF9CB96C5945A525BCBB9F9A7 +E36D2FEB22A089E3C8A5792DB5DCA7FB46BB78DD719DED2F2B8A5314658549E8 +20F20D49296AD845FF45EC0F4395E1553DE991B2E40F2F267901CC3B3344660D +00A4C51870835CF4A2611979826825F8EF045FCDF258353622B352C119D680FF +857AD6DBCF66BCE00060DFA1B32A722AAC5ADF0323ED78B269EB284A4223A9BF +896CDF2307259D21ACC80CE4E6D43736317330D00867C128D2CDFDCE2226BBD8 +1626137CFFD53D7C37946BDA99FD955ED54E25EF71C1F19CB4BEB4D3B0099E86 +42622EEB4C57E9C3D1BBAD07FDEFD3C3DA91A66FF9808F13EB4B7895CB2BFE2D +00A238EA7240032300BF6DA66217A55C0D47344738EA21F9081FF597413C79BE +4DBDEEAC2C93EFCBB4680EE2BEEBFC14033CC5DE5EB86D5D0E4DA274BED45366 +283BFBF9D937144CB903CCE1003325BED0EC8CD03D250B8666BFF9B33983B670 +20ED1995D24E63 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -5155,20 +5182,21 @@ rf /Fj 197[33 58[{}1 119.552 /CMMI12 rf /Fk 135[85 2[90 /CMSY10 rf /Fm 134[71 71 97 71 75 52 53 55 1[75 67 75 112 37 2[37 75 67 41 61 75 60 75 65 9[139 1[103 1[75 100 3[105 128 81 2[50 105 106 85 88 103 97 96 102 6[37 -4[67 67 67 67 67 2[37 1[37 44[{}46 119.552 /CMBX12 rf -/Fn 129[48 48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 -48 48 48 48 48 48 48 48 48 48 48 48 48 48 1[48 1[48 48 -48 1[48 3[48 48 48 48 48 48 48 48 48 48 48 1[48 48 48 -48 48 48 48 48 48 48 48 48 48 48 1[48 1[48 48 1[48 2[48 -48 48 48 48 48 48 1[48 48 48 48 2[48 48 48 48 33[{}78 -90.9091 /CMTT10 rf /Fo 131[91 45 40 48 48 66 48 51 35 -36 36 48 51 45 51 76 25 48 28 25 51 45 28 40 51 40 51 -45 25 2[25 45 25 56 68 68 93 68 68 66 51 67 71 62 71 -68 83 57 71 47 33 68 71 59 62 69 66 64 68 5[25 25 45 -45 45 45 45 45 45 45 45 45 45 25 30 25 2[35 35 25 4[45 -20[51 51 53 11[{}81 90.9091 /CMR10 rf /Fp 134[102 4[75 -76 79 3[108 1[54 2[54 2[59 88 108 86 108 94 11[149 2[144 -3[151 1[116 2[72 1[152 71[{}19 172.154 /CMBX12 rf end +3[67 67 67 67 67 67 2[37 1[37 44[{}47 119.552 /CMBX12 +rf /Fn 129[48 48 1[48 48 48 48 48 48 48 48 48 48 48 48 +48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 1[48 1[48 +48 48 1[48 3[48 48 48 48 48 48 48 48 48 48 48 1[48 48 +48 48 48 48 48 48 48 48 48 48 48 48 48 48 1[48 48 1[48 +1[48 48 48 48 48 48 48 48 1[48 48 48 48 2[48 48 48 48 +33[{}80 90.9091 /CMTT10 rf /Fo 131[91 45 40 48 48 66 +48 51 35 36 36 48 51 45 51 76 25 48 28 25 51 45 28 40 +51 40 51 45 25 2[25 45 25 56 68 68 93 68 68 66 51 67 +71 62 71 68 83 57 71 47 33 68 71 59 62 69 66 64 68 5[25 +25 45 45 45 45 45 45 45 45 45 45 45 25 30 25 2[35 35 +25 4[45 19[76 51 51 53 11[{}82 90.9091 /CMR10 rf /Fp +134[102 4[75 76 79 3[108 1[54 2[54 2[59 88 108 86 108 +94 11[149 2[144 3[151 1[116 2[72 1[152 71[{}19 172.154 +/CMBX12 rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi @@ -5184,30 +5212,30 @@ ifelse %%Page: 1 1 TeXDict begin 1 0 bop 150 1318 a Fp(GNU)65 b(Readline)g(Library)g(User) g(In)-5 b(terface)p 150 1418 3600 34 v 1873 1515 a Fo(Edition)30 -b(8.1,)i(for)e Fn(Readline)e(Library)h Fo(V)-8 b(ersion)31 -b(8.1.)3217 1623 y(Octob)s(er)f(2020)150 4927 y Fm(Chet)45 -b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46 b(Reserv)l(e)g(Univ)l -(ersit)l(y)150 5068 y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11 -b(ree)45 b(Soft)l(w)l(are)h(F)-11 b(oundation)p 150 5141 -3600 17 v eop end +b(8.2,)i(for)e Fn(Readline)e(Library)h Fo(V)-8 b(ersion)31 +b(8.2.)3118 1623 y(Septem)m(b)s(er)f(2022)150 4927 y +Fm(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46 +b(Reserv)l(e)g(Univ)l(ersit)l(y)150 5068 y(Brian)f(F)-11 +b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)-11 +b(oundation)p 150 5141 3600 17 v eop end %%Page: 2 2 -TeXDict begin 2 1 bop 150 4413 a Fo(This)38 b(man)m(ual)h(describ)s(es) -f(the)h(end)f(user)g(in)m(terface)i(of)f(the)g(GNU)g(Readline)g -(Library)f(\(v)m(ersion)i(8.1,)150 4523 y(29)35 b(Octob)s(er)f(2020\),) -k(a)d(library)f(whic)m(h)g(aids)g(in)g(the)h(consistency)g(of)g(user)e -(in)m(terface)j(across)f(discrete)150 4633 y(programs)30 -b(whic)m(h)g(pro)m(vide)h(a)f(command)g(line)h(in)m(terface.)150 -4767 y(Cop)m(yrigh)m(t)602 4764 y(c)577 4767 y Fl(\015)f -Fo(1988{2020)35 b(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 -b(oundation,)31 b(Inc.)390 4902 y(P)m(ermission)21 b(is)f(gran)m(ted)h -(to)g(cop)m(y)-8 b(,)24 b(distribute)c(and/or)h(mo)s(dify)e(this)i(do)s -(cumen)m(t)f(under)f(the)390 5011 y(terms)25 b(of)h(the)f(GNU)h(F)-8 -b(ree)27 b(Do)s(cumen)m(tation)g(License,)g(V)-8 b(ersion)26 -b(1.3)g(or)f(an)m(y)h(later)g(v)m(ersion)390 5121 y(published)43 -b(b)m(y)h(the)h(F)-8 b(ree)46 b(Soft)m(w)m(are)g(F)-8 -b(oundation;)53 b(with)44 b(no)g(In)m(v)-5 b(arian)m(t)46 -b(Sections,)j(no)390 5230 y(F)-8 b(ron)m(t-Co)m(v)m(er)31 -b(T)-8 b(exts,)30 b(and)f(no)f(Bac)m(k-Co)m(v)m(er)k(T)-8 +TeXDict begin 2 1 bop 150 4413 a Fo(This)29 b(man)m(ual)g(describ)s(es) +g(the)h(end)e(user)h(in)m(terface)i(of)f(the)f(GNU)h(Readline)g +(Library)f(\(v)m(ersion)h(8.2,)h(19)150 4523 y(Septem)m(b)s(er)36 +b(2022\),)k(a)d(library)f(whic)m(h)g(aids)g(in)g(the)h(consistency)g +(of)g(user)e(in)m(terface)j(across)f(discrete)150 4633 +y(programs)30 b(whic)m(h)g(pro)m(vide)h(a)f(command)g(line)h(in)m +(terface.)150 4767 y(Cop)m(yrigh)m(t)602 4764 y(c)577 +4767 y Fl(\015)f Fo(1988{2022)35 b(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F) +-8 b(oundation,)31 b(Inc.)390 4902 y(P)m(ermission)21 +b(is)f(gran)m(ted)h(to)g(cop)m(y)-8 b(,)24 b(distribute)c(and/or)h(mo)s +(dify)e(this)i(do)s(cumen)m(t)f(under)f(the)390 5011 +y(terms)25 b(of)h(the)f(GNU)h(F)-8 b(ree)27 b(Do)s(cumen)m(tation)g +(License,)g(V)-8 b(ersion)26 b(1.3)g(or)f(an)m(y)h(later)g(v)m(ersion) +390 5121 y(published)43 b(b)m(y)h(the)h(F)-8 b(ree)46 +b(Soft)m(w)m(are)g(F)-8 b(oundation;)53 b(with)44 b(no)g(In)m(v)-5 +b(arian)m(t)46 b(Sections,)j(no)390 5230 y(F)-8 b(ron)m(t-Co)m(v)m(er) +31 b(T)-8 b(exts,)30 b(and)f(no)f(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts.)41 b(A)29 b(cop)m(y)h(of)f(the)g(license)h(is)f(included)390 5340 y(in)h(the)h(section)g(en)m(titled)h(\\GNU)f(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License".)p eop end @@ -5248,45 +5276,45 @@ b Fi(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f 39 b Fo(4)399 1773 y(1.3.2)93 b(Conditional)31 b(Init)f(Constructs)16 b Fi(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 -b Fo(12)399 1882 y(1.3.3)93 b(Sample)30 b(Init)g(File)22 +b Fo(13)399 1882 y(1.3.3)93 b(Sample)30 b(Init)g(File)22 b Fi(:)17 b(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)35 b Fo(13)275 1992 y(1.4)92 +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)35 b Fo(14)275 1992 y(1.4)92 b(Bindable)30 b(Readline)h(Commands)22 b Fi(:)15 b(:)g(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)35 b Fo(16)399 2101 +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)35 b Fo(17)399 2101 y(1.4.1)93 b(Commands)29 b(F)-8 b(or)31 b(Mo)m(ving)18 b Fi(:)f(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)31 b Fo(16)399 2211 y(1.4.2)93 b(Commands)29 b(F)-8 +(:)31 b Fo(17)399 2211 y(1.4.2)93 b(Commands)29 b(F)-8 b(or)31 b(Manipulating)g(The)f(History)f Fi(:)15 b(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Fo(17)399 +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Fo(18)399 2320 y(1.4.3)93 b(Commands)29 b(F)-8 b(or)31 b(Changing)f(T)-8 b(ext)12 b Fi(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)25 -b Fo(18)399 2430 y(1.4.4)93 b(Killing)31 b(And)e(Y)-8 +b Fo(19)399 2430 y(1.4.4)93 b(Killing)31 b(And)e(Y)-8 b(anking)13 b Fi(:)k(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)26 b Fo(20)399 2540 y(1.4.5)93 +(:)f(:)g(:)h(:)f(:)h(:)f(:)26 b Fo(21)399 2540 y(1.4.5)93 b(Sp)s(ecifying)30 b(Numeric)g(Argumen)m(ts)e Fi(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)41 b Fo(21)399 2649 +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)41 b Fo(22)399 2649 y(1.4.6)93 b(Letting)31 b(Readline)g(T)m(yp)s(e)f(F)-8 b(or)31 b(Y)-8 b(ou)22 b Fi(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)35 -b Fo(21)399 2759 y(1.4.7)93 b(Keyb)s(oard)29 b(Macros)11 +b Fo(22)399 2759 y(1.4.7)93 b(Keyb)s(oard)29 b(Macros)11 b Fi(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)24 b Fo(22)399 2868 y(1.4.8)93 +g(:)h(:)f(:)h(:)f(:)g(:)h(:)24 b Fo(23)399 2868 y(1.4.8)93 b(Some)30 b(Miscellaneous)j(Commands)16 b Fi(:)e(:)h(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)29 b Fo(22)275 2978 y(1.5)92 b(Readline)31 +(:)h(:)f(:)29 b Fo(23)275 2978 y(1.5)92 b(Readline)31 b(vi)f(Mo)s(de)10 b Fi(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)23 -b Fo(24)150 3229 y Fm(App)t(endix)44 b(A)119 b(GNU)39 +b Fo(25)150 3229 y Fm(App)t(endix)44 b(A)119 b(GNU)39 b(F)-11 b(ree)38 b(Do)t(cumen)l(tation)i(License)25 b -Fj(:)20 b(:)32 b Fm(25)p eop end +Fj(:)20 b(:)32 b Fm(26)p eop end %%Page: 1 4 TeXDict begin 1 3 bop 3705 -116 a Fo(1)150 299 y Fk(1)80 b(Command)54 b(Line)f(Editing)150 527 y Fo(This)30 b(c)m(hapter)h @@ -5393,33 +5421,33 @@ m(haracter)i(to)f(the)g(left)g(of)f(the)h(cursor.)150 (cursor.)150 1596 y Fg(C-_)e Fo(or)i Fg(C-x)e(C-u)630 1706 y Fo(Undo)k(the)h(last)g(editing)g(command.)50 b(Y)-8 b(ou)34 b(can)f(undo)g(all)h(the)f(w)m(a)m(y)i(bac)m(k)f(to)g(an)g -(empt)m(y)630 1815 y(line.)150 1977 y(\(Dep)s(ending)29 -b(on)h(y)m(our)f(con\014guration,)i(the)e Fn(Backspace)e -Fo(k)m(ey)k(b)s(e)d(set)j(to)f(delete)h(the)e(c)m(haracter)i(to)g(the) -150 2087 y(left)37 b(of)f(the)h(cursor)e(and)h(the)g -Fn(DEL)g Fo(k)m(ey)h(set)f(to)h(delete)h(the)e(c)m(haracter)i -(underneath)d(the)h(cursor,)i(lik)m(e)150 2196 y Fg(C-d)p -Fo(,)30 b(rather)g(than)g(the)h(c)m(haracter)h(to)f(the)f(left)h(of)g -(the)f(cursor.\))150 2398 y Fd(1.2.2)63 b(Readline)40 -b(Mo)m(v)m(emen)m(t)h(Commands)150 2545 y Fo(The)27 b(ab)s(o)m(v)m(e)i -(table)g(describ)s(es)e(the)g(most)i(basic)f(k)m(eystrok)m(es)h(that)f -(y)m(ou)g(need)g(in)f(order)g(to)i(do)e(editing)i(of)150 -2654 y(the)k(input)f(line.)49 b(F)-8 b(or)34 b(y)m(our)f(con)m(v)m -(enience,)j(man)m(y)d(other)g(commands)f(ha)m(v)m(e)j(b)s(een)d(added)g -(in)h(addition)150 2764 y(to)j Fg(C-b)p Fo(,)f Fg(C-f)p -Fo(,)g Fg(C-d)p Fo(,)h(and)e Fn(DEL)p Fo(.)54 b(Here)35 -b(are)g(some)h(commands)e(for)h(mo)m(ving)h(more)f(rapidly)f(ab)s(out)h -(the)150 2873 y(line.)150 3035 y Fg(C-a)336 b Fo(Mo)m(v)m(e)32 -b(to)g(the)e(start)h(of)g(the)f(line.)150 3197 y Fg(C-e)336 -b Fo(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150 -3358 y Fg(M-f)336 b Fo(Mo)m(v)m(e)32 b(forw)m(ard)e(a)h(w)m(ord,)f -(where)g(a)h(w)m(ord)f(is)g(comp)s(osed)g(of)h(letters)h(and)d(digits.) -150 3519 y Fg(M-b)336 b Fo(Mo)m(v)m(e)32 b(bac)m(kw)m(ard)f(a)g(w)m -(ord.)150 3680 y Fg(C-l)336 b Fo(Clear)31 b(the)f(screen,)h(reprin)m -(ting)f(the)h(curren)m(t)f(line)h(at)g(the)f(top.)275 -3843 y(Notice)c(ho)m(w)f Fg(C-f)e Fo(mo)m(v)m(es)j(forw)m(ard)e(a)h(c)m -(haracter,)j(while)d Fg(M-f)e Fo(mo)m(v)m(es)j(forw)m(ard)e(a)h(w)m -(ord.)39 b(It)24 b(is)h(a)g(lo)s(ose)150 3952 y(con)m(v)m(en)m(tion)32 +(empt)m(y)630 1815 y(line.)150 1977 y(\(Dep)s(ending)c(on)g(y)m(our)g +(con\014guration,)h(the)f Fn(Backspace)d Fo(k)m(ey)k(migh)m(t)g(b)s(e)e +(set)i(to)g(delete)g(the)f(c)m(haracter)150 2087 y(to)h(the)f(left)h +(of)f(the)g(cursor)f(and)h(the)g Fn(DEL)f Fo(k)m(ey)i(set)g(to)f +(delete)i(the)e(c)m(haracter)h(underneath)e(the)h(cursor,)150 +2196 y(lik)m(e)i Fg(C-d)p Fo(,)d(rather)i(than)f(the)g(c)m(haracter)i +(to)f(the)g(left)g(of)g(the)f(cursor.\))150 2398 y Fd(1.2.2)63 +b(Readline)40 b(Mo)m(v)m(emen)m(t)h(Commands)150 2545 +y Fo(The)27 b(ab)s(o)m(v)m(e)i(table)g(describ)s(es)e(the)g(most)i +(basic)f(k)m(eystrok)m(es)h(that)f(y)m(ou)g(need)g(in)f(order)g(to)i +(do)e(editing)i(of)150 2654 y(the)k(input)f(line.)49 +b(F)-8 b(or)34 b(y)m(our)f(con)m(v)m(enience,)j(man)m(y)d(other)g +(commands)f(ha)m(v)m(e)j(b)s(een)d(added)g(in)h(addition)150 +2764 y(to)j Fg(C-b)p Fo(,)f Fg(C-f)p Fo(,)g Fg(C-d)p +Fo(,)h(and)e Fn(DEL)p Fo(.)54 b(Here)35 b(are)g(some)h(commands)e(for)h +(mo)m(ving)h(more)f(rapidly)f(ab)s(out)h(the)150 2873 +y(line.)150 3035 y Fg(C-a)336 b Fo(Mo)m(v)m(e)32 b(to)g(the)e(start)h +(of)g(the)f(line.)150 3197 y Fg(C-e)336 b Fo(Mo)m(v)m(e)32 +b(to)g(the)e(end)g(of)g(the)h(line.)150 3358 y Fg(M-f)336 +b Fo(Mo)m(v)m(e)32 b(forw)m(ard)e(a)h(w)m(ord,)f(where)g(a)h(w)m(ord)f +(is)g(comp)s(osed)g(of)h(letters)h(and)d(digits.)150 +3519 y Fg(M-b)336 b Fo(Mo)m(v)m(e)32 b(bac)m(kw)m(ard)f(a)g(w)m(ord.) +150 3680 y Fg(C-l)336 b Fo(Clear)31 b(the)f(screen,)h(reprin)m(ting)f +(the)h(curren)m(t)f(line)h(at)g(the)f(top.)275 3843 y(Notice)c(ho)m(w)f +Fg(C-f)e Fo(mo)m(v)m(es)j(forw)m(ard)e(a)h(c)m(haracter,)j(while)d +Fg(M-f)e Fo(mo)m(v)m(es)j(forw)m(ard)e(a)h(w)m(ord.)39 +b(It)24 b(is)h(a)g(lo)s(ose)150 3952 y(con)m(v)m(en)m(tion)32 b(that)f(con)m(trol)g(k)m(eystrok)m(es)h(op)s(erate)e(on)g(c)m (haracters)h(while)f(meta)h(k)m(eystrok)m(es)h(op)s(erate)e(on)150 4062 y(w)m(ords.)150 4263 y Fd(1.2.3)63 b(Readline)40 @@ -5454,14 +5482,14 @@ b(is)h(the)f(list)h(of)g(commands)f(for)g(killing)h(text.)150 (of)h(the)f(curren)m(t)g(w)m(ord,)h(or,)h(if)e(b)s(et)m(w)m(een)h(w)m (ords,)g(to)g(the)630 723 y(end)j(of)g(the)h(next)f(w)m(ord.)41 b(W)-8 b(ord)30 b(b)s(oundaries)f(are)i(the)g(same)f(as)h(those)g(used) -f(b)m(y)g Fg(M-f)p Fo(.)150 881 y Fg(M-DEL)240 b Fo(Kill)31 -b(from)f(the)h(cursor)f(the)g(start)h(of)g(the)g(curren)m(t)f(w)m(ord,) -h(or,)f(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)i(the)630 -991 y(start)39 b(of)f(the)h(previous)f(w)m(ord.)64 b(W)-8 -b(ord)39 b(b)s(oundaries)e(are)i(the)f(same)h(as)g(those)f(used)g(b)m -(y)630 1100 y Fg(M-b)p Fo(.)150 1258 y Fg(C-w)336 b Fo(Kill)35 -b(from)g(the)g(cursor)f(to)i(the)f(previous)g(whitespace.)55 -b(This)34 b(is)h(di\013eren)m(t)h(than)e Fg(M-DEL)630 +f(b)m(y)g Fg(M-f)p Fo(.)150 881 y Fg(M-DEL)240 b Fo(Kill)34 +b(from)f(the)g(cursor)g(to)h(the)g(start)g(of)g(the)f(curren)m(t)g(w)m +(ord,)h(or,)h(if)e(b)s(et)m(w)m(een)h(w)m(ords,)g(to)630 +991 y(the)28 b(start)g(of)g(the)g(previous)f(w)m(ord.)39 +b(W)-8 b(ord)28 b(b)s(oundaries)e(are)i(the)g(same)g(as)g(those)g(used) +f(b)m(y)630 1100 y Fg(M-b)p Fo(.)150 1258 y Fg(C-w)336 +b Fo(Kill)35 b(from)g(the)g(cursor)f(to)i(the)f(previous)g(whitespace.) +55 b(This)34 b(is)h(di\013eren)m(t)h(than)e Fg(M-DEL)630 1367 y Fo(b)s(ecause)c(the)h(w)m(ord)f(b)s(oundaries)f(di\013er.)275 1525 y(Here)42 b(is)f(ho)m(w)h(to)g Fe(y)m(ank)47 b Fo(the)42 b(text)g(bac)m(k)h(in)m(to)f(the)g(line.)74 b(Y)-8 b(anking)43 @@ -5559,9 +5587,9 @@ y Fo(Although)f(the)g(Readline)g(library)f(comes)i(with)e(a)h(set)h(of) f(Emacs-lik)m(e)h(k)m(eybindings)f(installed)g(b)m(y)150 1896 y(default,)26 b(it)g(is)e(p)s(ossible)h(to)g(use)f(a)i(di\013eren) m(t)f(set)g(of)g(k)m(eybindings.)38 b(An)m(y)25 b(user)f(can)h -(customize)h(programs)150 2005 y(that)45 b(use)f(Readline)h(b)m(y)f -(putting)g(commands)g(in)g(an)g Fe(inputrc)49 b Fo(\014le,)g(con)m(v)m -(en)m(tionally)e(in)d(his)g(home)150 2115 y(directory)-8 +(customize)h(programs)150 2005 y(that)39 b(use)g(Readline)g(b)m(y)f +(putting)h(commands)f(in)g(an)h Fe(inputrc)k Fo(\014le,)e(con)m(v)m(en) +m(tionally)h(in)c(their)h(home)150 2115 y(directory)-8 b(.)39 b(The)23 b(name)h(of)f(this)h(\014le)f(is)g(tak)m(en)i(from)e (the)g(v)-5 b(alue)24 b(of)g(the)f(en)m(vironmen)m(t)h(v)-5 b(ariable)25 b Fn(INPUTRC)p Fo(.)150 2224 y(If)30 b(that)g(v)-5 @@ -5581,7 +5609,7 @@ b(lines)h(are)150 3322 y(ignored.)72 b(Lines)41 b(b)s(eginning)f(with)h (a)g(`)p Fn(#)p Fo(')g(are)h(commen)m(ts.)73 b(Lines)41 b(b)s(eginning)f(with)g(a)i(`)p Fn($)p Fo(')f(indicate)150 3431 y(conditional)i(constructs)e(\(see)i(Section)f(1.3.2)h -([Conditional)f(Init)f(Constructs],)j(page)f(12\).)74 +([Conditional)f(Init)f(Constructs],)j(page)f(13\).)74 b(Other)150 3541 y(lines)31 b(denote)g(v)-5 b(ariable)31 b(settings)g(and)f(k)m(ey)h(bindings.)150 3722 y(V)-8 b(ariable)32 b(Settings)630 3832 y(Y)-8 b(ou)41 b(can)g(mo)s(dify)e @@ -5608,290 +5636,371 @@ b(1.)39 b(An)m(y)25 b(other)f(v)-5 b(alue)25 b(results)f(in)g(the)g(v) eop end %%Page: 5 8 TeXDict begin 5 7 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2153 b(5)630 299 y Fn(bell-style)1110 -408 y Fo(Con)m(trols)44 b(what)g(happ)s(ens)e(when)h(Readline)i(w)m(an) -m(ts)f(to)h(ring)e(the)h(termi-)1110 518 y(nal)37 b(b)s(ell.)61 +b(Command)29 b(Line)i(Editing)2153 b(5)630 299 y Fn +(active-region-start-colo)o(r)1110 408 y Fo(A)27 b(string)f(v)-5 +b(ariable)27 b(that)g(con)m(trols)h(the)f(text)g(color)h(and)e(bac)m +(kground)g(when)1110 518 y(displa)m(ying)50 b(the)f(text)h(in)f(the)h +(activ)m(e)h(region)f(\(see)g(the)g(description)f(of)1110 +628 y Fn(enable-active-region)25 b Fo(b)s(elo)m(w\).)43 +b(This)30 b(string)h(m)m(ust)f(not)h(tak)m(e)i(up)d(an)m(y)1110 +737 y(ph)m(ysical)25 b(c)m(haracter)h(p)s(ositions)f(on)g(the)f(displa) +m(y)-8 b(,)27 b(so)e(it)g(should)f(consist)h(only)1110 +847 y(of)37 b(terminal)g(escap)s(e)g(sequences.)61 b(It)36 +b(is)h(output)g(to)g(the)g(terminal)g(b)s(efore)1110 +956 y(displa)m(ying)h(the)f(text)i(in)e(the)h(activ)m(e)h(region.)63 +b(This)37 b(v)-5 b(ariable)38 b(is)f(reset)h(to)1110 +1066 y(the)29 b(default)g(v)-5 b(alue)29 b(whenev)m(er)f(the)h +(terminal)g(t)m(yp)s(e)g(c)m(hanges.)41 b(The)28 b(default)1110 +1176 y(v)-5 b(alue)30 b(is)f(the)g(string)g(that)h(puts)e(the)i +(terminal)f(in)g(standout)g(mo)s(de,)g(as)h(ob-)1110 +1285 y(tained)40 b(from)f(the)h(terminal's)g(terminfo)g(description.)68 +b(A)40 b(sample)f(v)-5 b(alue)1110 1395 y(migh)m(t)31 +b(b)s(e)f(`)p Fn(\\e[01;33m)p Fo('.)630 1570 y Fn +(active-region-end-color)1110 1680 y Fo(A)48 b(string)g(v)-5 +b(ariable)48 b(that)h Fn(")p Fo(undo)s(es)p Fn(")d Fo(the)i(e\013ects)h +(of)f Fn(active-region-)1110 1789 y(start-color)36 b +Fo(and)i(restores)h Fn(")p Fo(normal)p Fn(")f Fo(terminal)h(displa)m(y) +g(app)s(earance)1110 1899 y(after)26 b(displa)m(ying)h(text)f(in)g(the) +g(activ)m(e)i(region.)40 b(This)25 b(string)h(m)m(ust)f(not)h(tak)m(e) +1110 2008 y(up)e(an)m(y)h(ph)m(ysical)h(c)m(haracter)h(p)s(ositions)d +(on)h(the)h(displa)m(y)-8 b(,)27 b(so)e(it)g(should)f(con-)1110 +2118 y(sist)29 b(only)h(of)f(terminal)h(escap)s(e)f(sequences.)41 +b(It)29 b(is)g(output)g(to)h(the)f(terminal)1110 2228 +y(after)36 b(displa)m(ying)g(the)g(text)h(in)e(the)h(activ)m(e)i +(region.)58 b(This)34 b(v)-5 b(ariable)37 b(is)f(re-)1110 +2337 y(set)e(to)g(the)g(default)g(v)-5 b(alue)34 b(whenev)m(er)f(the)h +(terminal)g(t)m(yp)s(e)f(c)m(hanges.)51 b(The)1110 2447 +y(default)38 b(v)-5 b(alue)39 b(is)f(the)h(string)f(that)h(restores)f +(the)h(terminal)f(from)g(stand-)1110 2556 y(out)30 b(mo)s(de,)f(as)g +(obtained)h(from)f(the)g(terminal's)h(terminfo)f(description.)41 +b(A)1110 2666 y(sample)31 b(v)-5 b(alue)30 b(migh)m(t)h(b)s(e)f(`)p +Fn(\\e[0m)p Fo('.)630 2841 y Fn(bell-style)1110 2951 +y Fo(Con)m(trols)44 b(what)g(happ)s(ens)e(when)h(Readline)i(w)m(an)m +(ts)f(to)h(ring)e(the)h(termi-)1110 3061 y(nal)37 b(b)s(ell.)61 b(If)37 b(set)h(to)g(`)p Fn(none)p Fo(',)g(Readline)g(nev)m(er)g(rings) -e(the)i(b)s(ell.)61 b(If)36 b(set)i(to)1110 628 y(`)p +e(the)i(b)s(ell.)61 b(If)36 b(set)i(to)1110 3170 y(`)p Fn(visible)p Fo(',)32 b(Readline)i(uses)f(a)g(visible)g(b)s(ell)g(if)g (one)g(is)g(a)m(v)-5 b(ailable.)51 b(If)33 b(set)g(to)1110 -737 y(`)p Fn(audible)p Fo(')j(\(the)i(default\),)i(Readline)e(attempts) -g(to)h(ring)e(the)g(terminal's)1110 847 y(b)s(ell.)630 -1005 y Fn(bind-tty-special-chars)1110 1115 y Fo(If)e(set)g(to)h(`)p +3280 y(`)p Fn(audible)p Fo(')j(\(the)i(default\),)i(Readline)e +(attempts)g(to)h(ring)e(the)g(terminal's)1110 3389 y(b)s(ell.)630 +3565 y Fn(bind-tty-special-chars)1110 3674 y Fo(If)e(set)g(to)h(`)p Fn(on)p Fo(')f(\(the)g(default\),)i(Readline)f(attempts)g(to)g(bind)d -(the)i(con)m(trol)1110 1224 y(c)m(haracters)30 b(treated)g(sp)s +(the)i(con)m(trol)1110 3784 y(c)m(haracters)30 b(treated)g(sp)s (ecially)g(b)m(y)f(the)g(k)m(ernel's)h(terminal)f(driv)m(er)g(to)h -(their)1110 1334 y(Readline)h(equiv)-5 b(alen)m(ts.)630 -1492 y Fn(blink-matching-paren)1110 1602 y Fo(If)36 b(set)g(to)h(`)p +(their)1110 3893 y(Readline)h(equiv)-5 b(alen)m(ts.)630 +4069 y Fn(blink-matching-paren)1110 4178 y Fo(If)36 b(set)g(to)h(`)p Fn(on)p Fo(',)h(Readline)f(attempts)g(to)g(brie\015y)e(mo)m(v)m(e)j -(the)f(cursor)e(to)i(an)1110 1711 y(op)s(ening)k(paren)m(thesis)h(when) +(the)f(cursor)e(to)i(an)1110 4288 y(op)s(ening)k(paren)m(thesis)h(when) f(a)h(closing)h(paren)m(thesis)e(is)h(inserted.)74 b(The)1110 -1821 y(default)31 b(is)f(`)p Fn(off)p Fo('.)630 1979 -y Fn(colored-completion-prefi)o(x)1110 2089 y Fo(If)f(set)h(to)g(`)p +4398 y(default)31 b(is)f(`)p Fn(off)p Fo('.)630 4573 +y Fn(colored-completion-prefi)o(x)1110 4682 y Fo(If)f(set)h(to)g(`)p Fn(on)p Fo(',)g(when)e(listing)i(completions,)h(Readline)f(displa)m(ys) -g(the)f(com-)1110 2198 y(mon)c(pre\014x)f(of)i(the)f(set)h(of)g(p)s +g(the)f(com-)1110 4792 y(mon)c(pre\014x)f(of)i(the)f(set)h(of)g(p)s (ossible)f(completions)h(using)f(a)h(di\013eren)m(t)g(color.)1110 -2308 y(The)39 b(color)i(de\014nitions)f(are)g(tak)m(en)h(from)f(the)g -(v)-5 b(alue)40 b(of)g(the)g Fn(LS_COLORS)1110 2418 y -Fo(en)m(vironmen)m(t)31 b(v)-5 b(ariable.)41 b(The)30 -b(default)h(is)f(`)p Fn(off)p Fo('.)630 2576 y Fn(colored-stats)1110 -2685 y Fo(If)c(set)h(to)g(`)p Fn(on)p Fo(',)h(Readline)f(displa)m(ys)g -(p)s(ossible)f(completions)h(using)f(di\013eren)m(t)1110 -2795 y(colors)40 b(to)g(indicate)g(their)f(\014le)h(t)m(yp)s(e.)67 +4902 y(The)f(color)h(de\014nitions)f(are)h(tak)m(en)g(from)f(the)g(v)-5 +b(alue)26 b(of)g(the)f Fn(LS_COLORS)e Fo(en-)1110 5011 +y(vironmen)m(t)34 b(v)-5 b(ariable.)50 b(If)33 b(there)h(is)g(a)f +(color)i(de\014nition)e(in)g Fn(LS_COLORS)e Fo(for)1110 +5121 y(the)22 b(custom)g(su\016x)f(`)p Fn(readline-colored-complet)o +(ion)o(-pre)o(fix)p Fo(',)c(Read-)1110 5230 y(line)24 +b(uses)e(this)i(color)g(for)f(the)h(common)f(pre\014x)f(instead)i(of)f +(its)h(default.)38 b(The)1110 5340 y(default)31 b(is)f(`)p +Fn(off)p Fo('.)p eop end +%%Page: 6 9 +TeXDict begin 6 8 bop 150 -116 a Fo(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2153 b(6)630 299 y Fn(colored-stats)1110 +408 y Fo(If)26 b(set)h(to)g(`)p Fn(on)p Fo(',)h(Readline)f(displa)m(ys) +g(p)s(ossible)f(completions)h(using)f(di\013eren)m(t)1110 +518 y(colors)40 b(to)g(indicate)g(their)f(\014le)h(t)m(yp)s(e.)67 b(The)38 b(color)j(de\014nitions)d(are)i(tak)m(en)1110 -2905 y(from)24 b(the)h(v)-5 b(alue)25 b(of)g(the)g Fn(LS_COLORS)d +628 y(from)24 b(the)h(v)-5 b(alue)25 b(of)g(the)g Fn(LS_COLORS)d Fo(en)m(vironmen)m(t)j(v)-5 b(ariable.)40 b(The)24 b(default)1110 -3014 y(is)30 b(`)p Fn(off)p Fo('.)630 3173 y Fn(comment-begin)1110 -3282 y Fo(The)62 b(string)g(to)h(insert)f(at)h(the)g(b)s(eginning)e(of) -h(the)h(line)f(when)g(the)1110 3392 y Fn(insert-comment)26 +737 y(is)30 b(`)p Fn(off)p Fo('.)630 925 y Fn(comment-begin)1110 +1035 y Fo(The)62 b(string)g(to)h(insert)f(at)h(the)g(b)s(eginning)e(of) +h(the)h(line)f(when)g(the)1110 1144 y Fn(insert-comment)26 b Fo(command)31 b(is)f(executed.)42 b(The)30 b(default)g(v)-5 -b(alue)31 b(is)f Fn("#")p Fo(.)630 3550 y Fn(completion-display-width) -1110 3660 y Fo(The)41 b(n)m(um)m(b)s(er)f(of)i(screen)g(columns)f(used) -g(to)h(displa)m(y)g(p)s(ossible)f(matc)m(hes)1110 3769 +b(alue)31 b(is)f Fn("#")p Fo(.)630 1332 y Fn(completion-display-width) +1110 1442 y Fo(The)41 b(n)m(um)m(b)s(er)f(of)i(screen)g(columns)f(used) +g(to)h(displa)m(y)g(p)s(ossible)f(matc)m(hes)1110 1551 y(when)28 b(p)s(erforming)g(completion.)41 b(The)29 b(v)-5 b(alue)29 b(is)g(ignored)g(if)g(it)h(is)f(less)g(than)1110 -3879 y(0)e(or)f(greater)h(than)f(the)g(terminal)h(screen)f(width.)39 +1661 y(0)e(or)f(greater)h(than)f(the)g(terminal)h(screen)f(width.)39 b(A)26 b(v)-5 b(alue)27 b(of)f(0)h(will)f(cause)1110 -3988 y(matc)m(hes)32 b(to)f(b)s(e)e(displa)m(y)m(ed)i(one)g(p)s(er)e +1771 y(matc)m(hes)32 b(to)f(b)s(e)e(displa)m(y)m(ed)i(one)g(p)s(er)e (line.)41 b(The)30 b(default)h(v)-5 b(alue)31 b(is)f(-1.)630 -4147 y Fn(completion-ignore-case)1110 4256 y Fo(If)d(set)h(to)g(`)p +1958 y Fn(completion-ignore-case)1110 2068 y Fo(If)d(set)h(to)g(`)p Fn(on)p Fo(',)g(Readline)g(p)s(erforms)e(\014lename)h(matc)m(hing)i -(and)e(completion)1110 4366 y(in)j(a)h(case-insensitiv)m(e)i(fashion.) +(and)e(completion)1110 2178 y(in)j(a)h(case-insensitiv)m(e)i(fashion.) 40 b(The)30 b(default)h(v)-5 b(alue)30 b(is)h(`)p Fn(off)p -Fo('.)630 4524 y Fn(completion-map-case)1110 4634 y Fo(If)22 +Fo('.)630 2365 y Fn(completion-map-case)1110 2475 y Fo(If)22 b(set)g(to)h(`)p Fn(on)p Fo(',)h(and)e Fe(completion-ignore-case)31 -b Fo(is)22 b(enabled,)i(Readline)f(treats)1110 4743 y(h)m(yphens)29 +b Fo(is)22 b(enabled,)i(Readline)f(treats)1110 2585 y(h)m(yphens)29 b(\(`)p Fn(-)p Fo('\))j(and)e(underscores)g(\(`)p Fn(_)p Fo('\))i(as)f(equiv)-5 b(alen)m(t)32 b(when)e(p)s(erforming)1110 -4853 y(case-insensitiv)m(e)47 b(\014lename)e(matc)m(hing)g(and)f -(completion.)85 b(The)44 b(default)1110 4963 y(v)-5 b(alue)31 -b(is)f(`)p Fn(off)p Fo('.)630 5121 y Fn(completion-prefix-displa)o -(y-le)o(ngth)1110 5230 y Fo(The)h(length)g(in)g(c)m(haracters)i(of)f +2694 y(case-insensitiv)m(e)47 b(\014lename)e(matc)m(hing)g(and)f +(completion.)85 b(The)44 b(default)1110 2804 y(v)-5 b(alue)31 +b(is)f(`)p Fn(off)p Fo('.)630 2992 y Fn(completion-prefix-displa)o +(y-le)o(ngth)1110 3101 y Fo(The)h(length)g(in)g(c)m(haracters)i(of)f (the)f(common)h(pre\014x)e(of)h(a)h(list)g(of)f(p)s(ossible)1110 -5340 y(completions)g(that)f(is)g(displa)m(y)m(ed)g(without)g(mo)s -(di\014cation.)41 b(When)29 b(set)h(to)h(a)p eop end -%%Page: 6 9 -TeXDict begin 6 8 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2153 b(6)1110 299 y(v)-5 -b(alue)26 b(greater)h(than)e(zero,)j(common)e(pre\014xes)e(longer)j -(than)e(this)g(v)-5 b(alue)27 b(are)1110 408 y(replaced)k(with)f(an)g -(ellipsis)h(when)e(displa)m(ying)i(p)s(ossible)f(completions.)630 -565 y Fn(completion-query-items)1110 675 y Fo(The)c(n)m(um)m(b)s(er)f -(of)h(p)s(ossible)g(completions)h(that)g(determines)f(when)f(the)i -(user)1110 784 y(is)43 b(ask)m(ed)g(whether)f(the)g(list)h(of)g(p)s -(ossibilities)g(should)f(b)s(e)g(displa)m(y)m(ed.)77 -b(If)1110 894 y(the)29 b(n)m(um)m(b)s(er)f(of)h(p)s(ossible)g -(completions)h(is)f(greater)h(than)f(or)g(equal)g(to)h(this)1110 -1003 y(v)-5 b(alue,)45 b(Readline)e(will)f(ask)g(whether)f(or)h(not)g -(the)g(user)f(wishes)g(to)i(view)1110 1113 y(them;)33 -b(otherwise,)f(they)g(are)g(simply)g(listed.)45 b(This)31 -b(v)-5 b(ariable)33 b(m)m(ust)e(b)s(e)g(set)1110 1223 -y(to)39 b(an)f(in)m(teger)i(v)-5 b(alue)39 b(greater)g(than)f(or)h -(equal)g(to)g(0.)65 b(A)38 b(negativ)m(e)i(v)-5 b(alue)1110 -1332 y(means)30 b(Readline)h(should)f(nev)m(er)g(ask.)41 -b(The)30 b(default)h(limit)g(is)f Fn(100)p Fo(.)630 1489 -y Fn(convert-meta)1110 1598 y Fo(If)22 b(set)g(to)h(`)p -Fn(on)p Fo(',)h(Readline)f(will)f(con)m(v)m(ert)i(c)m(haracters)f(with) -f(the)g(eigh)m(th)h(bit)f(set)1110 1708 y(to)33 b(an)e -Fh(asci)r(i)h Fo(k)m(ey)h(sequence)f(b)m(y)g(stripping)f(the)h(eigh)m -(th)h(bit)f(and)f(pre\014xing)1110 1817 y(an)24 b Fn(ESC)g -Fo(c)m(haracter,)j(con)m(v)m(erting)f(them)f(to)g(a)g(meta-pre\014xed)f -(k)m(ey)h(sequence.)1110 1927 y(The)i(default)h(v)-5 -b(alue)28 b(is)f(`)p Fn(on)p Fo(',)i(but)d(will)i(b)s(e)f(set)h(to)g(`) -p Fn(off)p Fo(')g(if)f(the)h(lo)s(cale)h(is)f(one)1110 -2037 y(that)j(con)m(tains)h(eigh)m(t-bit)g(c)m(haracters.)630 -2193 y Fn(disable-completion)1110 2303 y Fo(If)k(set)h(to)h(`)p -Fn(On)p Fo(',)g(Readline)f(will)g(inhibit)f(w)m(ord)h(completion.)60 -b(Completion)1110 2412 y(c)m(haracters)28 b(will)e(b)s(e)f(inserted)h -(in)m(to)h(the)g(line)f(as)g(if)g(they)h(had)e(b)s(een)g(mapp)s(ed)1110 -2522 y(to)31 b Fn(self-insert)p Fo(.)38 b(The)30 b(default)g(is)h(`)p -Fn(off)p Fo('.)630 2679 y Fn(echo-control-characters)1110 -2788 y Fo(When)f(set)h(to)g(`)p Fn(on)p Fo(',)f(on)g(op)s(erating)h -(systems)f(that)h(indicate)g(they)g(supp)s(ort)1110 2898 -y(it,)i(readline)e(ec)m(ho)s(es)i(a)f(c)m(haracter)h(corresp)s(onding)d -(to)j(a)f(signal)g(generated)1110 3007 y(from)e(the)g(k)m(eyb)s(oard.) -41 b(The)30 b(default)g(is)h(`)p Fn(on)p Fo('.)630 3164 -y Fn(editing-mode)1110 3273 y Fo(The)d Fn(editing-mode)e +3211 y(completions)g(that)f(is)g(displa)m(y)m(ed)g(without)g(mo)s +(di\014cation.)41 b(When)29 b(set)h(to)h(a)1110 3320 +y(v)-5 b(alue)26 b(greater)h(than)e(zero,)j(common)e(pre\014xes)e +(longer)j(than)e(this)g(v)-5 b(alue)27 b(are)1110 3430 +y(replaced)k(with)f(an)g(ellipsis)h(when)e(displa)m(ying)i(p)s(ossible) +f(completions.)630 3618 y Fn(completion-query-items)1110 +3727 y Fo(The)c(n)m(um)m(b)s(er)f(of)h(p)s(ossible)g(completions)h +(that)g(determines)f(when)f(the)i(user)1110 3837 y(is)43 +b(ask)m(ed)g(whether)f(the)g(list)h(of)g(p)s(ossibilities)g(should)f(b) +s(e)g(displa)m(y)m(ed.)77 b(If)1110 3947 y(the)29 b(n)m(um)m(b)s(er)f +(of)h(p)s(ossible)g(completions)h(is)f(greater)h(than)f(or)g(equal)g +(to)h(this)1110 4056 y(v)-5 b(alue,)45 b(Readline)e(will)f(ask)g +(whether)f(or)h(not)g(the)g(user)f(wishes)g(to)i(view)1110 +4166 y(them;)33 b(otherwise,)f(they)g(are)g(simply)g(listed.)45 +b(This)31 b(v)-5 b(ariable)33 b(m)m(ust)e(b)s(e)g(set)1110 +4275 y(to)43 b(an)e(in)m(teger)j(v)-5 b(alue)42 b(greater)h(than)f(or)g +(equal)g(to)h(zero.)76 b(A)42 b(zero)g(v)-5 b(alue)1110 +4385 y(means)40 b(Readline)h(should)f(nev)m(er)g(ask;)46 +b(negativ)m(e)d(v)-5 b(alues)41 b(are)f(treated)i(as)1110 +4495 y(zero.)g(The)29 b(default)i(limit)g(is)g Fn(100)p +Fo(.)630 4682 y Fn(convert-meta)1110 4792 y Fo(If)22 +b(set)g(to)h(`)p Fn(on)p Fo(',)h(Readline)f(will)f(con)m(v)m(ert)i(c)m +(haracters)f(with)f(the)g(eigh)m(th)h(bit)f(set)1110 +4902 y(to)33 b(an)e Fh(asci)r(i)h Fo(k)m(ey)h(sequence)f(b)m(y)g +(stripping)f(the)h(eigh)m(th)h(bit)f(and)f(pre\014xing)1110 +5011 y(an)24 b Fn(ESC)g Fo(c)m(haracter,)j(con)m(v)m(erting)f(them)f +(to)g(a)g(meta-pre\014xed)f(k)m(ey)h(sequence.)1110 5121 +y(The)i(default)h(v)-5 b(alue)28 b(is)f(`)p Fn(on)p Fo(',)i(but)d(will) +i(b)s(e)f(set)h(to)g(`)p Fn(off)p Fo(')g(if)f(the)h(lo)s(cale)h(is)f +(one)1110 5230 y(that)21 b(con)m(tains)h(eigh)m(t-bit)h(c)m(haracters.) +39 b(This)20 b(v)-5 b(ariable)21 b(is)g(dep)s(enden)m(t)f(on)h(the)1110 +5340 y Fn(LC_CTYPE)26 b Fo(lo)s(cale)31 b(category)-8 +b(,)31 b(and)d(ma)m(y)h(c)m(hange)h(if)e(the)h(lo)s(cale)h(is)f(c)m +(hanged.)p eop end +%%Page: 7 10 +TeXDict begin 7 9 bop 150 -116 a Fo(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2153 b(7)630 299 y Fn(disable-completion) +1110 408 y Fo(If)36 b(set)h(to)h(`)p Fn(On)p Fo(',)g(Readline)f(will)g +(inhibit)f(w)m(ord)h(completion.)60 b(Completion)1110 +518 y(c)m(haracters)28 b(will)e(b)s(e)f(inserted)h(in)m(to)h(the)g +(line)f(as)g(if)g(they)h(had)e(b)s(een)g(mapp)s(ed)1110 +628 y(to)31 b Fn(self-insert)p Fo(.)38 b(The)30 b(default)g(is)h(`)p +Fn(off)p Fo('.)630 774 y Fn(echo-control-characters)1110 +883 y Fo(When)f(set)h(to)g(`)p Fn(on)p Fo(',)f(on)g(op)s(erating)h +(systems)f(that)h(indicate)g(they)g(supp)s(ort)1110 993 +y(it,)e(Readline)g(ec)m(ho)s(es)g(a)f(c)m(haracter)i(corresp)s(onding)d +(to)i(a)f(signal)h(generated)1110 1103 y(from)h(the)g(k)m(eyb)s(oard.) +41 b(The)30 b(default)g(is)h(`)p Fn(on)p Fo('.)630 1249 +y Fn(editing-mode)1110 1358 y Fo(The)d Fn(editing-mode)e Fo(v)-5 b(ariable)29 b(con)m(trols)h(whic)m(h)e(default)h(set)h(of)e(k) -m(ey)i(bind-)1110 3383 y(ings)25 b(is)g(used.)38 b(By)26 +m(ey)i(bind-)1110 1468 y(ings)25 b(is)g(used.)38 b(By)26 b(default,)g(Readline)g(starts)f(up)f(in)h(Emacs)g(editing)h(mo)s(de,) -1110 3493 y(where)j(the)g(k)m(eystrok)m(es)i(are)e(most)h(similar)f(to) +1110 1577 y(where)j(the)g(k)m(eystrok)m(es)i(are)e(most)h(similar)f(to) h(Emacs.)40 b(This)29 b(v)-5 b(ariable)30 b(can)1110 -3602 y(b)s(e)g(set)h(to)g(either)g(`)p Fn(emacs)p Fo(')e(or)h(`)p -Fn(vi)p Fo('.)630 3759 y Fn(emacs-mode-string)1110 3868 +1687 y(b)s(e)g(set)h(to)g(either)g(`)p Fn(emacs)p Fo(')e(or)h(`)p +Fn(vi)p Fo('.)630 1833 y Fn(emacs-mode-string)1110 1943 y Fo(If)j(the)h Fe(sho)m(w-mo)s(de-in-prompt)h Fo(v)-5 b(ariable)35 b(is)e(enabled,)i(this)f(string)f(is)h(dis-)1110 -3978 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f -(of)h(the)f(primary)f(prompt)g(when)1110 4088 y(emacs)g(editing)h(mo)s +2052 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f +(of)h(the)f(primary)f(prompt)g(when)1110 2162 y(emacs)g(editing)h(mo)s (de)e(is)h(activ)m(e.)40 b(The)21 b(v)-5 b(alue)22 b(is)g(expanded)f -(lik)m(e)h(a)h(k)m(ey)f(bind-)1110 4197 y(ing,)27 b(so)f(the)f +(lik)m(e)h(a)h(k)m(ey)f(bind-)1110 2271 y(ing,)27 b(so)f(the)f (standard)g(set)h(of)f(meta-)i(and)e(con)m(trol)i(pre\014xes)d(and)h -(bac)m(kslash)1110 4307 y(escap)s(e)f(sequences)h(is)e(a)m(v)-5 +(bac)m(kslash)1110 2381 y(escap)s(e)f(sequences)h(is)e(a)m(v)-5 b(ailable.)41 b(Use)25 b(the)f(`)p Fn(\\1)p Fo(')f(and)h(`)p -Fn(\\2)p Fo(')g(escap)s(es)g(to)g(b)s(egin)1110 4416 +Fn(\\2)p Fo(')g(escap)s(es)g(to)g(b)s(egin)1110 2491 y(and)37 b(end)g(sequences)h(of)f(non-prin)m(ting)h(c)m(haracters,)j -(whic)m(h)c(can)h(b)s(e)f(used)1110 4526 y(to)h(em)m(b)s(ed)f(a)g +(whic)m(h)c(can)h(b)s(e)f(used)1110 2600 y(to)h(em)m(b)s(ed)f(a)g (terminal)h(con)m(trol)h(sequence)f(in)m(to)g(the)f(mo)s(de)g(string.) -61 b(The)1110 4635 y(default)31 b(is)f(`)p Fn(@)p Fo('.)630 -4792 y Fn(enable-bracketed-paste)1110 4902 y Fo(When)24 -b(set)h(to)h(`)p Fn(On)p Fo(',)g(Readline)f(will)g(con\014gure)f(the)h -(terminal)g(in)f(a)h(w)m(a)m(y)g(that)1110 5011 y(will)k(enable)f(it)h -(to)g(insert)g(eac)m(h)g(paste)g(in)m(to)g(the)g(editing)g(bu\013er)e -(as)i(a)f(single)1110 5121 y(string)33 b(of)f(c)m(haracters,)j(instead) -e(of)g(treating)h(eac)m(h)g(c)m(haracter)g(as)f(if)f(it)i(had)1110 -5230 y(b)s(een)e(read)i(from)e(the)i(k)m(eyb)s(oard.)49 -b(This)32 b(can)h(prev)m(en)m(t)h(pasted)f(c)m(haracters)1110 -5340 y(from)d(b)s(eing)g(in)m(terpreted)h(as)f(editing)h(commands.)41 -b(The)29 b(default)i(is)f(`)p Fn(On)p Fo('.)p eop end -%%Page: 7 10 -TeXDict begin 7 9 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2153 b(7)630 299 y Fn(enable-keypad)1110 -408 y Fo(When)23 b(set)h(to)g(`)p Fn(on)p Fo(',)h(Readline)f(will)g -(try)f(to)h(enable)g(the)f(application)i(k)m(eypad)1110 -518 y(when)h(it)h(is)f(called.)41 b(Some)27 b(systems)f(need)h(this)f -(to)h(enable)g(the)g(arro)m(w)g(k)m(eys.)1110 628 y(The)j(default)g(is) -h(`)p Fn(off)p Fo('.)630 784 y Fn(enable-meta-key)1110 -894 y Fo(When)40 b(set)g(to)g(`)p Fn(on)p Fo(',)j(Readline)d(will)g -(try)g(to)g(enable)g(an)m(y)g(meta)h(mo)s(di\014er)1110 -1003 y(k)m(ey)i(the)e(terminal)i(claims)f(to)h(supp)s(ort)d(when)h(it)h -(is)g(called.)76 b(On)41 b(man)m(y)1110 1113 y(terminals,)c(the)e(meta) -h(k)m(ey)g(is)f(used)g(to)h(send)e(eigh)m(t-bit)j(c)m(haracters.)56 -b(The)1110 1223 y(default)31 b(is)f(`)p Fn(on)p Fo('.)630 -1379 y Fn(expand-tilde)1110 1489 y Fo(If)d(set)h(to)h(`)p +61 b(The)1110 2710 y(default)31 b(is)f(`)p Fn(@)p Fo('.)630 +2856 y Fn(enable-active-region)1110 2966 y Fo(The)46 +b Fe(p)s(oin)m(t)j Fo(is)e(the)g(curren)m(t)f(cursor)g(p)s(osition,)52 +b(and)46 b Fe(mark)52 b Fo(refers)46 b(to)i(a)1110 3075 +y(sa)m(v)m(ed)37 b(cursor)f(p)s(osition)g(\(see)i(Section)f(1.4.1)h +([Commands)d(F)-8 b(or)37 b(Mo)m(ving],)1110 3185 y(page)25 +b(17\).)40 b(The)24 b(text)h(b)s(et)m(w)m(een)g(the)g(p)s(oin)m(t)f +(and)g(mark)g(is)g(referred)g(to)h(as)g(the)1110 3294 +y Fe(region)p Fo(.)62 b(When)37 b(this)g(v)-5 b(ariable)38 +b(is)f(set)h(to)g(`)p Fn(On)p Fo(',)h(Readline)f(allo)m(ws)g(certain) +1110 3404 y(commands)f(to)h(designate)h(the)e(region)h(as)g +Fe(activ)m(e)p Fo(.)64 b(When)37 b(the)h(region)g(is)1110 +3513 y(activ)m(e,)43 b(Readline)38 b(highligh)m(ts)h(the)g(text)g(in)e +(the)i(region)g(using)e(the)h(v)-5 b(alue)1110 3623 y(of)35 +b(the)g Fn(active-region-start-color)p Fo(,)30 b(whic)m(h)35 +b(defaults)g(to)h(the)f(string)1110 3733 y(that)23 b(enables)f(the)g +(terminal's)h(standout)e(mo)s(de.)38 b(The)21 b(activ)m(e)k(region)d +(sho)m(ws)1110 3842 y(the)32 b(text)h(inserted)f(b)m(y)g(brac)m(k)m +(eted-paste)i(and)e(an)m(y)g(matc)m(hing)h(text)g(found)1110 +3952 y(b)m(y)f(incremen)m(tal)i(and)e(non-incremen)m(tal)i(history)e +(searc)m(hes.)48 b(The)32 b(default)1110 4061 y(is)e(`)p +Fn(On)p Fo('.)630 4208 y Fn(enable-bracketed-paste)1110 +4317 y Fo(When)36 b(set)h(to)g(`)p Fn(On)p Fo(',)h(Readline)f +(con\014gures)f(the)h(terminal)f(to)i(insert)e(eac)m(h)1110 +4427 y(paste)27 b(in)m(to)g(the)f(editing)h(bu\013er)e(as)h(a)h(single) +g(string)f(of)g(c)m(haracters,)j(instead)1110 4536 y(of)d(treating)i +(eac)m(h)g(c)m(haracter)f(as)g(if)f(it)h(had)f(b)s(een)f(read)i(from)e +(the)i(k)m(eyb)s(oard.)1110 4646 y(This)36 b(is)h(called)h(putting)f +(the)h(terminal)f(in)m(to)h Fe(brac)m(k)m(eted)h(paste)e(mo)s(de)5 +b Fo(;)40 b(it)1110 4756 y(prev)m(en)m(ts)30 b(Readline)h(from)e +(executing)i(an)m(y)f(editing)h(commands)e(b)s(ound)f(to)1110 +4865 y(k)m(ey)j(sequences)g(app)s(earing)f(in)g(the)g(pasted)h(text.)42 +b(The)29 b(default)i(is)f(`)p Fn(On)p Fo('.)630 5011 +y Fn(enable-keypad)1110 5121 y Fo(When)23 b(set)h(to)g(`)p +Fn(on)p Fo(',)h(Readline)f(will)g(try)f(to)h(enable)g(the)f +(application)i(k)m(eypad)1110 5230 y(when)h(it)h(is)f(called.)41 +b(Some)27 b(systems)f(need)h(this)f(to)h(enable)g(the)g(arro)m(w)g(k)m +(eys.)1110 5340 y(The)j(default)g(is)h(`)p Fn(off)p Fo('.)p +eop end +%%Page: 8 11 +TeXDict begin 8 10 bop 150 -116 a Fo(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2153 b(8)630 299 y Fn(enable-meta-key) +1110 408 y Fo(When)40 b(set)g(to)g(`)p Fn(on)p Fo(',)j(Readline)d(will) +g(try)g(to)g(enable)g(an)m(y)g(meta)h(mo)s(di\014er)1110 +518 y(k)m(ey)i(the)e(terminal)i(claims)f(to)h(supp)s(ort)d(when)h(it)h +(is)g(called.)76 b(On)41 b(man)m(y)1110 628 y(terminals,)c(the)e(meta)h +(k)m(ey)g(is)f(used)g(to)h(send)e(eigh)m(t-bit)j(c)m(haracters.)56 +b(The)1110 737 y(default)31 b(is)f(`)p Fn(on)p Fo('.)630 +894 y Fn(expand-tilde)1110 1003 y Fo(If)d(set)h(to)h(`)p Fn(on)p Fo(',)f(tilde)g(expansion)g(is)f(p)s(erformed)f(when)h -(Readline)h(attempts)1110 1598 y(w)m(ord)i(completion.)42 -b(The)30 b(default)g(is)h(`)p Fn(off)p Fo('.)630 1755 -y Fn(history-preserve-point)1110 1864 y Fo(If)41 b(set)h(to)h(`)p +(Readline)h(attempts)1110 1113 y(w)m(ord)i(completion.)42 +b(The)30 b(default)g(is)h(`)p Fn(off)p Fo('.)630 1270 +y Fn(history-preserve-point)1110 1379 y Fo(If)41 b(set)h(to)h(`)p Fn(on)p Fo(',)i(the)c(history)h(co)s(de)g(attempts)h(to)f(place)h(the)f -(p)s(oin)m(t)f(\(the)1110 1974 y(curren)m(t)35 b(cursor)g(p)s +(p)s(oin)m(t)f(\(the)1110 1489 y(curren)m(t)35 b(cursor)g(p)s (osition\))g(at)h(the)g(same)f(lo)s(cation)i(on)e(eac)m(h)h(history)g -(line)1110 2084 y(retriev)m(ed)h(with)f Fn(previous-history)c +(line)1110 1598 y(retriev)m(ed)h(with)f Fn(previous-history)c Fo(or)37 b Fn(next-history)p Fo(.)55 b(The)36 b(default)1110 -2193 y(is)30 b(`)p Fn(off)p Fo('.)630 2350 y Fn(history-size)1110 -2459 y Fo(Set)39 b(the)g(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(history)g -(en)m(tries)h(sa)m(v)m(ed)g(in)f(the)g(history)1110 2569 +1708 y(is)30 b(`)p Fn(off)p Fo('.)630 1864 y Fn(history-size)1110 +1974 y Fo(Set)39 b(the)g(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(history)g +(en)m(tries)h(sa)m(v)m(ed)g(in)f(the)g(history)1110 2084 y(list.)51 b(If)34 b(set)g(to)h(zero,)g(an)m(y)f(existing)h(history)f -(en)m(tries)g(are)g(deleted)h(and)e(no)1110 2679 y(new)e(en)m(tries)i +(en)m(tries)g(are)g(deleted)h(and)e(no)1110 2193 y(new)e(en)m(tries)i (are)f(sa)m(v)m(ed.)46 b(If)31 b(set)h(to)h(a)f(v)-5 b(alue)32 b(less)g(than)f(zero,)i(the)f(n)m(um)m(b)s(er)1110 -2788 y(of)f(history)f(en)m(tries)h(is)g(not)g(limited.)42 +2303 y(of)f(history)f(en)m(tries)h(is)g(not)g(limited.)42 b(By)30 b(default,)h(the)g(n)m(um)m(b)s(er)e(of)i(history)1110 -2898 y(en)m(tries)j(is)f(not)g(limited.)49 b(If)32 b(an)h(attempt)h(is) -f(made)g(to)h(set)f Fe(history-size)39 b Fo(to)1110 3007 +2412 y(en)m(tries)j(is)f(not)g(limited.)49 b(If)32 b(an)h(attempt)h(is) +f(made)g(to)h(set)f Fe(history-size)39 b Fo(to)1110 2522 y(a)34 b(non-n)m(umeric)f(v)-5 b(alue,)34 b(the)g(maxim)m(um)f(n)m(um)m -(b)s(er)f(of)h(history)h(en)m(tries)g(will)1110 3117 -y(b)s(e)c(set)h(to)g(500.)630 3273 y Fn(horizontal-scroll-mode)1110 -3383 y Fo(This)k(v)-5 b(ariable)37 b(can)f(b)s(e)f(set)h(to)h(either)f +(b)s(er)f(of)h(history)h(en)m(tries)g(will)1110 2632 +y(b)s(e)c(set)h(to)g(500.)630 2788 y Fn(horizontal-scroll-mode)1110 +2898 y Fo(This)k(v)-5 b(ariable)37 b(can)f(b)s(e)f(set)h(to)h(either)f (`)p Fn(on)p Fo(')g(or)g(`)p Fn(off)p Fo('.)57 b(Setting)36 -b(it)g(to)h(`)p Fn(on)p Fo(')1110 3493 y(means)26 b(that)h(the)f(text)h +b(it)g(to)h(`)p Fn(on)p Fo(')1110 3007 y(means)26 b(that)h(the)f(text)h (of)g(the)f(lines)g(b)s(eing)g(edited)h(will)f(scroll)h(horizon)m -(tally)1110 3602 y(on)32 b(a)g(single)g(screen)g(line)g(when)e(they)i -(are)g(longer)h(than)e(the)h(width)f(of)h(the)1110 3712 +(tally)1110 3117 y(on)32 b(a)g(single)g(screen)g(line)g(when)e(they)i +(are)g(longer)h(than)e(the)h(width)f(of)h(the)1110 3226 y(screen,)c(instead)g(of)f(wrapping)f(on)m(to)i(a)g(new)e(screen)i -(line.)40 b(This)26 b(v)-5 b(ariable)28 b(is)1110 3821 +(line.)40 b(This)26 b(v)-5 b(ariable)28 b(is)1110 3336 y(automatically)k(set)e(to)g(`)p Fn(on)p Fo(')f(for)g(terminals)g(of)h -(heigh)m(t)g(1.)41 b(By)29 b(default,)h(this)1110 3931 +(heigh)m(t)g(1.)41 b(By)29 b(default,)h(this)1110 3446 y(v)-5 b(ariable)31 b(is)g(set)f(to)i(`)p Fn(off)p Fo('.)630 -4088 y Fn(input-meta)1110 4197 y Fo(If)f(set)g(to)h(`)p +3602 y Fn(input-meta)1110 3712 y Fo(If)f(set)g(to)h(`)p Fn(on)p Fo(',)g(Readline)g(will)f(enable)h(eigh)m(t-bit)h(input)d(\(it) -i(will)f(not)h(clear)1110 4307 y(the)40 b(eigh)m(th)g(bit)g(in)f(the)h +i(will)f(not)h(clear)1110 3821 y(the)40 b(eigh)m(th)g(bit)g(in)f(the)h (c)m(haracters)h(it)f(reads\),)j(regardless)c(of)h(what)g(the)1110 -4416 y(terminal)k(claims)h(it)f(can)g(supp)s(ort.)79 +3931 y(terminal)k(claims)h(it)f(can)g(supp)s(ort.)79 b(The)44 b(default)g(v)-5 b(alue)44 b(is)g(`)p Fn(off)p -Fo(',)j(but)1110 4526 y(Readline)24 b(will)h(set)f(it)g(to)h(`)p +Fo(',)j(but)1110 4041 y(Readline)24 b(will)h(set)f(it)g(to)h(`)p Fn(on)p Fo(')e(if)h(the)g(lo)s(cale)i(con)m(tains)f(eigh)m(t-bit)g(c)m -(haracters.)1110 4635 y(The)30 b(name)g Fn(meta-flag)e -Fo(is)j(a)f(synon)m(ym)g(for)g(this)h(v)-5 b(ariable.)630 -4792 y Fn(isearch-terminators)1110 4902 y Fo(The)51 b(string)h(of)g(c)m -(haracters)h(that)f(should)e(terminate)j(an)f(incremen)m(tal)1110 -5011 y(searc)m(h)25 b(without)g(subsequen)m(tly)g(executing)h(the)f(c)m -(haracter)h(as)f(a)g(command)1110 5121 y(\(see)45 b(Section)h(1.2.5)g -([Searc)m(hing],)j(page)d(3\).)84 b(If)44 b(this)g(v)-5 -b(ariable)45 b(has)g(not)1110 5230 y(b)s(een)35 b(giv)m(en)h(a)g(v)-5 -b(alue,)37 b(the)f(c)m(haracters)h Fn(ESC)d Fo(and)h -Fg(C-J)g Fo(will)h(terminate)g(an)1110 5340 y(incremen)m(tal)c(searc)m -(h.)p eop end -%%Page: 8 11 -TeXDict begin 8 10 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2153 b(8)630 299 y Fn(keymap)192 +(haracters.)1110 4150 y(The)k(name)g Fn(meta-flag)e Fo(is)i(a)h(synon)m +(ym)f(for)g(this)g(v)-5 b(ariable.)42 b(This)28 b(v)-5 +b(ariable)1110 4260 y(is)35 b(dep)s(enden)m(t)f(on)h(the)g +Fn(LC_CTYPE)e Fo(lo)s(cale)k(category)-8 b(,)39 b(and)34 +b(ma)m(y)i(c)m(hange)g(if)1110 4369 y(the)31 b(lo)s(cale)h(is)e(c)m +(hanged.)630 4526 y Fn(isearch-terminators)1110 4635 +y Fo(The)51 b(string)h(of)g(c)m(haracters)h(that)f(should)e(terminate)j +(an)f(incremen)m(tal)1110 4745 y(searc)m(h)25 b(without)g(subsequen)m +(tly)g(executing)h(the)f(c)m(haracter)h(as)f(a)g(command)1110 +4855 y(\(see)45 b(Section)h(1.2.5)g([Searc)m(hing],)j(page)d(3\).)84 +b(If)44 b(this)g(v)-5 b(ariable)45 b(has)g(not)1110 4964 +y(b)s(een)35 b(giv)m(en)h(a)g(v)-5 b(alue,)37 b(the)f(c)m(haracters)h +Fn(ESC)d Fo(and)h Fg(C-J)g Fo(will)h(terminate)g(an)1110 +5074 y(incremen)m(tal)c(searc)m(h.)630 5230 y Fn(keymap)192 b Fo(Sets)64 b(Readline's)i(idea)f(of)f(the)h(curren)m(t)f(k)m(eymap)h -(for)f(k)m(ey)h(binding)1110 408 y(commands.)71 b(Built-in)41 +(for)f(k)m(ey)h(binding)1110 5340 y(commands.)71 b(Built-in)41 b Fn(keymap)e Fo(names)h(are)h Fn(emacs)p Fo(,)h Fn(emacs-standard)p -Fo(,)1110 518 y Fn(emacs-meta)p Fo(,)99 b Fn(emacs-ctlx)p -Fo(,)f Fn(vi)p Fo(,)j Fn(vi-move)p Fo(,)f Fn(vi-command)p -Fo(,)f(and)1110 628 y Fn(vi-insert)p Fo(.)81 b Fn(vi)44 -b Fo(is)h(equiv)-5 b(alen)m(t)46 b(to)g Fn(vi-command)c -Fo(\()p Fn(vi-move)h Fo(is)i(also)h(a)1110 737 y(synon)m(ym\);)41 -b Fn(emacs)c Fo(is)h(equiv)-5 b(alen)m(t)39 b(to)f Fn(emacs-standard)p -Fo(.)59 b(Applications)1110 847 y(ma)m(y)32 b(add)e(additional)i -(names.)43 b(The)30 b(default)h(v)-5 b(alue)32 b(is)f -Fn(emacs)p Fo(.)41 b(The)30 b(v)-5 b(alue)1110 956 y(of)31 -b(the)f Fn(editing-mode)d Fo(v)-5 b(ariable)31 b(also)h(a\013ects)f -(the)g(default)g(k)m(eymap.)630 1113 y Fn(keyseq-timeout)1110 -1223 y Fo(Sp)s(eci\014es)25 b(the)g(duration)g(Readline)h(will)g(w)m -(ait)g(for)g(a)f(c)m(haracter)i(when)e(read-)1110 1332 -y(ing)30 b(an)g(am)m(biguous)g(k)m(ey)h(sequence)f(\(one)g(that)h(can)f -(form)g(a)g(complete)h(k)m(ey)1110 1442 y(sequence)j(using)e(the)i -(input)e(read)h(so)g(far,)h(or)g(can)f(tak)m(e)i(additional)f(input) -1110 1551 y(to)g(complete)g(a)f(longer)h(k)m(ey)f(sequence\).)49 -b(If)33 b(no)f(input)g(is)h(receiv)m(ed)h(within)1110 -1661 y(the)43 b(timeout,)48 b(Readline)43 b(will)g(use)g(the)g(shorter) -g(but)f(complete)j(k)m(ey)e(se-)1110 1771 y(quence.)c(Readline)26 -b(uses)f(this)h(v)-5 b(alue)26 b(to)g(determine)g(whether)f(or)g(not)h -(input)1110 1880 y(is)31 b(a)m(v)-5 b(ailable)33 b(on)d(the)h(curren)m -(t)f(input)g(source)h(\()p Fn(rl_instream)d Fo(b)m(y)i(default\).)1110 -1990 y(The)25 b(v)-5 b(alue)26 b(is)f(sp)s(eci\014ed)f(in)h +Fo(,)p eop end +%%Page: 9 12 +TeXDict begin 9 11 bop 150 -116 a Fo(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2153 b(9)1110 299 y Fn(emacs-meta)p +Fo(,)99 b Fn(emacs-ctlx)p Fo(,)f Fn(vi)p Fo(,)j Fn(vi-move)p +Fo(,)f Fn(vi-command)p Fo(,)f(and)1110 408 y Fn(vi-insert)p +Fo(.)81 b Fn(vi)44 b Fo(is)h(equiv)-5 b(alen)m(t)46 b(to)g +Fn(vi-command)c Fo(\()p Fn(vi-move)h Fo(is)i(also)h(a)1110 +518 y(synon)m(ym\);)41 b Fn(emacs)c Fo(is)h(equiv)-5 +b(alen)m(t)39 b(to)f Fn(emacs-standard)p Fo(.)59 b(Applications)1110 +628 y(ma)m(y)32 b(add)e(additional)i(names.)43 b(The)30 +b(default)h(v)-5 b(alue)32 b(is)f Fn(emacs)p Fo(.)41 +b(The)30 b(v)-5 b(alue)1110 737 y(of)31 b(the)f Fn(editing-mode)d +Fo(v)-5 b(ariable)31 b(also)h(a\013ects)f(the)g(default)g(k)m(eymap.) +630 909 y Fn(keyseq-timeout)1110 1019 y Fo(Sp)s(eci\014es)25 +b(the)g(duration)g(Readline)h(will)g(w)m(ait)g(for)g(a)f(c)m(haracter)i +(when)e(read-)1110 1129 y(ing)30 b(an)g(am)m(biguous)g(k)m(ey)h +(sequence)f(\(one)g(that)h(can)f(form)g(a)g(complete)h(k)m(ey)1110 +1238 y(sequence)j(using)e(the)i(input)e(read)h(so)g(far,)h(or)g(can)f +(tak)m(e)i(additional)f(input)1110 1348 y(to)g(complete)g(a)f(longer)h +(k)m(ey)f(sequence\).)49 b(If)33 b(no)f(input)g(is)h(receiv)m(ed)h +(within)1110 1457 y(the)43 b(timeout,)48 b(Readline)43 +b(will)g(use)g(the)g(shorter)g(but)f(complete)j(k)m(ey)e(se-)1110 +1567 y(quence.)c(Readline)26 b(uses)f(this)h(v)-5 b(alue)26 +b(to)g(determine)g(whether)f(or)g(not)h(input)1110 1677 +y(is)31 b(a)m(v)-5 b(ailable)33 b(on)d(the)h(curren)m(t)f(input)g +(source)h(\()p Fn(rl_instream)d Fo(b)m(y)i(default\).)1110 +1786 y(The)25 b(v)-5 b(alue)26 b(is)f(sp)s(eci\014ed)f(in)h (milliseconds,)j(so)d(a)h(v)-5 b(alue)26 b(of)f(1000)i(means)e(that) -1110 2099 y(Readline)e(will)g(w)m(ait)g(one)g(second)f(for)g +1110 1896 y(Readline)e(will)g(w)m(ait)g(one)g(second)f(for)g (additional)i(input.)37 b(If)22 b(this)g(v)-5 b(ariable)23 -b(is)1110 2209 y(set)28 b(to)h(a)f(v)-5 b(alue)29 b(less)f(than)g(or)f +b(is)1110 2005 y(set)28 b(to)h(a)f(v)-5 b(alue)29 b(less)f(than)g(or)f (equal)i(to)f(zero,)i(or)e(to)g(a)h(non-n)m(umeric)e(v)-5 -b(alue,)1110 2318 y(Readline)30 b(will)f(w)m(ait)i(un)m(til)e(another)h +b(alue,)1110 2115 y(Readline)30 b(will)f(w)m(ait)i(un)m(til)e(another)h (k)m(ey)g(is)f(pressed)g(to)h(decide)f(whic)m(h)g(k)m(ey)1110 -2428 y(sequence)i(to)g(complete.)42 b(The)30 b(default)g(v)-5 -b(alue)31 b(is)g Fn(500)p Fo(.)630 2585 y Fn(mark-directories)1110 -2694 y Fo(If)38 b(set)g(to)h(`)p Fn(on)p Fo(',)i(completed)e(directory) +2225 y(sequence)i(to)g(complete.)42 b(The)30 b(default)g(v)-5 +b(alue)31 b(is)g Fn(500)p Fo(.)630 2397 y Fn(mark-directories)1110 +2506 y Fo(If)38 b(set)g(to)h(`)p Fn(on)p Fo(',)i(completed)e(directory) f(names)g(ha)m(v)m(e)i(a)e(slash)g(app)s(ended.)1110 -2804 y(The)30 b(default)g(is)h(`)p Fn(on)p Fo('.)630 -2960 y Fn(mark-modified-lines)1110 3070 y Fo(This)k(v)-5 +2616 y(The)30 b(default)g(is)h(`)p Fn(on)p Fo('.)630 +2788 y Fn(mark-modified-lines)1110 2898 y Fo(This)k(v)-5 b(ariable,)38 b(when)d(set)h(to)h(`)p Fn(on)p Fo(',)g(causes)g -(Readline)f(to)h(displa)m(y)f(an)f(as-)1110 3180 y(terisk)f(\(`)p +(Readline)f(to)h(displa)m(y)f(an)f(as-)1110 3007 y(terisk)f(\(`)p Fn(*)p Fo('\))h(at)f(the)g(start)g(of)g(history)g(lines)g(whic)m(h)f -(ha)m(v)m(e)i(b)s(een)e(mo)s(di\014ed.)1110 3289 y(This)d(v)-5 +(ha)m(v)m(e)i(b)s(een)e(mo)s(di\014ed.)1110 3117 y(This)d(v)-5 b(ariable)31 b(is)f(`)p Fn(off)p Fo(')g(b)m(y)g(default.)630 -3446 y Fn(mark-symlinked-directori)o(es)1110 3555 y Fo(If)59 +3289 y Fn(mark-symlinked-directori)o(es)1110 3399 y Fo(If)59 b(set)h(to)g(`)p Fn(on)p Fo(',)67 b(completed)60 b(names)f(whic)m(h)g -(are)h(sym)m(b)s(olic)g(links)f(to)1110 3665 y(directories)71 +(are)h(sym)m(b)s(olic)g(links)f(to)1110 3508 y(directories)71 b(ha)m(v)m(e)f(a)g(slash)f(app)s(ended)f(\(sub)5 b(ject)70 -b(to)g(the)g(v)-5 b(alue)70 b(of)1110 3774 y Fn(mark-directories)p +b(to)g(the)g(v)-5 b(alue)70 b(of)1110 3618 y Fn(mark-directories)p Fo(\).)37 b(The)30 b(default)g(is)g(`)p Fn(off)p Fo('.)630 -3931 y Fn(match-hidden-files)1110 4041 y Fo(This)21 b(v)-5 +3790 y Fn(match-hidden-files)1110 3900 y Fo(This)21 b(v)-5 b(ariable,)25 b(when)d(set)g(to)h(`)p Fn(on)p Fo(',)h(causes)f -(Readline)g(to)g(matc)m(h)g(\014les)f(whose)1110 4150 +(Readline)g(to)g(matc)m(h)g(\014les)f(whose)1110 4009 y(names)44 b(b)s(egin)g(with)g(a)g(`)p Fn(.)p Fo(')g(\(hidden)f -(\014les\))i(when)e(p)s(erforming)g(\014lename)1110 4260 +(\014les\))i(when)e(p)s(erforming)g(\014lename)1110 4119 y(completion.)75 b(If)41 b(set)g(to)h(`)p Fn(off)p Fo(',)i(the)e (leading)g(`)p Fn(.)p Fo(')f(m)m(ust)g(b)s(e)g(supplied)f(b)m(y)1110 -4369 y(the)34 b(user)g(in)g(the)g(\014lename)g(to)h(b)s(e)f(completed.) +4228 y(the)34 b(user)g(in)g(the)g(\014lename)g(to)h(b)s(e)f(completed.) 53 b(This)33 b(v)-5 b(ariable)35 b(is)f(`)p Fn(on)p Fo(')g(b)m(y)1110 -4479 y(default.)630 4635 y Fn(menu-complete-display-pr)o(efix)1110 -4745 y Fo(If)f(set)h(to)g(`)p Fn(on)p Fo(',)h(men)m(u)e(completion)i +4338 y(default.)630 4510 y Fn(menu-complete-display-pr)o(efix)1110 +4620 y Fo(If)f(set)h(to)g(`)p Fn(on)p Fo(',)h(men)m(u)e(completion)i (displa)m(ys)e(the)h(common)g(pre\014x)e(of)i(the)1110 -4855 y(list)k(of)g(p)s(ossible)f(completions)i(\(whic)m(h)e(ma)m(y)h(b) -s(e)f(empt)m(y\))i(b)s(efore)e(cycling)1110 4964 y(through)30 +4729 y(list)k(of)g(p)s(ossible)f(completions)i(\(whic)m(h)e(ma)m(y)h(b) +s(e)f(empt)m(y\))i(b)s(efore)e(cycling)1110 4839 y(through)30 b(the)g(list.)42 b(The)29 b(default)i(is)f(`)p Fn(off)p -Fo('.)630 5121 y Fn(output-meta)1110 5230 y Fo(If)35 +Fo('.)630 5011 y Fn(output-meta)1110 5121 y Fo(If)35 b(set)h(to)g(`)p Fn(on)p Fo(',)h(Readline)f(will)g(displa)m(y)f(c)m -(haracters)i(with)e(the)h(eigh)m(th)g(bit)1110 5340 y(set)h(directly)g +(haracters)i(with)e(the)h(eigh)m(th)g(bit)1110 5230 y(set)h(directly)g (rather)f(than)g(as)h(a)g(meta-pre\014xed)f(escap)s(e)h(sequence.)59 -b(The)p eop end -%%Page: 9 12 -TeXDict begin 9 11 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2153 b(9)1110 299 y(default)26 -b(is)f(`)p Fn(off)p Fo(',)i(but)e(Readline)h(will)g(set)g(it)g(to)h(`)p -Fn(on)p Fo(')e(if)h(the)f(lo)s(cale)j(con)m(tains)1110 -408 y(eigh)m(t-bit)k(c)m(haracters.)630 581 y Fn(page-completions)1110 -690 y Fo(If)h(set)i(to)f(`)p Fn(on)p Fo(',)h(Readline)g(uses)e(an)h(in) +b(The)1110 5340 y(default)26 b(is)f(`)p Fn(off)p Fo(',)i(but)e +(Readline)h(will)g(set)g(it)g(to)h(`)p Fn(on)p Fo(')e(if)h(the)f(lo)s +(cale)j(con)m(tains)p eop end +%%Page: 10 13 +TeXDict begin 10 12 bop 150 -116 a Fo(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(10)1110 299 y(eigh)m(t-bit)38 +b(c)m(haracters.)61 b(This)36 b(v)-5 b(ariable)37 b(is)g(dep)s(enden)m +(t)e(on)h(the)h Fn(LC_CTYPE)1110 408 y Fo(lo)s(cale)32 +b(category)-8 b(,)33 b(and)d(ma)m(y)h(c)m(hange)g(if)g(the)f(lo)s(cale) +i(is)f(c)m(hanged.)630 581 y Fn(page-completions)1110 +690 y Fo(If)i(set)i(to)f(`)p Fn(on)p Fo(',)h(Readline)g(uses)e(an)h(in) m(ternal)h Fn(more)p Fo(-lik)m(e)f(pager)g(to)h(displa)m(y)1110 800 y(a)e(screenful)f(of)g(p)s(ossible)g(completions)i(at)f(a)g(time.) 47 b(This)31 b(v)-5 b(ariable)34 b(is)e(`)p Fn(on)p Fo(')1110 @@ -5906,9 +6015,9 @@ Fn(off)p Fo('.)630 1583 y Fn(revert-all-at-newline)1110 1802 y(returning)f(when)f Fn(accept-line)f Fo(is)j(executed.)41 b(By)29 b(default,)g(history)g(lines)1110 1911 y(ma)m(y)42 b(b)s(e)g(mo)s(di\014ed)e(and)h(retain)i(individual)e(undo)g(lists)h -(across)g(calls)h(to)1110 2021 y Fn(readline)p Fo(.)38 -b(The)30 b(default)h(is)f(`)p Fn(off)p Fo('.)630 2193 -y Fn(show-all-if-ambiguous)1110 2303 y Fo(This)f(alters)i(the)f +(across)g(calls)h(to)1110 2021 y Fn(readline\(\))p Fo(.)38 +b(The)30 b(default)g(is)h(`)p Fn(off)p Fo('.)630 2193 +y Fn(show-all-if-ambiguous)1110 2303 y Fo(This)e(alters)i(the)f (default)g(b)s(eha)m(vior)g(of)g(the)h(completion)g(functions.)40 b(If)29 b(set)1110 2412 y(to)f(`)p Fn(on)p Fo(',)g(w)m(ords)f(whic)m(h) g(ha)m(v)m(e)i(more)f(than)f(one)h(p)s(ossible)f(completion)h(cause) @@ -5938,8 +6047,8 @@ b(is)f(`)p Fn(off)p Fo('.)630 4244 y Fn(skip-completed-text)1110 (default)g(completion)h(b)s(eha)m(vior)f(when)f(in-)1110 4463 y(serting)d(a)h(single)g(matc)m(h)f(in)m(to)h(the)g(line.)40 b(It's)30 b(only)f(activ)m(e)i(when)d(p)s(erform-)1110 -4573 y(ing)35 b(completion)h(in)e(the)h(middle)f(of)h(a)f(w)m(ord.)53 -b(If)35 b(enabled,)g(readline)g(do)s(es)1110 4682 y(not)41 +4573 y(ing)k(completion)i(in)e(the)g(middle)g(of)g(a)h(w)m(ord.)46 +b(If)32 b(enabled,)g(Readline)h(do)s(es)1110 4682 y(not)41 b(insert)f(c)m(haracters)i(from)e(the)h(completion)h(that)f(matc)m(h)g (c)m(haracters)1110 4792 y(after)c(p)s(oin)m(t)g(in)g(the)g(w)m(ord)f (b)s(eing)g(completed,)k(so)d(p)s(ortions)f(of)h(the)g(w)m(ord)1110 @@ -5951,9 +6060,9 @@ Fo(')c(will)i(result)f(in)g(`)p Fn(Makefile)p Fo(')f(rather)h(than)h(`) p Fn(Makefilefile)p Fo(',)1110 5230 y(assuming)d(there)g(is)h(a)f (single)h(p)s(ossible)f(completion.)56 b(The)35 b(default)g(v)-5 b(alue)1110 5340 y(is)30 b(`)p Fn(off)p Fo('.)p eop end -%%Page: 10 13 -TeXDict begin 10 12 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(10)630 299 y Fn +%%Page: 11 14 +TeXDict begin 11 13 bop 150 -116 a Fo(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(11)630 299 y Fn (vi-cmd-mode-string)1110 408 y Fo(If)33 b(the)h Fe(sho)m(w-mo)s (de-in-prompt)h Fo(v)-5 b(ariable)35 b(is)e(enabled,)i(this)f(string)f (is)h(dis-)1110 518 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g @@ -6008,27 +6117,26 @@ b(can)g(b)s(e)g(no)g(space)g(b)s(et)m(w)m(een)h(the)f(k)m(ey)h(name)g b(The)40 b(name)h(of)630 3778 y(the)35 b(k)m(ey)g(can)g(b)s(e)f (expressed)f(in)i(di\013eren)m(t)g(w)m(a)m(ys,)h(dep)s(ending)d(on)h (what)h(y)m(ou)g(\014nd)e(most)630 3888 y(comfortable.)630 -4025 y(In)i(addition)h(to)h(command)f(names,)i(readline)e(allo)m(ws)h -(k)m(eys)g(to)g(b)s(e)e(b)s(ound)f(to)j(a)f(string)630 -4134 y(that)31 b(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f(pressed)g -(\(a)h Fe(macro)5 b Fo(\).)630 4299 y Fe(k)m(eyname)g -Fo(:)42 b Fe(function-name)35 b Fo(or)c Fe(macro)1110 -4408 y(k)m(eyname)k Fo(is)29 b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s -(elled)e(out)h(in)g(English.)39 b(F)-8 b(or)30 b(example:)1350 -4545 y Fn(Control-u:)45 b(universal-argument)1350 4655 -y(Meta-Rubout:)f(backward-kill-word)1350 4765 y(Control-o:)h(">)i -(output")1110 4902 y Fo(In)94 b(the)g(example)h(ab)s(o)m(v)m(e,)112 -b Fg(C-u)94 b Fo(is)g(b)s(ound)f(to)i(the)f(function)1110 -5011 y Fn(universal-argument)p Fo(,)124 b Fg(M-DEL)107 -b Fo(is)i(b)s(ound)e(to)j(the)f(function)1110 5121 y -Fn(backward-kill-word)p Fo(,)75 b(and)69 b Fg(C-o)g Fo(is)h(b)s(ound)e -(to)j(run)d(the)i(macro)1110 5230 y(expressed)45 b(on)h(the)g(righ)m(t) -g(hand)e(side)i(\(that)h(is,)i(to)e(insert)e(the)h(text)h(`)p -Fn(>)1110 5340 y(output)p Fo(')29 b(in)m(to)i(the)g(line\).)p -eop end -%%Page: 11 14 -TeXDict begin 11 13 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(11)1110 299 y(A)62 +4025 y(In)g(addition)h(to)g(command)g(names,)g(Readline)g(allo)m(ws)h +(k)m(eys)g(to)f(b)s(e)f(b)s(ound)f(to)i(a)g(string)630 +4134 y(that)d(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f(pressed)g(\(a) +h Fe(macro)5 b Fo(\).)630 4299 y Fe(k)m(eyname)g Fo(:)42 +b Fe(function-name)35 b Fo(or)c Fe(macro)1110 4408 y(k)m(eyname)k +Fo(is)29 b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s(elled)e(out)h(in)g +(English.)39 b(F)-8 b(or)30 b(example:)1350 4545 y Fn(Control-u:)45 +b(universal-argument)1350 4655 y(Meta-Rubout:)f(backward-kill-word)1350 +4765 y(Control-o:)h(">)i(output")1110 4902 y Fo(In)94 +b(the)g(example)h(ab)s(o)m(v)m(e,)112 b Fg(C-u)94 b Fo(is)g(b)s(ound)f +(to)i(the)f(function)1110 5011 y Fn(universal-argument)p +Fo(,)124 b Fg(M-DEL)107 b Fo(is)i(b)s(ound)e(to)j(the)f(function)1110 +5121 y Fn(backward-kill-word)p Fo(,)75 b(and)69 b Fg(C-o)g +Fo(is)h(b)s(ound)e(to)j(run)d(the)i(macro)1110 5230 y(expressed)45 +b(on)h(the)g(righ)m(t)g(hand)e(side)i(\(that)h(is,)i(to)e(insert)e(the) +h(text)h(`)p Fn(>)1110 5340 y(output)p Fo(')29 b(in)m(to)i(the)g +(line\).)p eop end +%%Page: 12 15 +TeXDict begin 12 14 bop 150 -116 a Fo(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(12)1110 299 y(A)62 b(n)m(um)m(b)s(er)e(of)i(sym)m(b)s(olic)h(c)m(haracter)g(names)f(are)g (recognized)h(while)1110 408 y(pro)s(cessing)40 b(this)f(k)m(ey)i (binding)e(syn)m(tax:)60 b Fe(DEL)p Fo(,)42 b Fe(ESC)p @@ -6079,9 +6187,9 @@ Fn(\\x)p Fg(HH)288 b Fo(the)38 b(eigh)m(t-bit)i(c)m(haracter)g(whose)e (v)-5 b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5 b(alue)39 b Fe(HH)1110 5340 y Fo(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\))p eop end -%%Page: 12 15 -TeXDict begin 12 14 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(12)630 299 y(When)37 +%%Page: 13 16 +TeXDict begin 13 15 bop 150 -116 a Fo(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(13)630 299 y(When)37 b(en)m(tering)h(the)g(text)g(of)g(a)g(macro,)i(single)e(or)f(double)g (quotes)h(m)m(ust)f(b)s(e)g(used)f(to)630 408 y(indicate)23 b(a)e(macro)h(de\014nition.)38 b(Unquoted)21 b(text)i(is)e(assumed)g @@ -6158,9 +6266,9 @@ Fo(construct)e(is)g(used)f(to)i(include)f(application-sp)s(eci\014c)h (v)-5 b(alue.)39 b(This)22 b(could)h(b)s(e)g(used)f(to)1110 5340 y(bind)32 b(k)m(ey)h(sequences)g(to)h(functions)e(useful)g(for)h (a)g(sp)s(eci\014c)f(program.)48 b(F)-8 b(or)p eop end -%%Page: 13 16 -TeXDict begin 13 15 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(13)1110 299 y(instance,)35 +%%Page: 14 17 +TeXDict begin 14 16 bop 150 -116 a Fo(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(14)1110 299 y(instance,)35 b(the)e(follo)m(wing)h(command)f(adds)f(a)i(k)m(ey)f(sequence)h(that)f (quotes)1110 408 y(the)e(curren)m(t)f(or)g(previous)g(w)m(ord)g(in)g (Bash:)1350 543 y Fn($if)47 b(Bash)1350 653 y(#)g(Quote)g(the)g @@ -6199,9 +6307,9 @@ b(/etc/inputrc)150 3183 y Fd(1.3.3)63 b(Sample)41 b(Init)g(File)150 Fo(\014le.)39 b(This)26 b(illustrates)h(k)m(ey)h(binding,)e(v)-5 b(ariable)27 b(assignmen)m(t,)i(and)150 3440 y(conditional)j(syn)m (tax.)p eop end -%%Page: 14 17 -TeXDict begin 14 16 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(14)390 408 y Fn(#)47 +%%Page: 15 18 +TeXDict begin 15 17 bop 150 -116 a Fo(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(15)390 408 y Fn(#)47 b(This)g(file)g(controls)e(the)i(behaviour)e(of)j(line)e(input)h (editing)e(for)390 518 y(#)i(programs)f(that)h(use)g(the)f(GNU)h (Readline)f(library.)93 b(Existing)390 628 y(#)47 b(programs)f(include) @@ -6230,9 +6338,9 @@ h(function)f(name)g(is)h(ignored)p 3970 2401 42 76 v 4902 y(#)390 5011 y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(ANSI)g(mode) 390 5121 y(#)390 5230 y(#"\\M-\\C-[D":)331 b(backward-char)390 5340 y(#"\\M-\\C-[C":)g(forward-char)p eop end -%%Page: 15 18 -TeXDict begin 15 17 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(15)390 299 y Fn(#"\\M-\\C-[A":)331 +%%Page: 16 19 +TeXDict begin 16 18 bop 150 -116 a Fo(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(16)390 299 y Fn(#"\\M-\\C-[A":)331 b(previous-history)390 408 y(#"\\M-\\C-[B":)g(next-history)390 628 y(C-q:)47 b(quoted-insert)390 847 y($endif)390 1066 y(#)g(An)h(old-style)d(binding.)93 b(This)47 b(happens)f(to)h(be)g(the) @@ -6265,9 +6373,9 @@ y($endif)390 3477 y(#)i(use)g(a)h(visible)e(bell)g(if)h(one)g(is)h g(for)i(a)g(word,)390 5121 y(#)g(ask)g(whether)f(or)h(not)g(the)g(user) g(wants)f(to)h(see)g(all)g(of)g(them)390 5230 y(set)g (completion-query-items)42 b(150)p eop end -%%Page: 16 19 -TeXDict begin 16 18 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(16)390 299 y Fn(#)47 +%%Page: 17 20 +TeXDict begin 17 19 bop 150 -116 a Fo(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(17)390 299 y Fn(#)47 b(For)g(FTP)390 408 y($if)g(Ftp)390 518 y("\\C-xg":)f("get)g(\\M-?")390 628 y("\\C-xt":)g("put)g(\\M-?")390 737 y("\\M-.":)g(yank-last-arg)390 847 y($endif)150 1089 y Fm(1.4)68 b(Bindable)45 b(Readline)i(Commands) @@ -6318,9 +6426,9 @@ y(not)k(tak)m(e)i(up)e(more)g(than)g(one)g(ph)m(ysical)h(line)g(or)f (redra)m(w)630 5340 y(the)f(curren)m(t)f(line,)h(lea)m(ving)h(the)e (curren)m(t)h(line)f(at)h(the)g(top)g(of)f(the)h(screen.)p eop end -%%Page: 17 20 -TeXDict begin 17 19 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(17)150 299 y Fn(clear-screen)27 +%%Page: 18 21 +TeXDict begin 18 20 bop 150 -116 a Fo(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(18)150 299 y Fn(clear-screen)27 b(\(C-l\))630 408 y Fo(Clear)35 b(the)f(screen,)i(then)e(redra)m(w)g (the)h(curren)m(t)f(line,)i(lea)m(ving)g(the)f(curren)m(t)f(line)h(at)g (the)630 518 y(top)c(of)f(the)h(screen.)150 665 y Fn @@ -6386,445 +6494,450 @@ y Fo(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h(history)g(for)g 5340 y(start)g(of)h(the)f(curren)m(t)f(line)i(and)e(the)h(p)s(oin)m(t.) 58 b(The)35 b(searc)m(h)i(string)e(m)m(ust)h(matc)m(h)h(at)g(the)p eop end -%%Page: 18 21 -TeXDict begin 18 20 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(18)630 299 y(b)s(eginning)32 +%%Page: 19 22 +TeXDict begin 19 21 bop 150 -116 a Fo(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(19)630 299 y(b)s(eginning)32 b(of)g(a)h(history)g(line.)47 b(This)32 b(is)h(a)f(non-incremen)m(tal)i (searc)m(h.)48 b(By)33 b(default,)g(this)630 408 y(command)d(is)h(un)m -(b)s(ound.)150 581 y Fn(history-substring-search)o(-for)o(ward)24 -b(\(\))630 690 y Fo(Searc)m(h)42 b(forw)m(ard)f(through)f(the)i +(b)s(ound.)150 566 y Fn(history-substring-search)o(-for)o(ward)24 +b(\(\))630 676 y Fo(Searc)m(h)42 b(forw)m(ard)f(through)f(the)i (history)f(for)g(the)h(string)f(of)h(c)m(haracters)h(b)s(et)m(w)m(een)f -(the)630 800 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h(p) +(the)630 785 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h(p) s(oin)m(t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g(matc)m(h)h(an)m -(ywhere)630 910 y(in)i(a)h(history)g(line.)47 b(This)32 +(ywhere)630 895 y(in)i(a)h(history)g(line.)47 b(This)32 b(is)g(a)h(non-incremen)m(tal)h(searc)m(h.)47 b(By)33 -b(default,)h(this)e(command)630 1019 y(is)e(un)m(b)s(ound.)150 -1192 y Fn(history-substring-search)o(-bac)o(kwar)o(d)24 -b(\(\))630 1301 y Fo(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h +b(default,)h(this)e(command)630 1005 y(is)e(un)m(b)s(ound.)150 +1162 y Fn(history-substring-search)o(-bac)o(kwar)o(d)24 +b(\(\))630 1272 y Fo(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h (history)g(for)g(the)f(string)h(of)g(c)m(haracters)h(b)s(et)m(w)m(een)g -(the)630 1411 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h +(the)630 1381 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h (p)s(oin)m(t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g(matc)m(h)h -(an)m(ywhere)630 1520 y(in)i(a)h(history)g(line.)47 b(This)32 +(an)m(ywhere)630 1491 y(in)i(a)h(history)g(line.)47 b(This)32 b(is)g(a)h(non-incremen)m(tal)h(searc)m(h.)47 b(By)33 -b(default,)h(this)e(command)630 1630 y(is)e(un)m(b)s(ound.)150 -1802 y Fn(yank-nth-arg)d(\(M-C-y\))630 1912 y Fo(Insert)37 +b(default,)h(this)e(command)630 1601 y(is)e(un)m(b)s(ound.)150 +1758 y Fn(yank-nth-arg)d(\(M-C-y\))630 1868 y Fo(Insert)37 b(the)g(\014rst)f(argumen)m(t)i(to)f(the)h(previous)e(command)h -(\(usually)g(the)g(second)g(w)m(ord)630 2021 y(on)32 +(\(usually)g(the)g(second)g(w)m(ord)630 1978 y(on)32 b(the)g(previous)f(line\))i(at)f(p)s(oin)m(t.)46 b(With)32 b(an)g(argumen)m(t)g Fe(n)p Fo(,)g(insert)g(the)g Fe(n)p -Fo(th)f(w)m(ord)g(from)630 2131 y(the)k(previous)f(command)h(\(the)g(w) +Fo(th)f(w)m(ord)g(from)630 2087 y(the)k(previous)f(command)h(\(the)g(w) m(ords)g(in)f(the)h(previous)g(command)f(b)s(egin)h(with)f(w)m(ord)630 -2241 y(0\).)69 b(A)40 b(negativ)m(e)h(argumen)m(t)f(inserts)g(the)f +2197 y(0\).)69 b(A)40 b(negativ)m(e)h(argumen)m(t)f(inserts)g(the)f Fe(n)p Fo(th)g(w)m(ord)g(from)g(the)h(end)f(of)h(the)f(previous)630 -2350 y(command.)48 b(Once)33 b(the)g(argumen)m(t)h Fe(n)e +2306 y(command.)48 b(Once)33 b(the)g(argumen)m(t)h Fe(n)e Fo(is)h(computed,)h(the)f(argumen)m(t)g(is)g(extracted)i(as)e(if)630 -2460 y(the)e(`)p Fn(!)p Fg(n)p Fo(')f(history)g(expansion)g(had)g(b)s -(een)g(sp)s(eci\014ed.)150 2632 y Fn(yank-last-arg)d(\(M-.)i(or)h -(M-_\))630 2742 y Fo(Insert)k(last)i(argumen)m(t)g(to)g(the)f(previous) +2416 y(the)e(`)p Fn(!)p Fg(n)p Fo(')f(history)g(expansion)g(had)g(b)s +(een)g(sp)s(eci\014ed.)150 2574 y Fn(yank-last-arg)d(\(M-.)i(or)h +(M-_\))630 2683 y Fo(Insert)k(last)i(argumen)m(t)g(to)g(the)f(previous) f(command)h(\(the)h(last)f(w)m(ord)g(of)g(the)g(previous)630 -2851 y(history)e(en)m(try\).)51 b(With)34 b(a)g(n)m(umeric)g(argumen)m +2793 y(history)e(en)m(try\).)51 b(With)34 b(a)g(n)m(umeric)g(argumen)m (t,)h(b)s(eha)m(v)m(e)f(exactly)h(lik)m(e)g Fn(yank-nth-arg)p -Fo(.)630 2961 y(Successiv)m(e)26 b(calls)g(to)f Fn(yank-last-arg)c +Fo(.)630 2902 y(Successiv)m(e)26 b(calls)g(to)f Fn(yank-last-arg)c Fo(mo)m(v)m(e)27 b(bac)m(k)e(through)f(the)h(history)g(list,)i -(inserting)630 3070 y(the)c(last)g(w)m(ord)f(\(or)h(the)g(w)m(ord)f(sp) +(inserting)630 3012 y(the)c(last)g(w)m(ord)f(\(or)h(the)g(w)m(ord)f(sp) s(eci\014ed)g(b)m(y)g(the)h(argumen)m(t)g(to)g(the)g(\014rst)f(call\))i -(of)f(eac)m(h)h(line)630 3180 y(in)36 b(turn.)58 b(An)m(y)36 +(of)f(eac)m(h)h(line)630 3122 y(in)36 b(turn.)58 b(An)m(y)36 b(n)m(umeric)h(argumen)m(t)f(supplied)g(to)h(these)g(successiv)m(e)g -(calls)h(determines)630 3290 y(the)d(direction)g(to)h(mo)m(v)m(e)g +(calls)h(determines)630 3231 y(the)d(direction)g(to)h(mo)m(v)m(e)g (through)e(the)h(history)-8 b(.)54 b(A)35 b(negativ)m(e)i(argumen)m(t)e -(switc)m(hes)h(the)630 3399 y(direction)23 b(through)g(the)g(history)f +(switc)m(hes)h(the)630 3341 y(direction)23 b(through)g(the)g(history)f (\(bac)m(k)i(or)f(forw)m(ard\).)38 b(The)22 b(history)h(expansion)g -(facilities)630 3509 y(are)28 b(used)f(to)h(extract)h(the)f(last)g +(facilities)630 3450 y(are)28 b(used)f(to)h(extract)h(the)f(last)g (argumen)m(t,)h(as)e(if)h(the)g(`)p Fn(!$)p Fo(')f(history)g(expansion) -h(had)f(b)s(een)630 3618 y(sp)s(eci\014ed.)150 3791 y -Fn(operate-and-get-next)e(\(C-o\))630 3900 y Fo(Accept)30 +h(had)f(b)s(een)630 3560 y(sp)s(eci\014ed.)150 3718 y +Fn(operate-and-get-next)e(\(C-o\))630 3827 y Fo(Accept)30 b(the)g(curren)m(t)e(line)i(for)f(return)f(to)h(the)h(calling)g -(application)h(as)e(if)g(a)h(newline)f(had)630 4010 y(b)s(een)22 +(application)h(as)e(if)g(a)h(newline)f(had)630 3937 y(b)s(een)22 b(en)m(tered,)k(and)d(fetc)m(h)h(the)f(next)g(line)h(relativ)m(e)h(to)f -(the)f(curren)m(t)g(line)h(from)f(the)g(history)630 4120 +(the)f(curren)m(t)g(line)h(from)f(the)g(history)630 4046 y(for)31 b(editing.)43 b(A)31 b(n)m(umeric)f(argumen)m(t,)i(if)f (supplied,)f(sp)s(eci\014es)h(the)g(history)f(en)m(try)i(to)f(use)630 -4229 y(instead)g(of)f(the)h(curren)m(t)f(line.)150 4441 -y Fd(1.4.3)63 b(Commands)42 b(F)-10 b(or)41 b(Changing)g(T)-10 -b(ext)150 4620 y Fg(end-of-file)27 b Fn(\(usually)h(C-d\))630 -4729 y Fo(The)e(c)m(haracter)h(indicating)h(end-of-\014le)e(as)h(set,)g -(for)f(example,)i(b)m(y)e Fn(stty)p Fo(.)39 b(If)25 b(this)h(c)m -(harac-)630 4839 y(ter)c(is)g(read)g(when)e(there)i(are)h(no)e(c)m -(haracters)j(on)d(the)h(line,)i(and)d(p)s(oin)m(t)h(is)g(at)h(the)f(b)s -(eginning)630 4948 y(of)31 b(the)f(line,)h(Readline)g(in)m(terprets)g -(it)g(as)f(the)h(end)f(of)g(input)f(and)h(returns)f Fh(eof)p -Fo(.)150 5121 y Fn(delete-char)e(\(C-d\))630 5230 y Fo(Delete)35 -b(the)f(c)m(haracter)h(at)f(p)s(oin)m(t.)49 b(If)33 b(this)g(function)g -(is)g(b)s(ound)e(to)j(the)g(same)f(c)m(haracter)630 5340 -y(as)e(the)f(tt)m(y)i Fh(eof)d Fo(c)m(haracter,)j(as)f -Fg(C-d)e Fo(commonly)i(is,)g(see)g(ab)s(o)m(v)m(e)h(for)e(the)g -(e\013ects.)p eop end -%%Page: 19 22 -TeXDict begin 19 21 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(19)150 299 y Fn -(backward-delete-char)25 b(\(Rubout\))630 408 y Fo(Delete)32 -b(the)f(c)m(haracter)g(b)s(ehind)e(the)h(cursor.)40 b(A)30 -b(n)m(umeric)g(argumen)m(t)h(means)f(to)h(kill)g(the)630 -518 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150 -669 y Fn(forward-backward-delete-)o(char)24 b(\(\))630 -779 y Fo(Delete)40 b(the)f(c)m(haracter)h(under)c(the)j(cursor,)h +4156 y(instead)g(of)f(the)h(curren)m(t)f(line.)150 4314 +y Fn(fetch-history)d(\(\))630 4423 y Fo(With)e(a)f(n)m(umeric)g +(argumen)m(t,)i(fetc)m(h)f(that)g(en)m(try)f(from)g(the)g(history)g +(list)h(and)e(mak)m(e)i(it)g(the)630 4533 y(curren)m(t)30 +b(line.)41 b(Without)30 b(an)g(argumen)m(t,)h(mo)m(v)m(e)g(bac)m(k)g +(to)f(the)g(\014rst)f(en)m(try)h(in)g(the)g(history)630 +4643 y(list.)150 4840 y Fd(1.4.3)63 b(Commands)42 b(F)-10 +b(or)41 b(Changing)g(T)-10 b(ext)150 5011 y Fg(end-of-file)27 +b Fn(\(usually)h(C-d\))630 5121 y Fo(The)e(c)m(haracter)h(indicating)h +(end-of-\014le)e(as)h(set,)g(for)f(example,)i(b)m(y)e +Fn(stty)p Fo(.)39 b(If)25 b(this)h(c)m(harac-)630 5230 +y(ter)c(is)g(read)g(when)e(there)i(are)h(no)e(c)m(haracters)j(on)d(the) +h(line,)i(and)d(p)s(oin)m(t)h(is)g(at)h(the)f(b)s(eginning)630 +5340 y(of)31 b(the)f(line,)h(Readline)g(in)m(terprets)g(it)g(as)f(the)h +(end)f(of)g(input)f(and)h(returns)f Fh(eof)p Fo(.)p eop +end +%%Page: 20 23 +TeXDict begin 20 22 bop 150 -116 a Fo(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(20)150 299 y Fn(delete-char)27 +b(\(C-d\))630 408 y Fo(Delete)35 b(the)f(c)m(haracter)h(at)f(p)s(oin)m +(t.)49 b(If)33 b(this)g(function)g(is)g(b)s(ound)e(to)j(the)g(same)f(c) +m(haracter)630 518 y(as)e(the)f(tt)m(y)i Fh(eof)d Fo(c)m(haracter,)j +(as)f Fg(C-d)e Fo(commonly)i(is,)g(see)g(ab)s(o)m(v)m(e)h(for)e(the)g +(e\013ects.)150 669 y Fn(backward-delete-char)25 b(\(Rubout\))630 +779 y Fo(Delete)32 b(the)f(c)m(haracter)g(b)s(ehind)e(the)h(cursor.)40 +b(A)30 b(n)m(umeric)g(argumen)m(t)h(means)f(to)h(kill)g(the)630 +889 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150 +1040 y Fn(forward-backward-delete-)o(char)24 b(\(\))630 +1149 y Fo(Delete)40 b(the)f(c)m(haracter)h(under)c(the)j(cursor,)h (unless)d(the)i(cursor)e(is)h(at)h(the)g(end)e(of)i(the)630 -889 y(line,)33 b(in)e(whic)m(h)g(case)i(the)f(c)m(haracter)h(b)s(ehind) -d(the)i(cursor)f(is)g(deleted.)46 b(By)32 b(default,)g(this)630 -998 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150 -1149 y Fn(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 1259 +1259 y(line,)33 b(in)e(whic)m(h)g(case)i(the)f(c)m(haracter)h(b)s +(ehind)d(the)i(cursor)f(is)g(deleted.)46 b(By)32 b(default,)g(this)630 +1369 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150 +1520 y Fn(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 1630 y Fo(Add)j(the)i(next)f(c)m(haracter)i(t)m(yp)s(ed)e(to)h(the)f(line)h (v)m(erbatim.)53 b(This)33 b(is)i(ho)m(w)f(to)h(insert)f(k)m(ey)630 -1369 y(sequences)d(lik)m(e)g Fg(C-q)p Fo(,)f(for)g(example.)150 -1520 y Fn(tab-insert)e(\(M-TAB\))630 1630 y Fo(Insert)i(a)h(tab)f(c)m -(haracter.)150 1781 y Fn(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o -(\))630 1891 y Fo(Insert)g(y)m(ourself.)150 2042 y Fn -(bracketed-paste-begin)25 b(\(\))630 2151 y Fo(This)f(function)h(is)f +1739 y(sequences)d(lik)m(e)g Fg(C-q)p Fo(,)f(for)g(example.)150 +1891 y Fn(tab-insert)e(\(M-TAB\))630 2000 y Fo(Insert)i(a)h(tab)f(c)m +(haracter.)150 2151 y Fn(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o +(\))630 2261 y Fo(Insert)g(y)m(ourself.)150 2412 y Fn +(bracketed-paste-begin)25 b(\(\))630 2522 y Fo(This)f(function)h(is)f (in)m(tended)h(to)h(b)s(e)e(b)s(ound)f(to)i(the)g Fn(")p Fo(brac)m(k)m(eted)h(paste)p Fn(")f Fo(escap)s(e)h(sequence)630 -2261 y(sen)m(t)38 b(b)m(y)f(some)h(terminals,)i(and)d(suc)m(h)g(a)h +2632 y(sen)m(t)38 b(b)m(y)f(some)h(terminals,)i(and)d(suc)m(h)g(a)h (binding)e(is)i(assigned)f(b)m(y)h(default.)62 b(It)38 -b(allo)m(ws)630 2371 y(Readline)33 b(to)g(insert)g(the)f(pasted)h(text) +b(allo)m(ws)630 2741 y(Readline)33 b(to)g(insert)g(the)f(pasted)h(text) g(as)g(a)g(single)g(unit)f(without)h(treating)h(eac)m(h)f(c)m(har-)630 -2480 y(acter)40 b(as)f(if)g(it)g(had)f(b)s(een)g(read)h(from)f(the)h(k) +2851 y(acter)40 b(as)f(if)g(it)g(had)f(b)s(een)g(read)h(from)f(the)h(k) m(eyb)s(oard.)66 b(The)39 b(c)m(haracters)h(are)f(inserted)630 -2590 y(as)44 b(if)g(eac)m(h)i(one)e(w)m(as)g(b)s(ound)e(to)j +2960 y(as)44 b(if)g(eac)m(h)i(one)e(w)m(as)g(b)s(ound)e(to)j Fn(self-insert)c Fo(instead)j(of)h(executing)g(an)m(y)f(editing)630 -2699 y(commands.)630 2830 y(Brac)m(k)m(eted)38 b(paste)f(sets)f(the)h +3070 y(commands.)630 3200 y(Brac)m(k)m(eted)38 b(paste)f(sets)f(the)h (region)f(\(the)h(c)m(haracters)g(b)s(et)m(w)m(een)g(p)s(oin)m(t)f(and) -g(the)g(mark\))630 2939 y(to)j(the)g(inserted)f(text.)65 +g(the)g(mark\))630 3310 y(to)j(the)g(inserted)f(text.)65 b(It)39 b(uses)f(the)g(concept)h(of)g(an)f Ff(active)i(mark)10 -b Fo(:)57 b(when)38 b(the)g(mark)630 3049 y(is)d(activ)m(e,)k(Readline) +b Fo(:)57 b(when)38 b(the)g(mark)630 3420 y(is)d(activ)m(e,)k(Readline) c(redispla)m(y)h(uses)e(the)h(terminal's)h(standout)f(mo)s(de)f(to)i -(denote)g(the)630 3159 y(region.)150 3310 y Fn(transpose-chars)26 -b(\(C-t\))630 3420 y Fo(Drag)33 b(the)f(c)m(haracter)h(b)s(efore)f(the) +(denote)g(the)630 3529 y(region.)150 3680 y Fn(transpose-chars)26 +b(\(C-t\))630 3790 y Fo(Drag)33 b(the)f(c)m(haracter)h(b)s(efore)f(the) g(cursor)f(forw)m(ard)h(o)m(v)m(er)h(the)f(c)m(haracter)i(at)e(the)g -(cursor,)630 3529 y(mo)m(ving)k(the)g(cursor)f(forw)m(ard)g(as)g(w)m +(cursor,)630 3900 y(mo)m(ving)k(the)g(cursor)f(forw)m(ard)g(as)g(w)m (ell.)57 b(If)35 b(the)h(insertion)g(p)s(oin)m(t)f(is)g(at)i(the)e(end) -g(of)h(the)630 3639 y(line,)24 b(then)e(this)g(transp)s(oses)f(the)h +g(of)h(the)630 4009 y(line,)24 b(then)e(this)g(transp)s(oses)f(the)h (last)h(t)m(w)m(o)g(c)m(haracters)g(of)f(the)h(line.)38 -b(Negativ)m(e)25 b(argumen)m(ts)630 3748 y(ha)m(v)m(e)32 -b(no)e(e\013ect.)150 3900 y Fn(transpose-words)c(\(M-t\))630 -4009 y Fo(Drag)33 b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(past)g +b(Negativ)m(e)25 b(argumen)m(ts)630 4119 y(ha)m(v)m(e)32 +b(no)e(e\013ect.)150 4270 y Fn(transpose-words)c(\(M-t\))630 +4380 y Fo(Drag)33 b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(past)g (the)h(w)m(ord)f(after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)s(oin)m(t)f(past) -g(that)630 4119 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27 +g(that)630 4489 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27 b(the)i(insertion)f(p)s(oin)m(t)h(is)f(at)h(the)g(end)e(of)i(the)f -(line,)i(this)e(transp)s(oses)g(the)630 4228 y(last)j(t)m(w)m(o)h(w)m -(ords)e(on)g(the)h(line.)150 4380 y Fn(upcase-word)c(\(M-u\))630 -4489 y Fo(Upp)s(ercase)32 b(the)g(curren)m(t)g(\(or)g(follo)m(wing\))i +(line,)i(this)e(transp)s(oses)g(the)630 4599 y(last)j(t)m(w)m(o)h(w)m +(ords)e(on)g(the)h(line.)150 4750 y Fn(upcase-word)c(\(M-u\))630 +4860 y Fo(Upp)s(ercase)32 b(the)g(curren)m(t)g(\(or)g(follo)m(wing\))i (w)m(ord.)45 b(With)32 b(a)g(negativ)m(e)j(argumen)m(t,)e(upp)s(er-)630 -4599 y(case)e(the)g(previous)f(w)m(ord,)g(but)g(do)g(not)h(mo)m(v)m(e)h -(the)e(cursor.)150 4750 y Fn(downcase-word)d(\(M-l\))630 -4860 y Fo(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m(wing\))i +4969 y(case)e(the)g(previous)f(w)m(ord,)g(but)g(do)g(not)h(mo)m(v)m(e)h +(the)e(cursor.)150 5121 y Fn(downcase-word)d(\(M-l\))630 +5230 y Fo(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m(wing\))i (w)m(ord.)37 b(With)22 b(a)g(negativ)m(e)i(argumen)m(t,)g(lo)m(w)m -(ercase)630 4969 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f(mo)m -(v)m(e)i(the)f(cursor.)150 5121 y Fn(capitalize-word)26 -b(\(M-c\))630 5230 y Fo(Capitalize)d(the)f(curren)m(t)f(\(or)g(follo)m +(ercase)630 5340 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f(mo)m +(v)m(e)i(the)f(cursor.)p eop end +%%Page: 21 24 +TeXDict begin 21 23 bop 150 -116 a Fo(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(21)150 299 y Fn(capitalize-word)26 +b(\(M-c\))630 408 y Fo(Capitalize)d(the)f(curren)m(t)f(\(or)g(follo)m (wing\))i(w)m(ord.)38 b(With)21 b(a)h(negativ)m(e)h(argumen)m(t,)h -(capitalize)630 5340 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f -(mo)m(v)m(e)i(the)f(cursor.)p eop end -%%Page: 20 23 -TeXDict begin 20 22 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(20)150 299 y Fn(overwrite-mode)26 -b(\(\))630 408 y Fo(T)-8 b(oggle)35 b(o)m(v)m(erwrite)g(mo)s(de.)48 +(capitalize)630 518 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f +(mo)m(v)m(e)i(the)f(cursor.)150 678 y Fn(overwrite-mode)26 +b(\(\))630 788 y Fo(T)-8 b(oggle)35 b(o)m(v)m(erwrite)g(mo)s(de.)48 b(With)33 b(an)g(explicit)h(p)s(ositiv)m(e)g(n)m(umeric)f(argumen)m(t,) -h(switc)m(hes)630 518 y(to)22 b(o)m(v)m(erwrite)i(mo)s(de.)37 +h(switc)m(hes)630 897 y(to)22 b(o)m(v)m(erwrite)i(mo)s(de.)37 b(With)22 b(an)g(explicit)h(non-p)s(ositiv)m(e)f(n)m(umeric)g(argumen)m -(t,)i(switc)m(hes)e(to)630 628 y(insert)30 b(mo)s(de.)41 +(t,)i(switc)m(hes)e(to)630 1007 y(insert)30 b(mo)s(de.)41 b(This)30 b(command)h(a\013ects)h(only)e Fn(emacs)f Fo(mo)s(de;)i -Fn(vi)f Fo(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 737 +Fn(vi)f Fo(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 1116 y(di\013eren)m(tly)-8 b(.)42 b(Eac)m(h)31 b(call)h(to)f Fn(readline\(\))c Fo(starts)k(in)f(insert)g(mo)s(de.)630 -877 y(In)52 b(o)m(v)m(erwrite)h(mo)s(de,)58 b(c)m(haracters)c(b)s(ound) -c(to)j Fn(self-insert)c Fo(replace)k(the)g(text)g(at)630 -986 y(p)s(oin)m(t)59 b(rather)f(than)h(pushing)e(the)i(text)g(to)h(the) -f(righ)m(t.)126 b(Characters)59 b(b)s(ound)d(to)630 1096 -y Fn(backward-delete-char)25 b Fo(replace)31 b(the)g(c)m(haracter)h(b)s -(efore)e(p)s(oin)m(t)g(with)g(a)h(space.)630 1236 y(By)g(default,)f -(this)h(command)f(is)g(un)m(b)s(ound.)150 1445 y Fd(1.4.4)63 -b(Killing)42 b(And)e(Y)-10 b(anking)150 1622 y Fn(kill-line)28 -b(\(C-k\))630 1732 y Fo(Kill)k(the)f(text)i(from)d(p)s(oin)m(t)i(to)g -(the)f(end)g(of)g(the)h(line.)44 b(With)31 b(a)h(negativ)m(e)i(n)m -(umeric)d(argu-)630 1841 y(men)m(t,)g(kill)g(bac)m(kw)m(ard)g(from)f -(the)g(cursor)g(to)h(the)g(b)s(eginning)e(of)i(the)g(curren)m(t)f -(line.)150 2011 y Fn(backward-kill-line)25 b(\(C-x)30 -b(Rubout\))630 2120 y Fo(Kill)40 b(bac)m(kw)m(ard)h(from)e(the)h -(cursor)g(to)g(the)g(b)s(eginning)g(of)g(the)g(curren)m(t)f(line.)70 -b(With)41 b(a)630 2230 y(negativ)m(e)47 b(n)m(umeric)e(argumen)m(t,)50 +1251 y(In)52 b(o)m(v)m(erwrite)h(mo)s(de,)58 b(c)m(haracters)c(b)s +(ound)c(to)j Fn(self-insert)c Fo(replace)k(the)g(text)g(at)630 +1361 y(p)s(oin)m(t)59 b(rather)f(than)h(pushing)e(the)i(text)g(to)h +(the)f(righ)m(t.)126 b(Characters)59 b(b)s(ound)d(to)630 +1470 y Fn(backward-delete-char)25 b Fo(replace)31 b(the)g(c)m(haracter) +h(b)s(efore)e(p)s(oin)m(t)g(with)g(a)h(space.)630 1605 +y(By)g(default,)f(this)h(command)f(is)g(un)m(b)s(ound.)150 +1805 y Fd(1.4.4)63 b(Killing)42 b(And)e(Y)-10 b(anking)150 +1977 y Fn(kill-line)28 b(\(C-k\))630 2087 y Fo(Kill)k(the)f(text)i +(from)d(p)s(oin)m(t)i(to)g(the)f(end)g(of)g(the)h(line.)44 +b(With)31 b(a)h(negativ)m(e)i(n)m(umeric)d(argu-)630 +2197 y(men)m(t,)g(kill)g(bac)m(kw)m(ard)g(from)f(the)g(cursor)g(to)h +(the)g(b)s(eginning)e(of)i(the)g(curren)m(t)f(line.)150 +2357 y Fn(backward-kill-line)25 b(\(C-x)30 b(Rubout\))630 +2466 y Fo(Kill)40 b(bac)m(kw)m(ard)h(from)e(the)h(cursor)g(to)g(the)g +(b)s(eginning)g(of)g(the)g(curren)m(t)f(line.)70 b(With)41 +b(a)630 2576 y(negativ)m(e)47 b(n)m(umeric)e(argumen)m(t,)50 b(kill)c(forw)m(ard)e(from)h(the)g(cursor)g(to)h(the)f(end)f(of)i(the) -630 2339 y(curren)m(t)30 b(line.)150 2509 y Fn(unix-line-discard)c -(\(C-u\))630 2619 y Fo(Kill)31 b(bac)m(kw)m(ard)g(from)e(the)i(cursor)f +630 2685 y(curren)m(t)30 b(line.)150 2845 y Fn(unix-line-discard)c +(\(C-u\))630 2955 y Fo(Kill)31 b(bac)m(kw)m(ard)g(from)e(the)i(cursor)f (to)h(the)f(b)s(eginning)g(of)h(the)f(curren)m(t)g(line.)150 -2788 y Fn(kill-whole-line)c(\(\))630 2898 y Fo(Kill)37 +3115 y Fn(kill-whole-line)c(\(\))630 3225 y Fo(Kill)37 b(all)g(c)m(haracters)h(on)f(the)f(curren)m(t)h(line,)h(no)f(matter)g (where)f(p)s(oin)m(t)h(is.)59 b(By)36 b(default,)630 -3007 y(this)30 b(is)h(un)m(b)s(ound.)150 3177 y Fn(kill-word)d(\(M-d\)) -630 3287 y Fo(Kill)i(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f +3334 y(this)30 b(is)h(un)m(b)s(ound.)150 3494 y Fn(kill-word)d(\(M-d\)) +630 3604 y Fo(Kill)i(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f (curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)h -(the)g(end)630 3396 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8 +(the)g(end)630 3713 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8 b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f Fn(forward-word)p -Fo(.)150 3566 y Fn(backward-kill-word)25 b(\(M-DEL\))630 -3675 y Fo(Kill)k(the)g(w)m(ord)g(b)s(ehind)e(p)s(oin)m(t.)40 +Fo(.)150 3874 y Fn(backward-kill-word)25 b(\(M-DEL\))630 +3983 y Fo(Kill)k(the)g(w)m(ord)g(b)s(ehind)e(p)s(oin)m(t.)40 b(W)-8 b(ord)29 b(b)s(oundaries)f(are)h(the)g(same)g(as)g -Fn(backward-word)p Fo(.)150 3845 y Fn(shell-transpose-words)c -(\(M-C-t\))630 3955 y Fo(Drag)33 b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin) +Fn(backward-word)p Fo(.)150 4143 y Fn(shell-transpose-words)c +(\(M-C-t\))630 4253 y Fo(Drag)33 b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin) m(t)g(past)g(the)h(w)m(ord)f(after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)s -(oin)m(t)f(past)g(that)630 4064 y(w)m(ord)c(as)h(w)m(ell.)41 +(oin)m(t)f(past)g(that)630 4362 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27 b(the)i(insertion)f(p)s(oin)m(t)h(is)f(at)h(the)g(end)e(of)i -(the)f(line,)i(this)e(transp)s(oses)g(the)630 4174 y(last)j(t)m(w)m(o)h +(the)f(line,)i(this)e(transp)s(oses)g(the)630 4472 y(last)j(t)m(w)m(o)h (w)m(ords)d(on)i(the)f(line.)41 b(W)-8 b(ord)31 b(b)s(oundaries)e(are)h -(the)h(same)f(as)h Fn(shell-forward-)630 4283 y(word)e -Fo(and)h Fn(shell-backward-word)p Fo(.)150 4453 y Fn(unix-word-rubout)c -(\(C-w\))630 4562 y Fo(Kill)32 b(the)g(w)m(ord)f(b)s(ehind)f(p)s(oin)m +(the)h(same)f(as)h Fn(shell-forward-)630 4582 y(word)e +Fo(and)h Fn(shell-backward-word)p Fo(.)150 4742 y Fn(unix-word-rubout)c +(\(C-w\))630 4851 y Fo(Kill)32 b(the)g(w)m(ord)f(b)s(ehind)f(p)s(oin)m (t,)i(using)f(white)h(space)g(as)g(a)g(w)m(ord)f(b)s(oundary)-8 -b(.)43 b(The)31 b(killed)630 4672 y(text)g(is)g(sa)m(v)m(ed)g(on)g(the) -f(kill-ring.)150 4842 y Fn(unix-filename-rubout)25 b(\(\))630 -4951 y Fo(Kill)37 b(the)f(w)m(ord)g(b)s(ehind)f(p)s(oin)m(t,)j(using)e +b(.)43 b(The)31 b(killed)630 4961 y(text)g(is)g(sa)m(v)m(ed)g(on)g(the) +f(kill-ring.)150 5121 y Fn(unix-filename-rubout)25 b(\(\))630 +5230 y Fo(Kill)37 b(the)f(w)m(ord)g(b)s(ehind)f(p)s(oin)m(t,)j(using)e (white)g(space)h(and)f(the)g(slash)g(c)m(haracter)i(as)f(the)630 -5061 y(w)m(ord)30 b(b)s(oundaries.)39 b(The)30 b(killed)h(text)g(is)g -(sa)m(v)m(ed)g(on)g(the)f(kill-ring.)150 5230 y Fn -(delete-horizontal-space)24 b(\(\))630 5340 y Fo(Delete)33 +5340 y(w)m(ord)30 b(b)s(oundaries.)39 b(The)30 b(killed)h(text)g(is)g +(sa)m(v)m(ed)g(on)g(the)f(kill-ring.)p eop end +%%Page: 22 25 +TeXDict begin 22 24 bop 150 -116 a Fo(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(22)150 299 y Fn +(delete-horizontal-space)24 b(\(\))630 408 y Fo(Delete)33 b(all)e(spaces)g(and)e(tabs)i(around)e(p)s(oin)m(t.)41 -b(By)31 b(default,)f(this)h(is)f(un)m(b)s(ound.)p eop -end -%%Page: 21 24 -TeXDict begin 21 23 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(21)150 299 y Fn(kill-region)27 -b(\(\))630 408 y Fo(Kill)k(the)f(text)i(in)e(the)g(curren)m(t)h -(region.)41 b(By)31 b(default,)f(this)h(command)f(is)g(un)m(b)s(ound.) -150 554 y Fn(copy-region-as-kill)25 b(\(\))630 663 y -Fo(Cop)m(y)34 b(the)g(text)h(in)f(the)g(region)g(to)h(the)f(kill)h -(bu\013er,)f(so)g(it)h(can)f(b)s(e)f(y)m(ank)m(ed)i(righ)m(t)f(a)m(w)m -(a)m(y)-8 b(.)630 773 y(By)31 b(default,)f(this)h(command)f(is)g(un)m -(b)s(ound.)150 918 y Fn(copy-backward-word)25 b(\(\))630 -1028 y Fo(Cop)m(y)38 b(the)h(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(to)i +b(By)31 b(default,)f(this)h(is)f(un)m(b)s(ound.)150 564 +y Fn(kill-region)d(\(\))630 673 y Fo(Kill)k(the)f(text)i(in)e(the)g +(curren)m(t)h(region.)41 b(By)31 b(default,)f(this)h(command)f(is)g(un) +m(b)s(ound.)150 829 y Fn(copy-region-as-kill)25 b(\(\))630 +938 y Fo(Cop)m(y)34 b(the)g(text)h(in)f(the)g(region)g(to)h(the)f(kill) +h(bu\013er,)f(so)g(it)h(can)f(b)s(e)f(y)m(ank)m(ed)i(righ)m(t)f(a)m(w)m +(a)m(y)-8 b(.)630 1048 y(By)31 b(default,)f(this)h(command)f(is)g(un)m +(b)s(ound.)150 1203 y Fn(copy-backward-word)25 b(\(\))630 +1313 y Fo(Cop)m(y)38 b(the)h(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(to)i (the)e(kill)h(bu\013er.)64 b(The)38 b(w)m(ord)g(b)s(oundaries)f(are)i -(the)630 1138 y(same)31 b(as)f Fn(backward-word)p Fo(.)38 +(the)630 1422 y(same)31 b(as)f Fn(backward-word)p Fo(.)38 b(By)30 b(default,)h(this)f(command)g(is)h(un)m(b)s(ound.)150 -1283 y Fn(copy-forward-word)26 b(\(\))630 1393 y Fo(Cop)m(y)31 +1578 y Fn(copy-forward-word)26 b(\(\))630 1687 y Fo(Cop)m(y)31 b(the)g(w)m(ord)g(follo)m(wing)h(p)s(oin)m(t)f(to)h(the)f(kill)h (bu\013er.)42 b(The)30 b(w)m(ord)h(b)s(oundaries)e(are)j(the)630 -1502 y(same)f(as)f Fn(forward-word)p Fo(.)38 b(By)30 +1797 y(same)f(as)f Fn(forward-word)p Fo(.)38 b(By)30 b(default,)h(this)g(command)f(is)g(un)m(b)s(ound.)150 -1647 y Fn(yank)f(\(C-y\))630 1757 y Fo(Y)-8 b(ank)31 +1952 y Fn(yank)f(\(C-y\))630 2062 y Fo(Y)-8 b(ank)31 b(the)f(top)h(of)g(the)f(kill)h(ring)f(in)m(to)i(the)e(bu\013er)g(at)h -(p)s(oin)m(t.)150 1902 y Fn(yank-pop)d(\(M-y\))630 2012 +(p)s(oin)m(t.)150 2217 y Fn(yank-pop)d(\(M-y\))630 2327 y Fo(Rotate)36 b(the)f(kill-ring,)i(and)d(y)m(ank)h(the)f(new)g(top.)54 b(Y)-8 b(ou)35 b(can)g(only)f(do)h(this)f(if)h(the)g(prior)630 -2122 y(command)30 b(is)h Fn(yank)e Fo(or)h Fn(yank-pop)p -Fo(.)150 2307 y Fd(1.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m -(ts)150 2472 y Fn(digit-argument)26 b(\()p Fg(M-0)p Fn(,)j -Fg(M-1)p Fn(,)h(...)f Fg(M--)p Fn(\))630 2581 y Fo(Add)d(this)h(digit)g +2436 y(command)30 b(is)h Fn(yank)e Fo(or)h Fn(yank-pop)p +Fo(.)150 2631 y Fd(1.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m +(ts)150 2801 y Fn(digit-argument)26 b(\()p Fg(M-0)p Fn(,)j +Fg(M-1)p Fn(,)h(...)f Fg(M--)p Fn(\))630 2911 y Fo(Add)d(this)h(digit)g (to)h(the)f(argumen)m(t)g(already)h(accum)m(ulating,)h(or)e(start)h(a)f -(new)f(argumen)m(t.)630 2691 y Fg(M--)j Fo(starts)i(a)g(negativ)m(e)i -(argumen)m(t.)150 2836 y Fn(universal-argument)25 b(\(\))630 -2946 y Fo(This)g(is)g(another)h(w)m(a)m(y)g(to)h(sp)s(ecify)e(an)g +(new)f(argumen)m(t.)630 3020 y Fg(M--)j Fo(starts)i(a)g(negativ)m(e)i +(argumen)m(t.)150 3176 y Fn(universal-argument)25 b(\(\))630 +3285 y Fo(This)g(is)g(another)h(w)m(a)m(y)g(to)h(sp)s(ecify)e(an)g (argumen)m(t.)40 b(If)25 b(this)g(command)h(is)f(follo)m(w)m(ed)i(b)m -(y)f(one)630 3055 y(or)k(more)f(digits,)i(optionally)g(with)e(a)h +(y)f(one)630 3395 y(or)k(more)f(digits,)i(optionally)g(with)e(a)h (leading)h(min)m(us)e(sign,)h(those)g(digits)g(de\014ne)f(the)h(ar-)630 -3165 y(gumen)m(t.)41 b(If)28 b(the)i(command)f(is)g(follo)m(w)m(ed)h(b) +3505 y(gumen)m(t.)41 b(If)28 b(the)i(command)f(is)g(follo)m(w)m(ed)h(b) m(y)f(digits,)i(executing)f Fn(universal-argument)630 -3275 y Fo(again)j(ends)e(the)h(n)m(umeric)f(argumen)m(t,)i(but)e(is)h +3614 y Fo(again)j(ends)e(the)h(n)m(umeric)f(argumen)m(t,)i(but)e(is)h (otherwise)g(ignored.)45 b(As)32 b(a)g(sp)s(ecial)h(case,)630 -3384 y(if)g(this)g(command)f(is)h(immediately)h(follo)m(w)m(ed)h(b)m(y) +3724 y(if)g(this)g(command)f(is)h(immediately)h(follo)m(w)m(ed)h(b)m(y) d(a)h(c)m(haracter)i(that)e(is)g(neither)g(a)g(digit)630 -3494 y(nor)41 b(min)m(us)f(sign,)k(the)e(argumen)m(t)f(coun)m(t)h(for)f +3833 y(nor)41 b(min)m(us)f(sign,)k(the)e(argumen)m(t)f(coun)m(t)h(for)f (the)h(next)f(command)g(is)g(m)m(ultiplied)h(b)m(y)630 -3603 y(four.)54 b(The)35 b(argumen)m(t)g(coun)m(t)h(is)f(initially)h +3943 y(four.)54 b(The)35 b(argumen)m(t)g(coun)m(t)h(is)f(initially)h (one,)h(so)e(executing)i(this)e(function)f(the)i(\014rst)630 -3713 y(time)29 b(mak)m(es)h(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)h +4053 y(time)29 b(mak)m(es)h(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)h (second)g(time)g(mak)m(es)h(the)e(argumen)m(t)h(coun)m(t)630 -3822 y(sixteen,)i(and)f(so)h(on.)40 b(By)31 b(default,)g(this)f(is)g -(not)h(b)s(ound)d(to)k(a)e(k)m(ey)-8 b(.)150 4008 y Fd(1.4.6)63 +4162 y(sixteen,)i(and)f(so)h(on.)40 b(By)31 b(default,)g(this)f(is)g +(not)h(b)s(ound)d(to)k(a)e(k)m(ey)-8 b(.)150 4357 y Fd(1.4.6)63 b(Letting)40 b(Readline)h(T)m(yp)s(e)g(F)-10 b(or)42 -b(Y)-10 b(ou)150 4173 y Fn(complete)28 b(\(TAB\))630 -4282 y Fo(A)m(ttempt)c(to)f(p)s(erform)e(completion)j(on)f(the)g(text)g +b(Y)-10 b(ou)150 4527 y Fn(complete)28 b(\(TAB\))630 +4637 y Fo(A)m(ttempt)c(to)f(p)s(erform)e(completion)j(on)f(the)g(text)g (b)s(efore)f(p)s(oin)m(t.)39 b(The)22 b(actual)i(completion)630 -4392 y(p)s(erformed)29 b(is)h(application-sp)s(eci\014c.)42 +4746 y(p)s(erformed)29 b(is)h(application-sp)s(eci\014c.)42 b(The)30 b(default)h(is)f(\014lename)h(completion.)150 -4537 y Fn(possible-completions)25 b(\(M-?\))630 4647 +4902 y Fn(possible-completions)25 b(\(M-?\))630 5011 y Fo(List)35 b(the)g(p)s(ossible)f(completions)i(of)e(the)h(text)h(b)s (efore)e(p)s(oin)m(t.)54 b(When)34 b(displa)m(ying)h(com-)630 -4756 y(pletions,)f(Readline)f(sets)f(the)h(n)m(um)m(b)s(er)e(of)i +5121 y(pletions,)f(Readline)f(sets)f(the)h(n)m(um)m(b)s(er)e(of)i (columns)f(used)f(for)i(displa)m(y)f(to)h(the)g(v)-5 -b(alue)33 b(of)630 4866 y Fn(completion-display-width)o +b(alue)33 b(of)630 5230 y Fn(completion-display-width)o Fo(,)g(the)j(v)-5 b(alue)37 b(of)g(the)f(en)m(vironmen)m(t)h(v)-5 -b(ariable)38 b Fn(COLUMNS)p Fo(,)630 4975 y(or)30 b(the)h(screen)f -(width,)g(in)g(that)h(order.)150 5121 y Fn(insert-completions)25 -b(\(M-*\))630 5230 y Fo(Insert)30 b(all)h(completions)h(of)f(the)g -(text)g(b)s(efore)f(p)s(oin)m(t)h(that)g(w)m(ould)f(ha)m(v)m(e)i(b)s -(een)e(generated)630 5340 y(b)m(y)g Fn(possible-completions)p -Fo(.)p eop end -%%Page: 22 25 -TeXDict begin 22 24 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(22)150 299 y Fn(menu-complete)27 -b(\(\))630 408 y Fo(Similar)d(to)g Fn(complete)p Fo(,)f(but)h(replaces) -g(the)g(w)m(ord)g(to)g(b)s(e)f(completed)i(with)e(a)i(single)f(matc)m -(h)630 518 y(from)37 b(the)h(list)h(of)f(p)s(ossible)f(completions.)64 +b(ariable)38 b Fn(COLUMNS)p Fo(,)630 5340 y(or)30 b(the)h(screen)f +(width,)g(in)g(that)h(order.)p eop end +%%Page: 23 26 +TeXDict begin 23 25 bop 150 -116 a Fo(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(23)150 299 y Fn +(insert-completions)25 b(\(M-*\))630 408 y Fo(Insert)30 +b(all)h(completions)h(of)f(the)g(text)g(b)s(efore)f(p)s(oin)m(t)h(that) +g(w)m(ould)f(ha)m(v)m(e)i(b)s(een)e(generated)630 518 +y(b)m(y)g Fn(possible-completions)p Fo(.)150 673 y Fn(menu-complete)d +(\(\))630 783 y Fo(Similar)d(to)g Fn(complete)p Fo(,)f(but)h(replaces)g +(the)g(w)m(ord)g(to)g(b)s(e)f(completed)i(with)e(a)i(single)f(matc)m(h) +630 893 y(from)37 b(the)h(list)h(of)f(p)s(ossible)f(completions.)64 b(Rep)s(eated)39 b(execution)g(of)f Fn(menu-complete)630 -628 y Fo(steps)i(through)g(the)g(list)h(of)f(p)s(ossible)g +1002 y Fo(steps)i(through)g(the)g(list)h(of)f(p)s(ossible)g (completions,)k(inserting)c(eac)m(h)i(matc)m(h)f(in)f(turn.)630 -737 y(A)m(t)e(the)f(end)f(of)h(the)g(list)g(of)g(completions,)i(the)e +1112 y(A)m(t)e(the)f(end)f(of)h(the)g(list)g(of)g(completions,)i(the)e (b)s(ell)g(is)g(rung)f(\(sub)5 b(ject)36 b(to)i(the)f(setting)630 -847 y(of)f Fn(bell-style)p Fo(\))e(and)h(the)h(original)i(text)f(is)f +1221 y(of)f Fn(bell-style)p Fo(\))e(and)h(the)h(original)i(text)f(is)f (restored.)57 b(An)36 b(argumen)m(t)h(of)f Fe(n)f Fo(mo)m(v)m(es)i -Fe(n)630 956 y Fo(p)s(ositions)e(forw)m(ard)f(in)g(the)h(list)h(of)e +Fe(n)630 1331 y Fo(p)s(ositions)e(forw)m(ard)f(in)g(the)h(list)h(of)e (matc)m(hes;)39 b(a)c(negativ)m(e)i(argumen)m(t)e(ma)m(y)g(b)s(e)f -(used)g(to)630 1066 y(mo)m(v)m(e)40 b(bac)m(kw)m(ard)e(through)g(the)g +(used)g(to)630 1441 y(mo)m(v)m(e)40 b(bac)m(kw)m(ard)e(through)g(the)g (list.)65 b(This)38 b(command)g(is)g(in)m(tended)g(to)h(b)s(e)f(b)s -(ound)e(to)630 1176 y Fn(TAB)p Fo(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m -(y)i(default.)150 1331 y Fn(menu-complete-backward)24 -b(\(\))630 1441 y Fo(Iden)m(tical)36 b(to)g Fn(menu-complete)p +(ound)e(to)630 1550 y Fn(TAB)p Fo(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m +(y)i(default.)150 1705 y Fn(menu-complete-backward)24 +b(\(\))630 1815 y Fo(Iden)m(tical)36 b(to)g Fn(menu-complete)p Fo(,)d(but)h(mo)m(v)m(es)j(bac)m(kw)m(ard)e(through)f(the)i(list)f(of)g -(p)s(ossible)630 1550 y(completions,)d(as)e(if)h Fn(menu-complete)26 +(p)s(ossible)630 1925 y(completions,)d(as)e(if)h Fn(menu-complete)26 b Fo(had)k(b)s(een)g(giv)m(en)h(a)g(negativ)m(e)i(argumen)m(t.)150 -1705 y Fn(delete-char-or-list)25 b(\(\))630 1815 y Fo(Deletes)41 +2080 y Fn(delete-char-or-list)25 b(\(\))630 2190 y Fo(Deletes)41 b(the)e(c)m(haracter)h(under)e(the)h(cursor)f(if)h(not)g(at)g(the)h(b)s -(eginning)e(or)h(end)f(of)h(the)630 1925 y(line)50 b(\(lik)m(e)h +(eginning)e(or)h(end)f(of)h(the)630 2299 y(line)50 b(\(lik)m(e)h Fn(delete-char)p Fo(\).)96 b(If)49 b(at)h(the)g(end)f(of)h(the)f(line,) -55 b(b)s(eha)m(v)m(es)c(iden)m(tically)g(to)630 2034 +55 b(b)s(eha)m(v)m(es)c(iden)m(tically)g(to)630 2409 y Fn(possible-completions)p Fo(.)35 b(This)30 b(command)g(is)g(un)m(b)s -(ound)e(b)m(y)i(default.)150 2229 y Fd(1.4.7)63 b(Keyb)s(oard)41 -b(Macros)150 2399 y Fn(start-kbd-macro)26 b(\(C-x)j(\(\))630 -2509 y Fo(Begin)i(sa)m(ving)h(the)e(c)m(haracters)i(t)m(yp)s(ed)e(in)m +(ound)e(b)m(y)i(default.)150 2604 y Fd(1.4.7)63 b(Keyb)s(oard)41 +b(Macros)150 2774 y Fn(start-kbd-macro)26 b(\(C-x)j(\(\))630 +2883 y Fo(Begin)i(sa)m(ving)h(the)e(c)m(haracters)i(t)m(yp)s(ed)e(in)m (to)h(the)g(curren)m(t)f(k)m(eyb)s(oard)g(macro.)150 -2664 y Fn(end-kbd-macro)d(\(C-x)i(\)\))630 2774 y Fo(Stop)e(sa)m(ving)h +3039 y Fn(end-kbd-macro)d(\(C-x)i(\)\))630 3148 y Fo(Stop)e(sa)m(ving)h (the)g(c)m(haracters)g(t)m(yp)s(ed)f(in)m(to)i(the)e(curren)m(t)g(k)m -(eyb)s(oard)g(macro)h(and)f(sa)m(v)m(e)i(the)630 2883 -y(de\014nition.)150 3039 y Fn(call-last-kbd-macro)c(\(C-x)k(e\))630 -3148 y Fo(Re-execute)37 b(the)e(last)h(k)m(eyb)s(oard)f(macro)h +(eyb)s(oard)g(macro)h(and)f(sa)m(v)m(e)i(the)630 3258 +y(de\014nition.)150 3413 y Fn(call-last-kbd-macro)c(\(C-x)k(e\))630 +3523 y Fo(Re-execute)37 b(the)e(last)h(k)m(eyb)s(oard)f(macro)h (de\014ned,)f(b)m(y)h(making)f(the)g(c)m(haracters)i(in)e(the)630 -3258 y(macro)c(app)s(ear)f(as)g(if)h(t)m(yp)s(ed)f(at)h(the)f(k)m(eyb)s -(oard.)150 3413 y Fn(print-last-kbd-macro)25 b(\(\))630 -3523 y Fo(Prin)m(t)30 b(the)h(last)g(k)m(eb)s(oard)f(macro)h(de\014ned) -e(in)i(a)f(format)h(suitable)g(for)f(the)h Fe(inputrc)k -Fo(\014le.)150 3718 y Fd(1.4.8)63 b(Some)41 b(Miscellaneous)i(Commands) -150 3888 y Fn(re-read-init-file)26 b(\(C-x)j(C-r\))630 -3997 y Fo(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)f(the)g -Fe(inputrc)27 b Fo(\014le,)d(and)d(incorp)s(orate)h(an)m(y)h(bindings)d -(or)i(v)-5 b(ariable)630 4107 y(assignmen)m(ts)31 b(found)e(there.)150 -4262 y Fn(abort)g(\(C-g\))630 4372 y Fo(Ab)s(ort)d(the)h(curren)m(t)f -(editing)h(command)f(and)g(ring)h(the)f(terminal's)h(b)s(ell)g(\(sub)5 -b(ject)26 b(to)i(the)630 4481 y(setting)j(of)g Fn(bell-style)p -Fo(\).)150 4637 y Fn(do-lowercase-version)25 b(\(M-A,)k(M-B,)g(M-)p -Fg(x)p Fn(,)g(...)o(\))630 4746 y Fo(If)35 b(the)g(meta\014ed)g(c)m -(haracter)i Fe(x)k Fo(is)35 b(upp)s(er)e(case,)k(run)d(the)h(command)g -(that)g(is)g(b)s(ound)e(to)630 4856 y(the)g(corresp)s(onding)f -(meta\014ed)h(lo)m(w)m(er)i(case)f(c)m(haracter.)50 b(The)32 -b(b)s(eha)m(vior)h(is)g(unde\014ned)e(if)630 4965 y Fe(x)37 -b Fo(is)30 b(already)h(lo)m(w)m(er)h(case.)150 5121 y -Fn(prefix-meta)27 b(\(ESC\))630 5230 y Fo(Metafy)39 b(the)e(next)h(c)m -(haracter)h(t)m(yp)s(ed.)62 b(This)37 b(is)g(for)h(k)m(eyb)s(oards)f -(without)g(a)h(meta)g(k)m(ey)-8 b(.)630 5340 y(T)m(yping)30 -b(`)p Fn(ESC)g(f)p Fo(')g(is)h(equiv)-5 b(alen)m(t)31 -b(to)g(t)m(yping)g Fg(M-f)p Fo(.)p eop end -%%Page: 23 26 -TeXDict begin 23 25 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(23)150 299 y Fn(undo)29 -b(\(C-_)g(or)h(C-x)g(C-u\))630 408 y Fo(Incremen)m(tal)h(undo,)f -(separately)h(remem)m(b)s(ered)f(for)g(eac)m(h)i(line.)150 -584 y Fn(revert-line)27 b(\(M-r\))630 693 y Fo(Undo)33 -b(all)h(c)m(hanges)g(made)f(to)h(this)f(line.)49 b(This)32 -b(is)h(lik)m(e)i(executing)f(the)f Fn(undo)f Fo(command)630 -803 y(enough)e(times)h(to)g(get)h(bac)m(k)f(to)g(the)f(b)s(eginning.) -150 978 y Fn(tilde-expand)d(\(M-~\))630 1088 y Fo(P)m(erform)j(tilde)h -(expansion)g(on)f(the)g(curren)m(t)h(w)m(ord.)150 1263 -y Fn(set-mark)d(\(C-@\))630 1373 y Fo(Set)33 b(the)g(mark)f(to)i(the)f -(p)s(oin)m(t.)48 b(If)32 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g -(supplied,)f(the)h(mark)g(is)f(set)630 1482 y(to)f(that)g(p)s(osition.) -150 1658 y Fn(exchange-point-and-mark)24 b(\(C-x)29 b(C-x\))630 -1767 y Fo(Sw)m(ap)i(the)g(p)s(oin)m(t)g(with)g(the)g(mark.)43 -b(The)31 b(curren)m(t)g(cursor)f(p)s(osition)i(is)f(set)h(to)f(the)h -(sa)m(v)m(ed)630 1877 y(p)s(osition,)f(and)e(the)i(old)g(cursor)e(p)s -(osition)i(is)f(sa)m(v)m(ed)i(as)e(the)h(mark.)150 2052 -y Fn(character-search)26 b(\(C-]\))630 2162 y Fo(A)f(c)m(haracter)h(is) -f(read)g(and)f(p)s(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)g(the)f(next)g(o)s -(ccurrence)g(of)g(that)g(c)m(haracter.)630 2271 y(A)30 -b(negativ)m(e)j(coun)m(t)e(searc)m(hes)g(for)f(previous)g(o)s -(ccurrences.)150 2447 y Fn(character-search-backwar)o(d)24 -b(\(M-C-]\))630 2556 y Fo(A)45 b(c)m(haracter)h(is)f(read)g(and)f(p)s +3632 y(macro)c(app)s(ear)f(as)g(if)h(t)m(yp)s(ed)f(at)h(the)f(k)m(eyb)s +(oard.)150 3788 y Fn(print-last-kbd-macro)25 b(\(\))630 +3897 y Fo(Prin)m(t)30 b(the)g(last)h(k)m(eyb)s(oard)f(macro)h +(de\014ned)e(in)h(a)g(format)h(suitable)g(for)f(the)g +Fe(inputrc)35 b Fo(\014le.)150 4092 y Fd(1.4.8)63 b(Some)41 +b(Miscellaneous)i(Commands)150 4262 y Fn(re-read-init-file)26 +b(\(C-x)j(C-r\))630 4372 y Fo(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of) +f(the)g Fe(inputrc)27 b Fo(\014le,)d(and)d(incorp)s(orate)h(an)m(y)h +(bindings)d(or)i(v)-5 b(ariable)630 4481 y(assignmen)m(ts)31 +b(found)e(there.)150 4637 y Fn(abort)g(\(C-g\))630 4746 +y Fo(Ab)s(ort)d(the)h(curren)m(t)f(editing)h(command)f(and)g(ring)h +(the)f(terminal's)h(b)s(ell)g(\(sub)5 b(ject)26 b(to)i(the)630 +4856 y(setting)j(of)g Fn(bell-style)p Fo(\).)150 5011 +y Fn(do-lowercase-version)25 b(\(M-A,)k(M-B,)g(M-)p Fg(x)p +Fn(,)g(...)o(\))630 5121 y Fo(If)35 b(the)g(meta\014ed)g(c)m(haracter)i +Fe(x)k Fo(is)35 b(upp)s(er)e(case,)k(run)d(the)h(command)g(that)g(is)g +(b)s(ound)e(to)630 5230 y(the)g(corresp)s(onding)f(meta\014ed)h(lo)m(w) +m(er)i(case)f(c)m(haracter.)50 b(The)32 b(b)s(eha)m(vior)h(is)g +(unde\014ned)e(if)630 5340 y Fe(x)37 b Fo(is)30 b(already)h(lo)m(w)m +(er)h(case.)p eop end +%%Page: 24 27 +TeXDict begin 24 26 bop 150 -116 a Fo(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(24)150 299 y Fn(prefix-meta)27 +b(\(ESC\))630 408 y Fo(Metafy)39 b(the)e(next)h(c)m(haracter)h(t)m(yp)s +(ed.)62 b(This)37 b(is)g(for)h(k)m(eyb)s(oards)f(without)g(a)h(meta)g +(k)m(ey)-8 b(.)630 518 y(T)m(yping)30 b(`)p Fn(ESC)g(f)p +Fo(')g(is)h(equiv)-5 b(alen)m(t)31 b(to)g(t)m(yping)g +Fg(M-f)p Fo(.)150 704 y Fn(undo)e(\(C-_)g(or)h(C-x)g(C-u\))630 +814 y Fo(Incremen)m(tal)h(undo,)f(separately)h(remem)m(b)s(ered)f(for)g +(eac)m(h)i(line.)150 1000 y Fn(revert-line)27 b(\(M-r\))630 +1110 y Fo(Undo)33 b(all)h(c)m(hanges)g(made)f(to)h(this)f(line.)49 +b(This)32 b(is)h(lik)m(e)i(executing)f(the)f Fn(undo)f +Fo(command)630 1219 y(enough)e(times)h(to)g(get)h(bac)m(k)f(to)g(the)f +(b)s(eginning.)150 1406 y Fn(tilde-expand)d(\(M-~\))630 +1515 y Fo(P)m(erform)j(tilde)h(expansion)g(on)f(the)g(curren)m(t)h(w)m +(ord.)150 1702 y Fn(set-mark)d(\(C-@\))630 1811 y Fo(Set)33 +b(the)g(mark)f(to)i(the)f(p)s(oin)m(t.)48 b(If)32 b(a)h(n)m(umeric)g +(argumen)m(t)g(is)g(supplied,)f(the)h(mark)g(is)f(set)630 +1921 y(to)f(that)g(p)s(osition.)150 2107 y Fn(exchange-point-and-mark) +24 b(\(C-x)29 b(C-x\))630 2217 y Fo(Sw)m(ap)i(the)g(p)s(oin)m(t)g(with) +g(the)g(mark.)43 b(The)31 b(curren)m(t)g(cursor)f(p)s(osition)i(is)f +(set)h(to)f(the)h(sa)m(v)m(ed)630 2326 y(p)s(osition,)f(and)e(the)i +(old)g(cursor)e(p)s(osition)i(is)f(sa)m(v)m(ed)i(as)e(the)h(mark.)150 +2513 y Fn(character-search)26 b(\(C-]\))630 2622 y Fo(A)f(c)m(haracter) +h(is)f(read)g(and)f(p)s(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)g(the)f(next)g +(o)s(ccurrence)g(of)g(that)g(c)m(haracter.)630 2732 y(A)30 +b(negativ)m(e)j(argumen)m(t)e(searc)m(hes)g(for)f(previous)g(o)s +(ccurrences.)150 2918 y Fn(character-search-backwar)o(d)24 +b(\(M-C-]\))630 3028 y Fo(A)45 b(c)m(haracter)h(is)f(read)g(and)f(p)s (oin)m(t)h(is)g(mo)m(v)m(ed)h(to)f(the)g(previous)f(o)s(ccurrence)h(of) -g(that)630 2666 y(c)m(haracter.)d(A)31 b(negativ)m(e)h(coun)m(t)f -(searc)m(hes)h(for)e(subsequen)m(t)f(o)s(ccurrences.)150 -2841 y Fn(skip-csi-sequence)d(\(\))630 2951 y Fo(Read)i(enough)f(c)m +g(that)630 3137 y(c)m(haracter.)d(A)31 b(negativ)m(e)h(argumen)m(t)f +(searc)m(hes)g(for)g(subsequen)m(t)e(o)s(ccurrences.)150 +3324 y Fn(skip-csi-sequence)d(\(\))630 3433 y Fo(Read)i(enough)f(c)m (haracters)h(to)g(consume)f(a)h(m)m(ulti-k)m(ey)h(sequence)f(suc)m(h)f -(as)g(those)h(de\014ned)630 3061 y(for)37 b(k)m(eys)h(lik)m(e)g(Home)g +(as)g(those)h(de\014ned)630 3543 y(for)37 b(k)m(eys)h(lik)m(e)g(Home)g (and)f(End.)60 b(Suc)m(h)37 b(sequences)g(b)s(egin)g(with)g(a)h(Con)m -(trol)g(Sequence)630 3170 y(Indicator)f(\(CSI\),)f(usually)h(ESC-[.)59 +(trol)g(Sequence)630 3652 y(Indicator)f(\(CSI\),)f(usually)h(ESC-[.)59 b(If)36 b(this)g(sequence)h(is)g(b)s(ound)d(to)k Fn("\\)p -Fo(e[)p Fn(")p Fo(,)g(k)m(eys)f(pro-)630 3280 y(ducing)31 -b(suc)m(h)h(sequences)g(will)h(ha)m(v)m(e)g(no)f(e\013ect)h(unless)e -(explicitly)j(b)s(ound)c(to)i(a)h(readline)630 3389 y(command,)f +Fo(e[)p Fn(")p Fo(,)g(k)m(eys)f(pro-)630 3762 y(ducing)29 +b(suc)m(h)g(sequences)g(will)h(ha)m(v)m(e)h(no)e(e\013ect)i(unless)d +(explicitly)j(b)s(ound)d(to)i(a)f(Readline)630 3871 y(command,)j (instead)g(of)g(inserting)g(stra)m(y)h(c)m(haracters)g(in)m(to)g(the)f -(editing)h(bu\013er.)44 b(This)31 b(is)630 3499 y(un)m(b)s(ound)d(b)m +(editing)h(bu\013er.)44 b(This)31 b(is)630 3981 y(un)m(b)s(ound)d(b)m (y)i(default,)h(but)f(usually)g(b)s(ound)e(to)j(ESC-[.)150 -3674 y Fn(insert-comment)26 b(\(M-#\))630 3784 y Fo(Without)36 +4167 y Fn(insert-comment)26 b(\(M-#\))630 4277 y Fo(Without)36 b(a)g(n)m(umeric)g(argumen)m(t,)h(the)f(v)-5 b(alue)36 b(of)g(the)g Fn(comment-begin)c Fo(v)-5 b(ariable)36 -b(is)g(in-)630 3893 y(serted)c(at)g(the)g(b)s(eginning)f(of)h(the)f +b(is)g(in-)630 4387 y(serted)c(at)g(the)g(b)s(eginning)f(of)h(the)f (curren)m(t)h(line.)45 b(If)31 b(a)h(n)m(umeric)f(argumen)m(t)h(is)g -(supplied,)630 4003 y(this)k(command)h(acts)g(as)g(a)g(toggle:)55 +(supplied,)630 4496 y(this)k(command)h(acts)g(as)g(a)g(toggle:)55 b(if)37 b(the)f(c)m(haracters)i(at)g(the)e(b)s(eginning)g(of)h(the)g -(line)630 4113 y(do)30 b(not)h(matc)m(h)h(the)f(v)-5 +(line)630 4606 y(do)30 b(not)h(matc)m(h)h(the)f(v)-5 b(alue)31 b(of)f Fn(comment-begin)p Fo(,)e(the)i(v)-5 -b(alue)31 b(is)g(inserted,)g(otherwise)g(the)630 4222 +b(alue)31 b(is)g(inserted,)g(otherwise)g(the)630 4715 y(c)m(haracters)42 b(in)d Fn(comment-begin)e Fo(are)j(deleted)h(from)f -(the)g(b)s(eginning)g(of)g(the)g(line.)71 b(In)630 4332 +(the)g(b)s(eginning)g(of)g(the)g(line.)71 b(In)630 4825 y(either)31 b(case,)h(the)e(line)h(is)f(accepted)i(as)f(if)f(a)h -(newline)f(had)g(b)s(een)f(t)m(yp)s(ed.)150 4507 y Fn(dump-functions)d -(\(\))630 4617 y Fo(Prin)m(t)g(all)i(of)e(the)h(functions)f(and)g +(newline)f(had)g(b)s(een)f(t)m(yp)s(ed.)150 5011 y Fn(dump-functions)d +(\(\))630 5121 y Fo(Prin)m(t)g(all)i(of)e(the)h(functions)f(and)g (their)g(k)m(ey)h(bindings)e(to)j(the)e(Readline)h(output)f(stream.)630 -4726 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h +5230 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h (output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a)m(y)g(that)630 -4836 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fe(inputrc)k +5340 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fe(inputrc)k Fo(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c(b)m(y)k -(default.)150 5011 y Fn(dump-variables)26 b(\(\))630 -5121 y Fo(Prin)m(t)21 b(all)h(of)g(the)f(settable)i(v)-5 +(default.)p eop end +%%Page: 25 28 +TeXDict begin 25 27 bop 150 -116 a Fo(Chapter)30 b(1:)41 +b(Command)29 b(Line)i(Editing)2107 b(25)150 299 y Fn(dump-variables)26 +b(\(\))630 408 y Fo(Prin)m(t)21 b(all)h(of)g(the)f(settable)i(v)-5 b(ariables)22 b(and)f(their)g(v)-5 b(alues)22 b(to)g(the)f(Readline)h -(output)f(stream.)630 5230 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is) -g(supplied,)f(the)h(output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a) -m(y)g(that)630 5340 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h +(output)f(stream.)630 518 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g +(supplied,)f(the)h(output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a)m +(y)g(that)630 628 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fe(inputrc)k Fo(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c -(b)m(y)k(default.)p eop end -%%Page: 24 27 -TeXDict begin 24 26 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(24)150 299 y Fn(dump-macros)27 -b(\(\))630 408 y Fo(Prin)m(t)34 b(all)g(of)g(the)g(Readline)g(k)m(ey)h -(sequences)f(b)s(ound)e(to)i(macros)g(and)f(the)h(strings)g(they)630 -518 y(output.)53 b(If)35 b(a)g(n)m(umeric)f(argumen)m(t)i(is)e +(b)m(y)k(default.)150 787 y Fn(dump-macros)c(\(\))630 +897 y Fo(Prin)m(t)34 b(all)g(of)g(the)g(Readline)g(k)m(ey)h(sequences)f +(b)s(ound)e(to)i(macros)g(and)f(the)h(strings)g(they)630 +1006 y(output.)53 b(If)35 b(a)g(n)m(umeric)f(argumen)m(t)i(is)e (supplied,)h(the)g(output)g(is)f(formatted)i(in)e(suc)m(h)h(a)630 -628 y(w)m(a)m(y)c(that)g(it)f(can)g(b)s(e)g(made)g(part)f(of)i(an)e +1116 y(w)m(a)m(y)c(that)g(it)f(can)g(b)s(e)g(made)g(part)f(of)i(an)e Fe(inputrc)35 b Fo(\014le.)41 b(This)29 b(command)h(is)g(un)m(b)s(ound) -d(b)m(y)630 737 y(default.)150 897 y Fn(emacs-editing-mode)e(\(C-e\)) -630 1006 y Fo(When)30 b(in)g Fn(vi)g Fo(command)g(mo)s(de,)g(this)h +d(b)m(y)630 1225 y(default.)150 1385 y Fn(emacs-editing-mode)e(\(C-e\)) +630 1494 y Fo(When)30 b(in)g Fn(vi)g Fo(command)g(mo)s(de,)g(this)h (causes)f(a)h(switc)m(h)g(to)g Fn(emacs)e Fo(editing)i(mo)s(de.)150 -1166 y Fn(vi-editing-mode)26 b(\(M-C-j\))630 1275 y Fo(When)k(in)g +1654 y Fn(vi-editing-mode)26 b(\(M-C-j\))630 1763 y Fo(When)k(in)g Fn(emacs)f Fo(editing)i(mo)s(de,)f(this)h(causes)f(a)h(switc)m(h)g(to)g -Fn(vi)f Fo(editing)h(mo)s(de.)150 1516 y Fm(1.5)68 b(Readline)47 -b(vi)e(Mo)t(de)150 1675 y Fo(While)32 b(the)g(Readline)g(library)f(do)s +Fn(vi)f Fo(editing)h(mo)s(de.)150 2004 y Fm(1.5)68 b(Readline)47 +b(vi)e(Mo)t(de)150 2164 y Fo(While)32 b(the)g(Readline)g(library)f(do)s (es)g(not)h(ha)m(v)m(e)h(a)f(full)f(set)h(of)g Fn(vi)f Fo(editing)h(functions,)f(it)h(do)s(es)g(con)m(tain)150 -1785 y(enough)i(to)h(allo)m(w)g(simple)f(editing)h(of)f(the)g(line.)52 +2273 y(enough)i(to)h(allo)m(w)g(simple)f(editing)h(of)f(the)g(line.)52 b(The)34 b(Readline)g Fn(vi)g Fo(mo)s(de)f(b)s(eha)m(v)m(es)i(as)f(sp)s -(eci\014ed)f(in)150 1895 y(the)e Fh(posix)e Fo(standard.)275 -2029 y(In)f(order)g(to)i(switc)m(h)g(in)m(teractiv)m(ely)i(b)s(et)m(w)m +(eci\014ed)f(in)150 2383 y(the)e Fh(posix)e Fo(standard.)275 +2517 y(In)f(order)g(to)i(switc)m(h)g(in)m(teractiv)m(ely)i(b)s(et)m(w)m (een)d Fn(emacs)f Fo(and)g Fn(vi)h Fo(editing)g(mo)s(des,)g(use)g(the)g -(command)150 2139 y Fg(M-C-j)36 b Fo(\(b)s(ound)h(to)h +(command)150 2627 y Fg(M-C-j)36 b Fo(\(b)s(ound)h(to)h (emacs-editing-mo)s(de)i(when)d(in)g Fn(vi)h Fo(mo)s(de)f(and)g(to)i -(vi-editing-mo)s(de)g(in)e Fn(emacs)150 2248 y Fo(mo)s(de\).)k(The)30 +(vi-editing-mo)s(de)g(in)e Fn(emacs)150 2736 y Fo(mo)s(de\).)k(The)30 b(Readline)h(default)f(is)g Fn(emacs)f Fo(mo)s(de.)275 -2383 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f(in)g Fn(vi)f +2871 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f(in)g Fn(vi)f Fo(mo)s(de,)h(y)m(ou)h(are)f(already)h(placed)f(in)g(`insertion')g(mo)s -(de,)g(as)h(if)f(y)m(ou)150 2492 y(had)f(t)m(yp)s(ed)g(an)g(`)p +(de,)g(as)h(if)f(y)m(ou)150 2980 y(had)f(t)m(yp)s(ed)g(an)g(`)p Fn(i)p Fo('.)41 b(Pressing)29 b Fn(ESC)f Fo(switc)m(hes)i(y)m(ou)g(in)m (to)h(`command')e(mo)s(de,)h(where)e(y)m(ou)i(can)g(edit)g(the)150 -2602 y(text)35 b(of)f(the)g(line)g(with)f(the)h(standard)f +3090 y(text)35 b(of)f(the)g(line)g(with)f(the)h(standard)f Fn(vi)g Fo(mo)m(v)m(emen)m(t)j(k)m(eys,)g(mo)m(v)m(e)f(to)f(previous)g -(history)f(lines)h(with)150 2711 y(`)p Fn(k)p Fo(')d(and)e(subsequen)m +(history)f(lines)h(with)150 3200 y(`)p Fn(k)p Fo(')d(and)e(subsequen)m (t)h(lines)h(with)f(`)p Fn(j)p Fo(',)g(and)g(so)h(forth.)p eop end -%%Page: 25 28 -TeXDict begin 25 27 bop 3659 -116 a Fo(25)150 299 y Fk(App)t(endix)52 +%%Page: 26 29 +TeXDict begin 26 28 bop 3659 -116 a Fo(26)150 299 y Fk(App)t(endix)52 b(A)81 b(GNU)54 b(F)-13 b(ree)53 b(Do)t(cumen)l(tation)e(License)1359 502 y Fo(V)-8 b(ersion)31 b(1.3,)g(3)g(No)m(v)m(em)m(b)s(er)h(2008)390 635 y(Cop)m(yrigh)m(t)842 632 y(c)817 635 y Fl(\015)e @@ -6905,10 +7018,10 @@ b(\\In)m(v)-5 b(arian)m(t)27 b(Sections")g(are)f(certain)g(Secondary)g 5340 y(b)s(eing)e(those)h(of)g(In)m(v)-5 b(arian)m(t)27 b(Sections,)i(in)d(the)h(notice)h(that)f(sa)m(ys)g(that)g(the)g(Do)s (cumen)m(t)g(is)g(released)p eop end -%%Page: 26 29 -TeXDict begin 26 28 bop 150 -116 a Fo(App)s(endix)29 +%%Page: 27 30 +TeXDict begin 27 29 bop 150 -116 a Fo(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 -b(26)330 299 y(under)26 b(this)i(License.)40 b(If)27 +b(27)330 299 y(under)26 b(this)i(License.)40 b(If)27 b(a)h(section)h(do)s(es)f(not)f(\014t)h(the)g(ab)s(o)m(v)m(e)h (de\014nition)e(of)h(Secondary)f(then)h(it)g(is)330 408 y(not)k(allo)m(w)m(ed)i(to)e(b)s(e)g(designated)g(as)g(In)m(v)-5 @@ -6999,10 +7112,10 @@ b(Disclaimers)f(are)g(considered)e(to)330 4970 y(b)s(e)k(included)g(b)m b(Disclaimers)f(ma)m(y)g(ha)m(v)m(e)g(is)f(v)m(oid)g(and)f(has)h(no)330 5189 y(e\013ect)32 b(on)e(the)h(meaning)f(of)h(this)f(License.)199 5340 y(2.)61 b(VERBA)-8 b(TIM)31 b(COPYING)p eop end -%%Page: 27 30 -TeXDict begin 27 29 bop 150 -116 a Fo(App)s(endix)29 +%%Page: 28 31 +TeXDict begin 28 30 bop 150 -116 a Fo(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 -b(27)330 299 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h +b(28)330 299 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h (the)g(Do)s(cumen)m(t)h(in)f(an)m(y)g(medium,)h(either)g(commercially)h (or)330 408 y(noncommercially)-8 b(,)48 b(pro)m(vided)42 b(that)h(this)f(License,)47 b(the)42 b(cop)m(yrigh)m(t)i(notices,)j @@ -7092,10 +7205,10 @@ b(in)f(the)h(Title)h(P)m(age)g(\(and)f(on)f(the)h(co)m(v)m(ers,)i(if)e 5340 y(Do)s(cumen)m(t,)j(and)d(from)g(those)i(of)f(previous)f(v)m (ersions)h(\(whic)m(h)g(should,)g(if)g(there)g(w)m(ere)g(an)m(y)-8 b(,)p eop end -%%Page: 28 31 -TeXDict begin 28 30 bop 150 -116 a Fo(App)s(endix)29 +%%Page: 29 32 +TeXDict begin 29 31 bop 150 -116 a Fo(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 -b(28)510 299 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g +b(29)510 299 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g (the)f(Do)s(cumen)m(t\).)45 b(Y)-8 b(ou)32 b(ma)m(y)g(use)f(the)g(same) h(title)h(as)510 408 y(a)e(previous)f(v)m(ersion)g(if)h(the)f(original) i(publisher)d(of)h(that)h(v)m(ersion)g(giv)m(es)h(p)s(ermission.)360 @@ -7174,10 +7287,10 @@ b(arran)m(t)m(y)32 b(Disclaimers.)330 5121 y(If)h(the)g(Mo)s(di\014ed)g (designate)h(some)e(or)h(all)g(of)f(these)h(sections)h(as)e(in)m(v)-5 b(arian)m(t.)48 b(T)-8 b(o)33 b(do)f(this,)h(add)f(their)p eop end -%%Page: 29 32 -TeXDict begin 29 31 bop 150 -116 a Fo(App)s(endix)29 +%%Page: 30 33 +TeXDict begin 30 32 bop 150 -116 a Fo(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 -b(29)330 299 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5 +b(30)330 299 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(in)f(the)h(Mo)s(di\014ed)f(V)-8 b(ersion's)36 b(license)g(notice.)57 b(These)330 408 y(titles)32 b(m)m(ust)e(b)s(e)g(distinct)h(from)e(an)m(y)i(other)g @@ -7262,10 +7375,10 @@ b(ma)m(y)g(extract)h(a)f(single)g(do)s(cumen)m(t)f(from)g(suc)m(h)g(a)h 5230 y(do)s(cumen)m(t,)d(and)f(follo)m(w)i(this)e(License)h(in)g(all)g (other)g(resp)s(ects)f(regarding)h(v)m(erbatim)g(cop)m(ying)h(of)330 5340 y(that)d(do)s(cumen)m(t.)p eop end -%%Page: 30 33 -TeXDict begin 30 32 bop 150 -116 a Fo(App)s(endix)29 +%%Page: 31 34 +TeXDict begin 31 33 bop 150 -116 a Fo(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 -b(30)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h +b(31)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h (W)m(ORKS)330 441 y(A)d(compilation)i(of)e(the)g(Do)s(cumen)m(t)h(or)f (its)g(deriv)-5 b(ativ)m(es)30 b(with)d(other)i(separate)g(and)e(indep) s(enden)m(t)330 551 y(do)s(cumen)m(ts)33 b(or)g(w)m(orks,)h(in)f(or)h @@ -7350,10 +7463,10 @@ b(ha)m(v)m(e)h(receiv)m(ed)h(copies)e(or)h(righ)m(ts)f(from)g(y)m(ou)g (reinstated,)i(receipt)f(of)f(a)g(cop)m(y)h(of)f(some)h(or)f(all)h(of)f (the)330 5340 y(same)31 b(material)h(do)s(es)e(not)g(giv)m(e)i(y)m(ou)f (an)m(y)g(righ)m(ts)f(to)i(use)e(it.)p eop end -%%Page: 31 34 -TeXDict begin 31 33 bop 150 -116 a Fo(App)s(endix)29 +%%Page: 32 35 +TeXDict begin 32 34 bop 150 -116 a Fo(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 -b(31)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE)330 +b(32)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE)330 433 y(The)41 b(F)-8 b(ree)43 b(Soft)m(w)m(are)f(F)-8 b(oundation)43 b(ma)m(y)f(publish)e(new,)k(revised)d(v)m(ersions)h(of)g (the)g(GNU)g(F)-8 b(ree)330 543 y(Do)s(cumen)m(tation)34 @@ -7417,10 +7530,10 @@ f(of)g(that)330 2944 y(license)31 b(published)e(b)m(y)h(that)h(same)g g(under)330 3895 y(CC-BY-SA)30 b(on)g(the)h(same)f(site)h(at)g(an)m(y)g (time)g(b)s(efore)e(August)h(1,)h(2009,)h(pro)m(vided)e(the)g(MMC)h(is) 330 4005 y(eligible)h(for)e(relicensing.)p eop end -%%Page: 32 35 -TeXDict begin 32 34 bop 150 -116 a Fo(App)s(endix)29 +%%Page: 33 36 +TeXDict begin 33 35 bop 150 -116 a Fo(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 -b(32)150 299 y Fm(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f +b(33)150 299 y Fm(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f (for)g(y)l(our)g(do)t(cumen)l(ts)150 458 y Fo(T)-8 b(o)35 b(use)f(this)h(License)g(in)f(a)h(do)s(cumen)m(t)g(y)m(ou)f(ha)m(v)m(e) i(written,)g(include)f(a)f(cop)m(y)i(of)f(the)f(License)h(in)g(the)150 diff --git a/doc/rluserman.texi b/doc/rluserman.texi index 6e8e848..ae9ec6e 100644 --- a/doc/rluserman.texi +++ b/doc/rluserman.texi @@ -12,7 +12,7 @@ This manual describes the end user interface of the GNU Readline Library consistency of user interface across discrete programs which provide a command line interface. -Copyright @copyright{} 1988--2020 Free Software Foundation, Inc. +Copyright @copyright{} 1988--2022 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/texi2dvi b/doc/texi2dvi old mode 100755 new mode 100644 diff --git a/doc/texi2html b/doc/texi2html old mode 100755 new mode 100644 diff --git a/doc/version.texi b/doc/version.texi index abb9cb6..d310273 100644 --- a/doc/version.texi +++ b/doc/version.texi @@ -1,10 +1,11 @@ @ignore -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2022 Free Software Foundation, Inc. @end ignore -@set EDITION 8.1 -@set VERSION 8.1 -@set UPDATED 29 October 2020 -@set UPDATED-MONTH October 2020 +@set EDITION 8.2 +@set VERSION 8.2 -@set LASTCHANGE Thu Oct 29 16:49:01 EDT 2020 +@set UPDATED 19 September 2022 +@set UPDATED-MONTH September 2022 + +@set LASTCHANGE Mon Sep 19 11:15:16 EDT 2022 diff --git a/examples/Makefile.in b/examples/Makefile.in index 4a7c39e..291c6b7 100644 --- a/examples/Makefile.in +++ b/examples/Makefile.in @@ -72,17 +72,17 @@ TERMCAP_LIB = @TERMCAP_LIB@ SOURCES = excallback.c fileman.c histexamp.c manexamp.c rl-fgets.c rl.c \ rlbasic.c rlcat.c rlevent.c rlptytest.c rltest.c rlversion.c \ rltest2.c rl-callbacktest.c hist_erasedups.c hist_purgecmd.c \ - rlkeymaps.c + rlkeymaps.c rl-timeout.c EXECUTABLES = fileman$(EXEEXT) rltest$(EXEEXT) rl$(EXEEXT) rlcat$(EXEEXT) \ rlevent$(EXEEXT) rlversion$(EXEEXT) histexamp$(EXEEXT) \ rl-callbacktest$(EXEEXT) rlbasic$(EXEEXT) \ hist_erasedups$(EXEEXT) hist_purgecmd$(EXEEXT) \ - rlkeymaps$(EXEEXT) + rlkeymaps$(EXEEXT) rl-timeout$(EXEEXT) OBJECTS = fileman.o rltest.o rl.o rlevent.o rlcat.o rlversion.o histexamp.o \ rltest2.o rl-callbacktest.o rlbasic.o hist_erasedups.o hist_purgecmd.o \ - rlkeymaps.o + rlkeymaps.o rl-timeout.o OTHEREXE = rlptytest$(EXEEXT) OTHEROBJ = rlptytest.o @@ -141,6 +141,9 @@ rl-callbacktest$(EXEEXT): rl-callbacktest.o $(READLINE_LIB) rlptytest$(EXEEXT): rlptytest.o $(READLINE_LIB) $(CC) $(LDFLAGS) -o $@ rlptytest.o $(READLINE_LIB) $(TERMCAP_LIB) $(LIBUTIL) +rl-timeout$(EXEEXT): rl-timeout.o $(READLINE_LIB) + $(CC) $(LDFLAGS) -o $@ rl-timeout.o $(READLINE_LIB) $(TERMCAP_LIB) + rlversion$(EXEEXT): rlversion.o $(READLINE_LIB) $(CC) $(LDFLAGS) -o $@ rlversion.o $(READLINE_LIB) $(TERMCAP_LIB) @@ -173,6 +176,7 @@ rlkeymaps.o: rlkeymaps.c rlcat.o: rlcat.c rlptytest.o: rlptytest.c rl-callbacktest.o: rl-callbacktest.c +rl-timeout.o: rl-timeout.c fileman.o: $(top_srcdir)/readline.h rltest.o: $(top_srcdir)/readline.h @@ -186,3 +190,4 @@ rlbasic.o: $(top_srcdir)/readline.h $(top_srcdir)/history.h rlcat.o: $(top_srcdir)/readline.h $(top_srcdir)/history.h rlptytest.o: $(top_srcdir)/readline.h $(top_srcdir)/history.h rl-callbacktest.o: $(top_srcdir)/readline.h $(top_srcdir)/history.h +rl-timeout.o: $(top_srcdir)/readline.h $(top_srcdir)/history.h diff --git a/examples/excallback.c b/examples/excallback.c index 4206acf..923c923 100644 --- a/examples/excallback.c +++ b/examples/excallback.c @@ -50,6 +50,8 @@ Copyright (C) 1999 Jeff Solomon #include #include /* xxx - should make this more general */ +#include + #ifdef READLINE_LIBRARY # include "readline.h" #else @@ -104,6 +106,8 @@ main() { fd_set fds; + setlocale (LC_ALL, ""); + /* Adjust the terminal slightly before the handler is installed. Disable * canonical mode processing and set the input character time flag to be * non-blocking. diff --git a/examples/fileman.c b/examples/fileman.c index f8d0be7..2a8b097 100644 --- a/examples/fileman.c +++ b/examples/fileman.c @@ -417,7 +417,7 @@ com_help (arg) if (!printed) { - printf ("No commands match `%s'. Possibilties are:\n", arg); + printf ("No commands match `%s'. Possibilities are:\n", arg); for (i = 0; commands[i].name; i++) { diff --git a/examples/rl-callbacktest.c b/examples/rl-callbacktest.c index 3525ffd..7febacd 100644 --- a/examples/rl-callbacktest.c +++ b/examples/rl-callbacktest.c @@ -2,7 +2,6 @@ #include #include #include -#include /* Used for select(2) */ #include @@ -13,6 +12,8 @@ #include #include +#include + /* Standard readline include files. */ #if defined (READLINE_LIBRARY) # include "readline.h" @@ -72,7 +73,6 @@ main (int c, char **v) fd_set fds; int r; - setlocale (LC_ALL, ""); /* Handle SIGWINCH */ diff --git a/examples/rl-test-timeout b/examples/rl-test-timeout new file mode 100644 index 0000000..2c9de1a --- /dev/null +++ b/examples/rl-test-timeout @@ -0,0 +1,6 @@ +./rl-timeout readline1 0.5 +./rl-timeout readline2 0.25 + +./rl-timeout callback1 0.5 +./rl-timeout callback2 0.5 + diff --git a/examples/rl-timeout.c b/examples/rl-timeout.c new file mode 100644 index 0000000..b8a24ba --- /dev/null +++ b/examples/rl-timeout.c @@ -0,0 +1,245 @@ +/* rl-timeout: test various readline builtin timeouts. */ + +/* Copyright (C) 2021 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (Readline), a library for + reading lines of text with interactive input and history editing. + + Readline is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Readline 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 readline. If not, see . +*/ + +/* Standard include files. stdio.h is required. */ +#include +#include +#include +#include + +/* Used for select(2) */ +#include +#include + +#include +#include + +/* Standard readline include files. */ +#if defined (READLINE_LIBRARY) +# include "readline.h" +# include "history.h" +#else +# include +# include +#endif + +extern int errno; + +static void cb_linehandler (char *); + +int timeout_secs = 1, timeout_usecs = 0; +int running; +const char *prompt = "rl-timeout$ "; + +/* **************************************************************** */ +/* */ +/* Example 1: readline () with rl_readline_state */ +/* */ +/* **************************************************************** */ + +void +rltest_timeout_readline1 () +{ + const char *temp; + + rl_set_timeout (timeout_secs, timeout_usecs); + temp = readline (prompt); + if (RL_ISSTATE (RL_STATE_TIMEOUT)) + printf ("timeout\n"); + else if (temp == NULL) + printf ("no input line\n"); + else + printf ("input line: %s\n", temp); + free ((void *) temp); +} + +/* **************************************************************** */ +/* */ +/* Example 2: readline () with rl_timeout_event_hook */ +/* */ +/* **************************************************************** */ + +static int +timeout_handler () +{ + printf ("timeout\n"); + return READERR; +} + +void +rltest_timeout_readline2 () +{ + const char *temp; + + rl_set_timeout (timeout_secs, timeout_usecs); + rl_timeout_event_hook = timeout_handler; + temp = readline (prompt); + if (temp == NULL) + printf ("no input line\n"); + else + printf ("input line: %s\n", temp); + free ((void *)temp); +} + +/* **************************************************************** */ +/* */ +/* Example 3: rl_callback_* () with rl_timeout_remaining */ +/* */ +/* **************************************************************** */ + +/* Callback function called for each line when accept-line executed, EOF + seen, or EOF character read. This sets a flag and returns; it could + also call exit(3). */ +static void +cb_linehandler (char *line) +{ + /* Can use ^D (stty eof) or `exit' to exit. */ + if (line == NULL || strcmp (line, "exit") == 0) + { + if (line == 0) + printf ("\n"); + printf ("exit\n"); + /* This function needs to be called to reset the terminal settings, + and calling it from the line handler keeps one extra prompt from + being displayed. */ + rl_callback_handler_remove (); + + running = 0; + } + else + { + if (*line) + add_history (line); + printf ("input line: %s\n", line); + free (line); + } +} + +void +rltest_timeout_callback1 () +{ + fd_set fds; + int r; + unsigned sec, usec; + + rl_set_timeout (timeout_secs, timeout_usecs); + rl_callback_handler_install (prompt, cb_linehandler); + running = 1; + while (running) + { + FD_ZERO (&fds); + FD_SET (fileno (rl_instream), &fds); + r = rl_timeout_remaining (&sec, &usec); + if (r == 1) + { + struct timeval timeout = {sec, usec}; + r = select (FD_SETSIZE, &fds, NULL, NULL, &timeout); + } + if (r < 0 && errno != EINTR) + { + perror ("rl-timeout: select"); + rl_callback_handler_remove (); + break; + } + else if (r == 0) + { + printf ("rl-timeout: timeout\n"); + rl_callback_handler_remove (); + break; + } + + if (FD_ISSET (fileno (rl_instream), &fds)) + rl_callback_read_char (); + } + + printf ("rl-timeout: Event loop has exited\n"); +} + +/* **************************************************************** */ +/* */ +/* Example 4: rl_callback_* () with rl_timeout_event_hook */ +/* */ +/* **************************************************************** */ + +static int +cb_timeouthandler () +{ + printf ("timeout\n"); + rl_callback_handler_remove (); + running = 0; + return READERR; +} + +void +rltest_timeout_callback2 () +{ + int r; + + rl_set_timeout (timeout_secs, timeout_usecs); + rl_timeout_event_hook = cb_timeouthandler; + rl_callback_handler_install (prompt, cb_linehandler); + running = 1; + while (running) + rl_callback_read_char (); + + printf ("rl-timeout: Event loop has exited\n"); +} + +int +main (int argc, char **argv) +{ + if (argc >= 2) + { + if (argc >= 3) + { + double timeout = atof (argv[2]); + if (timeout <= 0.0) + { + fprintf (stderr, "rl-timeout: specify a positive number for timeout.\n"); + return 2; + } + else if (timeout > UINT_MAX) + { + fprintf (stderr, "rl-timeout: timeout too large.\n"); + return 2; + } + timeout_secs = (unsigned) timeout; + timeout_usecs = (unsigned) ((timeout - timeout_secs) * 1000000 + 0.5); + } + + if (strcmp (argv[1], "readline1") == 0) + rltest_timeout_readline1 (); + else if (strcmp (argv[1], "readline2") == 0) + rltest_timeout_readline2 (); + else if (strcmp (argv[1], "callback1") == 0) + rltest_timeout_callback1 (); + else if (strcmp (argv[1], "callback2") == 0) + rltest_timeout_callback2 (); + else + return 2; + } + else + { + fprintf (stderr, "usage: rl-timeout [readline1 | readline2 | callback1 | callback2] [timeout]\n"); + return 2; + } + return 0; +} diff --git a/examples/rl.c b/examples/rl.c index a5cf276..39e5b8e 100644 --- a/examples/rl.c +++ b/examples/rl.c @@ -38,6 +38,10 @@ extern void exit(); #endif +#ifdef HAVE_LOCALE_H +# include +#endif + #if defined (READLINE_LIBRARY) # include "posixstat.h" # include "readline.h" @@ -93,6 +97,10 @@ main (argc, argv) else progname++; +#ifdef HAVE_SETLOCALE + setlocale (LC_ALL, ""); +#endif + /* defaults */ prompt = "readline$ "; fd = nch = 0; diff --git a/examples/rlbasic.c b/examples/rlbasic.c index 6a9601f..1ce4da9 100644 --- a/examples/rlbasic.c +++ b/examples/rlbasic.c @@ -3,6 +3,10 @@ #include #include +#ifdef HAVE_LOCALE_H +# include +#endif + #if defined (READLINE_LIBRARY) # include "readline.h" # include "history.h" @@ -16,6 +20,10 @@ main (int c, char **v) { char *input; +#ifdef HAVE_SETLOCALE + setlocale (LC_ALL, ""); +#endif + for (;;) { input = readline ((char *)NULL); if (input == 0) diff --git a/examples/rlcat.c b/examples/rlcat.c index b494241..f1b0362 100644 --- a/examples/rlcat.c +++ b/examples/rlcat.c @@ -45,6 +45,10 @@ extern void exit(); #endif +#ifdef HAVE_LOCALE_H +# include +#endif + #ifndef errno extern int errno; #endif @@ -79,6 +83,10 @@ main (argc, argv) char *temp; int opt, Vflag, Nflag; +#ifdef HAVE_SETLOCALE + setlocale (LC_ALL, ""); +#endif + progname = strrchr(argv[0], '/'); if (progname == 0) progname = argv[0]; diff --git a/examples/rlevent.c b/examples/rlevent.c index 8143cb0..1b7f4eb 100644 --- a/examples/rlevent.c +++ b/examples/rlevent.c @@ -44,6 +44,10 @@ extern int sleep(); extern void exit(); #endif +#ifdef HAVE_LOCALE_H +# include +#endif + #if defined (READLINE_LIBRARY) # include "posixstat.h" # include "readline.h" @@ -101,6 +105,10 @@ main (argc, argv) int opt, fd, nch; FILE *ifp; +#ifdef HAVE_SETLOCALE + setlocale (LC_ALL, ""); +#endif + progname = strrchr(argv[0], '/'); if (progname == 0) progname = argv[0]; diff --git a/examples/rlptytest.c b/examples/rlptytest.c index 9c42f8a..d170f62 100644 --- a/examples/rlptytest.c +++ b/examples/rlptytest.c @@ -25,6 +25,10 @@ #include #endif +#ifdef HAVE_LOCALE_H +# include +#endif + #ifdef READLINE_LIBRARY # include "readline.h" #else @@ -220,7 +224,7 @@ static enum { RESET, TCBREAK } ttystate = RESET; * * fd - The file descriptor of the terminal * - * Returns: 0 on sucess, -1 on error + * Returns: 0 on success, -1 on error */ int tty_cbreak(int fd){ struct termios buf; @@ -315,6 +319,11 @@ int main() { int val; + +#ifdef HAVE_SETLOCALE + setlocale (LC_ALL, ""); +#endif + val = openpty (&masterfd, &slavefd, NULL, NULL, NULL); if (val == -1) return -1; diff --git a/examples/rltest.c b/examples/rltest.c index 65abe87..8b7c00c 100644 --- a/examples/rltest.c +++ b/examples/rltest.c @@ -36,6 +36,10 @@ extern void exit(); #endif +#ifdef HAVE_LOCALE_H +# include +#endif + #ifdef READLINE_LIBRARY # include "readline.h" # include "history.h" @@ -52,6 +56,10 @@ main () char *temp, *prompt; int done; +#ifdef HAVE_SETLOCALE + setlocale (LC_ALL, ""); +#endif + temp = (char *)NULL; prompt = "readline$ "; done = 0; diff --git a/funmap.c b/funmap.c index eca49a3..8b1cb40 100644 --- a/funmap.c +++ b/funmap.c @@ -1,6 +1,6 @@ /* funmap.c -- attach names to functions. */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -46,7 +46,7 @@ typedef int QSFUNC (const void *, const void *); typedef int QSFUNC (); #endif -extern int _rl_qsort_string_compare PARAMS((char **, char **)); +extern int _rl_qsort_string_compare (char **, char **); FUNMAP **funmap; static int funmap_size; @@ -93,6 +93,7 @@ static const FUNMAP default_funmap[] = { { "end-of-history", rl_end_of_history }, { "end-of-line", rl_end_of_line }, { "exchange-point-and-mark", rl_exchange_point_and_mark }, + { "fetch-history", rl_fetch_history }, { "forward-backward-delete-char", rl_rubout_or_delete }, { "forward-byte", rl_forward_byte }, { "forward-char", rl_forward_char }, @@ -198,6 +199,7 @@ static const FUNMAP default_funmap[] = { { "vi-set-mark", rl_vi_set_mark }, { "vi-subst", rl_vi_subst }, { "vi-tilde-expand", rl_vi_tilde_expand }, + { "vi-undo", rl_vi_undo }, { "vi-unix-word-rubout", rl_vi_unix_word_rubout }, { "vi-yank-arg", rl_vi_yank_arg }, { "vi-yank-pop", rl_vi_yank_pop }, diff --git a/histexpand.c b/histexpand.c index b986dba..8ab6809 100644 --- a/histexpand.c +++ b/histexpand.c @@ -1,6 +1,6 @@ /* histexpand.c -- history expansion. */ -/* Copyright (C) 1989-2018 Free Software Foundation, Inc. +/* Copyright (C) 1989-2021 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. @@ -57,7 +57,7 @@ #define fielddelim(c) (whitespace(c) || (c) == '\n') -typedef int _hist_search_func_t PARAMS((const char *, int)); +typedef int _hist_search_func_t (const char *, int); static char error_pointer; @@ -70,14 +70,14 @@ static int subst_rhs_len; specifications from word designators. Static for now */ static char *history_event_delimiter_chars = HISTORY_EVENT_DELIMITERS; -static char *get_history_word_specifier PARAMS((char *, char *, int *)); -static int history_tokenize_word PARAMS((const char *, int)); -static char **history_tokenize_internal PARAMS((const char *, int, int *)); -static char *history_substring PARAMS((const char *, int, int)); -static void freewords PARAMS((char **, int)); -static char *history_find_word PARAMS((char *, int)); +static char *get_history_word_specifier (char *, char *, int *); +static int history_tokenize_word (const char *, int); +static char **history_tokenize_internal (const char *, int, int *); +static char *history_substring (const char *, int, int); +static void freewords (char **, int); +static char *history_find_word (char *, int); -static char *quote_breaks PARAMS((char *)); +static char *quote_breaks (char *); /* Variables exported by this file. */ /* The character that represents the start of a history expansion @@ -1207,13 +1207,36 @@ history_expand (char *hstring, char **output) characters in history_no_expand_chars, then it is not a candidate for expansion of any kind. */ if (cc == 0 || member (cc, history_no_expand_chars) || - (dquote && cc == '"') || - (history_inhibit_expansion_function && (*history_inhibit_expansion_function) (string, i))) + (dquote && cc == '"')) { ADD_CHAR (string[i]); break; } + /* If the application has defined a function to determine whether + or not a history expansion should be performed, call it here. */ + /* We check against what we've expanded so far, with the current + expansion appended, because that seems to be what csh does. We + decide to expand based on what we have to this point, not what + we started with. */ + if (history_inhibit_expansion_function) + { + int save_j, temp; + + save_j = j; + ADD_CHAR (string[i]); + ADD_CHAR (cc); + + temp = (*history_inhibit_expansion_function) (result, save_j); + if (temp) + { + result[--j] = '\0'; /* `unadd' cc, leaving ADD_CHAR(string[i]) */ + break; + } + else + result[j = save_j] = '\0'; + } + #if defined (NO_BANG_HASH_MODIFIERS) /* There is something that is listed as a `word specifier' in csh documentation which means `the expanded text to this point'. diff --git a/histfile.c b/histfile.c index f0fa5ce..3bfec55 100644 --- a/histfile.c +++ b/histfile.c @@ -114,8 +114,6 @@ extern int errno; # define PATH_MAX 1024 /* default */ #endif -extern void _hs_append_history_line PARAMS((int, const char *)); - /* history file version; currently unused */ int history_file_version = 1; @@ -141,11 +139,11 @@ int history_lines_written_to_file = 0; for more extensive tests. */ #define HIST_TIMESTAMP_START(s) (*(s) == history_comment_char && isdigit ((unsigned char)(s)[1]) ) -static char *history_backupfile PARAMS((const char *)); -static char *history_tempfile PARAMS((const char *)); -static int histfile_backup PARAMS((const char *, const char *)); -static int histfile_restore PARAMS((const char *, const char *)); -static int history_rename PARAMS((const char *, const char *)); +static char *history_backupfile (const char *); +static char *history_tempfile (const char *); +static int histfile_backup (const char *, const char *); +static int histfile_restore (const char *, const char *); +static int history_rename (const char *, const char *); /* Return the string that should be used in the place of this filename. This only matters when you don't specify the @@ -312,7 +310,7 @@ read_history_range (const char *filename, int from, int to) if (file_size == 0) { - free (input); + xfree (input); close (file); return 0; /* don't waste time if we don't have to */ } diff --git a/histlib.h b/histlib.h index 9627b24..29fc4d2 100644 --- a/histlib.h +++ b/histlib.h @@ -1,6 +1,6 @@ /* histlib.h -- internal definitions for the history library. */ -/* Copyright (C) 1989-2009 Free Software Foundation, Inc. +/* Copyright (C) 1989-2009,2021-2022 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. @@ -80,6 +80,13 @@ extern char *strchr (); /* internal extern function declarations used by other parts of the library */ /* histsearch.c */ -extern int _hs_history_patsearch PARAMS((const char *, int, int)); +extern int _hs_history_patsearch (const char *, int, int); + +/* history.c */ +extern void _hs_replace_history_data (int, histdata_t *, histdata_t *); +extern int _hs_at_end_of_history (void); + +/* histfile.c */ +extern void _hs_append_history_line (int, const char *); #endif /* !_HISTLIB_H_ */ diff --git a/history.c b/history.c index 67158b1..81d4c16 100644 --- a/history.c +++ b/history.c @@ -1,6 +1,6 @@ /* history.c -- standalone history library */ -/* Copyright (C) 1989-2017 Free Software Foundation, Inc. +/* Copyright (C) 1989-2021 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. @@ -62,7 +62,7 @@ extern int errno; /* The number of slots to increase the_history by. */ #define DEFAULT_HISTORY_GROW_SIZE 50 -static char *hist_inittime PARAMS((void)); +static char *hist_inittime (void); /* **************************************************************** */ /* */ @@ -165,6 +165,13 @@ history_set_pos (int pos) history_offset = pos; return (1); } + +/* Are we currently at the end of the history list? */ +int +_hs_at_end_of_history (void) +{ + return (the_history == 0 || history_offset == history_length); +} /* Return the current history array. The caller has to be careful, since this is the actual array of data, and could be bashed or made corrupt easily. @@ -390,7 +397,7 @@ replace_history_entry (int which, const char *line, histdata_t data) temp->line = savestring (line); temp->data = data; - temp->timestamp = savestring (old_value->timestamp); + temp->timestamp = old_value->timestamp ? savestring (old_value->timestamp) : 0; the_history[which] = temp; return (old_value); diff --git a/history.h b/history.h index cc3de29..5208f9a 100644 --- a/history.h +++ b/history.h @@ -1,6 +1,6 @@ /* history.h -- the names of functions that you can call in history. */ -/* Copyright (C) 1989-2015 Free Software Foundation, Inc. +/* Copyright (C) 1989-2022 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. @@ -42,6 +42,11 @@ typedef void *histdata_t; typedef char *histdata_t; #endif +/* Let's not step on anyone else's define for now, since we don't use this yet. */ +#ifndef HS_HISTORY_VERSION +# define HS_HISTORY_VERSION 0x0802 /* History 8.2 */ +#endif + /* The structure used to store a history entry. */ typedef struct _hist_entry { char *line; @@ -68,102 +73,102 @@ typedef struct _hist_state { /* Begin a session in which the history functions might be used. This just initializes the interactive variables. */ -extern void using_history PARAMS((void)); +extern void using_history (void); /* Return the current HISTORY_STATE of the history. */ -extern HISTORY_STATE *history_get_history_state PARAMS((void)); +extern HISTORY_STATE *history_get_history_state (void); /* Set the state of the current history array to STATE. */ -extern void history_set_history_state PARAMS((HISTORY_STATE *)); +extern void history_set_history_state (HISTORY_STATE *); /* Manage the history list. */ /* Place STRING at the end of the history list. The associated data field (if any) is set to NULL. */ -extern void add_history PARAMS((const char *)); +extern void add_history (const char *); /* Change the timestamp associated with the most recent history entry to STRING. */ -extern void add_history_time PARAMS((const char *)); +extern void add_history_time (const char *); /* Remove an entry from the history list. WHICH is the magic number that tells us which element to delete. The elements are numbered from 0. */ -extern HIST_ENTRY *remove_history PARAMS((int)); +extern HIST_ENTRY *remove_history (int); /* Remove a set of entries from the history list: FIRST to LAST, inclusive */ -extern HIST_ENTRY **remove_history_range PARAMS((int, int)); +extern HIST_ENTRY **remove_history_range (int, int); /* Allocate a history entry consisting of STRING and TIMESTAMP and return a pointer to it. */ -extern HIST_ENTRY *alloc_history_entry PARAMS((char *, char *)); +extern HIST_ENTRY *alloc_history_entry (char *, char *); /* Copy the history entry H, but not the (opaque) data pointer */ -extern HIST_ENTRY *copy_history_entry PARAMS((HIST_ENTRY *)); +extern HIST_ENTRY *copy_history_entry (HIST_ENTRY *); /* Free the history entry H and return any application-specific data associated with it. */ -extern histdata_t free_history_entry PARAMS((HIST_ENTRY *)); +extern histdata_t free_history_entry (HIST_ENTRY *); /* Make the history entry at WHICH have LINE and DATA. This returns the old entry so you can dispose of the data. In the case of an invalid WHICH, a NULL pointer is returned. */ -extern HIST_ENTRY *replace_history_entry PARAMS((int, const char *, histdata_t)); +extern HIST_ENTRY *replace_history_entry (int, const char *, histdata_t); /* Clear the history list and start over. */ -extern void clear_history PARAMS((void)); +extern void clear_history (void); /* Stifle the history list, remembering only MAX number of entries. */ -extern void stifle_history PARAMS((int)); +extern void stifle_history (int); /* Stop stifling the history. This returns the previous amount the history was stifled by. The value is positive if the history was stifled, negative if it wasn't. */ -extern int unstifle_history PARAMS((void)); +extern int unstifle_history (void); /* Return 1 if the history is stifled, 0 if it is not. */ -extern int history_is_stifled PARAMS((void)); +extern int history_is_stifled (void); /* Information about the history list. */ /* Return a NULL terminated array of HIST_ENTRY which is the current input history. Element 0 of this list is the beginning of time. If there is no history, return NULL. */ -extern HIST_ENTRY **history_list PARAMS((void)); +extern HIST_ENTRY **history_list (void); /* Returns the number which says what history element we are now looking at. */ -extern int where_history PARAMS((void)); +extern int where_history (void); /* Return the history entry at the current position, as determined by history_offset. If there is no entry there, return a NULL pointer. */ -extern HIST_ENTRY *current_history PARAMS((void)); +extern HIST_ENTRY *current_history (void); /* Return the history entry which is logically at OFFSET in the history array. OFFSET is relative to history_base. */ -extern HIST_ENTRY *history_get PARAMS((int)); +extern HIST_ENTRY *history_get (int); /* Return the timestamp associated with the HIST_ENTRY * passed as an argument */ -extern time_t history_get_time PARAMS((HIST_ENTRY *)); +extern time_t history_get_time (HIST_ENTRY *); /* Return the number of bytes that the primary history entries are using. This just adds up the lengths of the_history->lines. */ -extern int history_total_bytes PARAMS((void)); +extern int history_total_bytes (void); /* Moving around the history list. */ /* Set the position in the history list to POS. */ -extern int history_set_pos PARAMS((int)); +extern int history_set_pos (int); /* Back up history_offset to the previous history entry, and return a pointer to that entry. If there is no previous entry, return a NULL pointer. */ -extern HIST_ENTRY *previous_history PARAMS((void)); +extern HIST_ENTRY *previous_history (void); /* Move history_offset forward to the next item in the input_history, and return the a pointer to that entry. If there is no next entry, return a NULL pointer. */ -extern HIST_ENTRY *next_history PARAMS((void)); +extern HIST_ENTRY *next_history (void); /* Searching the history list. */ @@ -173,45 +178,45 @@ extern HIST_ENTRY *next_history PARAMS((void)); current_history () is the history entry, and the value of this function is the offset in the line of that history entry that the string was found in. Otherwise, nothing is changed, and a -1 is returned. */ -extern int history_search PARAMS((const char *, int)); +extern int history_search (const char *, int); /* Search the history for STRING, starting at history_offset. The search is anchored: matching lines must begin with string. DIRECTION is as in history_search(). */ -extern int history_search_prefix PARAMS((const char *, int)); +extern int history_search_prefix (const char *, int); /* Search for STRING in the history list, starting at POS, an absolute index into the list. DIR, if negative, says to search backwards from POS, else forwards. Returns the absolute index of the history element where STRING was found, or -1 otherwise. */ -extern int history_search_pos PARAMS((const char *, int, int)); +extern int history_search_pos (const char *, int, int); /* Managing the history file. */ /* Add the contents of FILENAME to the history list, a line at a time. If FILENAME is NULL, then read from ~/.history. Returns 0 if successful, or errno if not. */ -extern int read_history PARAMS((const char *)); +extern int read_history (const char *); /* Read a range of lines from FILENAME, adding them to the history list. Start reading at the FROM'th line and end at the TO'th. If FROM is zero, start at the beginning. If TO is less than FROM, read until the end of the file. If FILENAME is NULL, then read from ~/.history. Returns 0 if successful, or errno if not. */ -extern int read_history_range PARAMS((const char *, int, int)); +extern int read_history_range (const char *, int, int); /* Write the current history to FILENAME. If FILENAME is NULL, then write the history list to ~/.history. Values returned are as in read_history (). */ -extern int write_history PARAMS((const char *)); +extern int write_history (const char *); /* Append NELEMENT entries to FILENAME. The entries appended are from the end of the list minus NELEMENTs up to the end of the list. */ -extern int append_history PARAMS((int, const char *)); +extern int append_history (int, const char *); /* Truncate the history file, leaving only the last NLINES lines. */ -extern int history_truncate_file PARAMS((const char *, int)); +extern int history_truncate_file (const char *, int); /* History expansion. */ @@ -227,12 +232,12 @@ extern int history_truncate_file PARAMS((const char *, int)); If an error occurred in expansion, then OUTPUT contains a descriptive error message. */ -extern int history_expand PARAMS((char *, char **)); +extern int history_expand (char *, char **); /* Extract a string segment consisting of the FIRST through LAST arguments present in STRING. Arguments are broken up as in the shell. */ -extern char *history_arg_extract PARAMS((int, int, const char *)); +extern char *history_arg_extract (int, int, const char *); /* Return the text of the history event beginning at the current offset into STRING. Pass STRING with *INDEX equal to the @@ -240,11 +245,11 @@ extern char *history_arg_extract PARAMS((int, int, const char *)); DELIMITING_QUOTE is a character that is allowed to end the string specification for what to search for in addition to the normal characters `:', ` ', `\t', `\n', and sometimes `?'. */ -extern char *get_history_event PARAMS((const char *, int *, int)); +extern char *get_history_event (const char *, int *, int); /* Return an array of tokens, much as the shell might. The tokens are parsed out of STRING. */ -extern char **history_tokenize PARAMS((const char *)); +extern char **history_tokenize (const char *); /* Exported history variables. */ extern int history_base; diff --git a/history.pc.in b/history.pc.in new file mode 100644 index 0000000..8a80775 --- /dev/null +++ b/history.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: History +Description: Gnu History library for managing previously-entered lines +URL: http://tiswww.cwru.edu/php/chet/readline/rltop.html +Version: @LIBVERSION@ +Libs: -L${libdir} -lhistory +Cflags: -I${includedir} diff --git a/histsearch.c b/histsearch.c index 7a426c9..b62c06b 100644 --- a/histsearch.c +++ b/histsearch.c @@ -1,6 +1,6 @@ /* histsearch.c -- searching the history list. */ -/* Copyright (C) 1989, 1992-2009,2017 Free Software Foundation, Inc. +/* Copyright (C) 1989, 1992-2009,2017,2021 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. @@ -51,7 +51,7 @@ string. */ char *history_search_delimiter_chars = (char *)NULL; -static int history_search_internal PARAMS((const char *, int, int)); +static int history_search_internal (const char *, int, int); /* Search the history for STRING, starting at history_offset. If DIRECTION < 0, then the search is through previous entries, else @@ -248,7 +248,7 @@ _hs_history_patsearch (const char *string, int direction, int flags) ret = history_search_internal (pat, direction, flags|PATTERN_SEARCH); if (pat != string) - free (pat); + xfree (pat); return ret; } diff --git a/input.c b/input.c index 61b0fde..6f038d4 100644 --- a/input.c +++ b/input.c @@ -1,6 +1,6 @@ /* input.c -- character input functions for readline. */ -/* Copyright (C) 1994-2017 Free Software Foundation, Inc. +/* Copyright (C) 1994-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -50,6 +50,7 @@ #include #include "posixselect.h" +#include "posixtime.h" #if defined (FIONREAD_IN_SYS_IOCTL) # include @@ -78,7 +79,7 @@ extern int errno; # define O_NDELAY O_NONBLOCK /* Posix style */ #endif -#if defined (HAVE_PSELECT) +#if defined (HAVE_PSELECT) || defined (HAVE_SELECT) extern sigset_t _rl_orig_sigset; #endif @@ -89,6 +90,9 @@ rl_hook_func_t *rl_event_hook = (rl_hook_func_t *)NULL; /* A function to call if a read(2) is interrupted by a signal. */ rl_hook_func_t *rl_signal_event_hook = (rl_hook_func_t *)NULL; +/* A function to call when readline times out after a time is specified. */ +rl_hook_func_t *rl_timeout_event_hook = (rl_hook_func_t *)NULL; + /* A function to replace _rl_input_available for applications using the callback interface. */ rl_hook_func_t *rl_input_available_hook = (rl_hook_func_t *)NULL; @@ -97,9 +101,9 @@ rl_getc_func_t *rl_getc_function = rl_getc; static int _keyboard_input_timeout = 100000; /* 0.1 seconds; it's in usec */ -static int ibuffer_space PARAMS((void)); -static int rl_get_char PARAMS((int *)); -static int rl_gather_tyi PARAMS((void)); +static int ibuffer_space (void); +static int rl_get_char (int *); +static int rl_gather_tyi (void); /* Windows isatty returns true for every character device, including the null device, so we need to perform additional checks. */ @@ -132,6 +136,36 @@ win32_isatty (int fd) #define isatty(x) win32_isatty(x) #endif +/* Readline timeouts */ + +/* I don't know how to set a timeout for _getch() in MinGW32, so we use + SIGALRM. */ +#if (defined (HAVE_PSELECT) || defined (HAVE_SELECT)) && !defined (__MINGW32__) +# define RL_TIMEOUT_USE_SELECT +#else +# define RL_TIMEOUT_USE_SIGALRM +#endif + +int rl_set_timeout (unsigned int, unsigned int); +int rl_timeout_remaining (unsigned int *, unsigned int *); + +int _rl_timeout_init (void); +int _rl_timeout_sigalrm_handler (void); +int _rl_timeout_select (int, fd_set *, fd_set *, fd_set *, const struct timeval *, const sigset_t *); + +static void _rl_timeout_handle (void); +#if defined (RL_TIMEOUT_USE_SIGALRM) +static int set_alarm (unsigned int *, unsigned int *); +static void reset_alarm (void); +#endif + +/* We implement timeouts as a future time using a supplied interval + (timeout_duration) from when the timeout is set (timeout_point). + That allows us to easily determine whether the timeout has occurred + and compute the time remaining until it does. */ +static struct timeval timeout_point; +static struct timeval timeout_duration; + /* **************************************************************** */ /* */ /* Character Input Buffering */ @@ -223,13 +257,17 @@ rl_gather_tyi (void) input = 0; tty = fileno (rl_instream); -#if defined (HAVE_SELECT) +#if defined (HAVE_PSELECT) || defined (HAVE_SELECT) FD_ZERO (&readfds); FD_ZERO (&exceptfds); FD_SET (tty, &readfds); FD_SET (tty, &exceptfds); USEC_TO_TIMEVAL (_keyboard_input_timeout, timeout); +#if defined (RL_TIMEOUT_USE_SELECT) + result = _rl_timeout_select (tty + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout, NULL); +#else result = select (tty + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout); +#endif if (result <= 0) return 0; /* Nothing to read. */ #endif @@ -330,11 +368,11 @@ rl_set_keyboard_input_timeout (int u) int _rl_input_available (void) { -#if defined(HAVE_SELECT) +#if defined (HAVE_PSELECT) || defined (HAVE_SELECT) fd_set readfds, exceptfds; struct timeval timeout; #endif -#if !defined (HAVE_SELECT) && defined(FIONREAD) +#if !defined (HAVE_SELECT) && defined (FIONREAD) int chars_avail; #endif int tty; @@ -344,13 +382,17 @@ _rl_input_available (void) tty = fileno (rl_instream); -#if defined (HAVE_SELECT) +#if defined (HAVE_PSELECT) || defined (HAVE_SELECT) FD_ZERO (&readfds); FD_ZERO (&exceptfds); FD_SET (tty, &readfds); FD_SET (tty, &exceptfds); USEC_TO_TIMEVAL (_keyboard_input_timeout, timeout); +# if defined (RL_TIMEOUT_USE_SELECT) + return (_rl_timeout_select (tty + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout, NULL) > 0); +# else return (select (tty + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout) > 0); +# endif #else #if defined (FIONREAD) @@ -463,6 +505,242 @@ rl_clear_pending_input (void) return 0; } +/* **************************************************************** */ +/* */ +/* Timeout utility */ +/* */ +/* **************************************************************** */ + +#if defined (RL_TIMEOUT_USE_SIGALRM) +# if defined (HAVE_SETITIMER) + +static int +set_alarm (unsigned int *secs, unsigned int *usecs) +{ + struct itimerval it; + + timerclear (&it.it_interval); + timerset (&it.it_value, *secs, *usecs); + return setitimer (ITIMER_REAL, &it, NULL); +} + +static void +reset_alarm () +{ + struct itimerval it; + + timerclear (&it.it_interval); + timerclear (&it.it_value); + setitimer (ITIMER_REAL, &it, NULL); +} +# else +static int +set_alarm (unsigned int *secs, unsigned int *usecs) +{ + if (*secs == 0 || *usecs >= USEC_PER_SEC / 2) + (*secs)++; + *usecs = 0; + + return alarm (*secs); +} +static void +reset_alarm () +{ + alarm (0); +} +# endif +#endif + +/* Set a timeout which will be used for the next call of `readline + ()'. When (0, 0) are specified the timeout is cleared. */ +int +rl_set_timeout (unsigned int secs, unsigned int usecs) +{ + timeout_duration.tv_sec = secs + usecs / USEC_PER_SEC; + timeout_duration.tv_usec = usecs % USEC_PER_SEC; + + return 0; +} + +/* Start measuring the time. Returns 0 on success. Returns -1 on + error. */ +int +_rl_timeout_init (void) +{ + unsigned int secs, usecs; + + /* Clear the timeout state of the previous edit */ + RL_UNSETSTATE(RL_STATE_TIMEOUT); + timerclear (&timeout_point); + + /* Return 0 when timeout is unset. */ + if (timerisunset (&timeout_duration)) + return 0; + + /* Return -1 on gettimeofday error. */ + if (gettimeofday(&timeout_point, 0) != 0) + { + timerclear (&timeout_point); + return -1; + } + + secs = timeout_duration.tv_sec; + usecs = timeout_duration.tv_usec; + +#if defined (RL_TIMEOUT_USE_SIGALRM) + /* If select(2)/pselect(2) is unavailable, use SIGALRM. */ + if (set_alarm (&secs, &usecs) < 0) + return -1; +#endif + + timeout_point.tv_sec += secs; + timeout_point.tv_usec += usecs; + if (timeout_point.tv_usec >= USEC_PER_SEC) + { + timeout_point.tv_sec++; + timeout_point.tv_usec -= USEC_PER_SEC; + } + + return 0; +} + +/* Get the remaining time until the scheduled timeout. Returns -1 on + error or no timeout set with secs and usecs unchanged. Returns 0 + on an expired timeout with secs and usecs unchanged. Returns 1 + when the timeout has not yet expired. The remaining time is stored + in secs and usecs. When NULL is specified to either of the + arguments, just the expiration is tested. */ +int +rl_timeout_remaining (unsigned int *secs, unsigned int *usecs) +{ + struct timeval current_time; + + /* Return -1 when timeout is unset. */ + if (timerisunset (&timeout_point)) + { + errno = 0; + return -1; + } + + /* Return -1 on error. errno is set by gettimeofday. */ + if (gettimeofday(¤t_time, 0) != 0) + return -1; + + /* Return 0 when timeout has already expired. */ + /* could use timercmp (&timeout_point, ¤t_time, <) here */ + if (current_time.tv_sec > timeout_point.tv_sec || + (current_time.tv_sec == timeout_point.tv_sec && + current_time.tv_usec >= timeout_point.tv_usec)) + return 0; + + if (secs && usecs) + { + *secs = timeout_point.tv_sec - current_time.tv_sec; + *usecs = timeout_point.tv_usec - current_time.tv_usec; + if (timeout_point.tv_usec < current_time.tv_usec) + { + (*secs)--; + *usecs += USEC_PER_SEC; + } + } + + return 1; +} + +/* This should only be called if RL_TIMEOUT_USE_SELECT is defined. */ + +#if defined (HAVE_PSELECT) || defined (HAVE_SELECT) +int +_rl_timeout_select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timeval *timeout, const sigset_t *sigmask) +{ + int result; +#if defined (HAVE_PSELECT) + struct timespec ts; +#else + sigset_t origmask; + struct timeval tv; +#endif + int tmout_status; + struct timeval tmout; + unsigned int sec, usec; + + /* When the remaining time for rl_timeout is shorter than the + keyboard input timeout, replace `timeout' with the remaining time + for `rl_timeout' and set `tmout_status = 1'. */ + tmout_status = rl_timeout_remaining (&sec, &usec); + tmout.tv_sec = sec; + tmout.tv_usec = usec; + + if (tmout_status == 0) + _rl_timeout_handle (); + else if (tmout_status == 1) + { + if (timeout == NULL || timercmp (&tmout, timeout, <)) + timeout = &tmout; + else + tmout_status = -1; + } + +#if defined (HAVE_PSELECT) + if (timeout) + { + TIMEVAL_TO_TIMESPEC (timeout, &ts); + result = pselect (nfds, readfds, writefds, exceptfds, &ts, sigmask); + } + else + result = pselect (nfds, readfds, writefds, exceptfds, NULL, sigmask); +#else + if (sigmask) + sigprocmask (SIG_SETMASK, sigmask, &origmask); + + if (timeout) + { + tv.tv_sec = timeout->tv_sec; + tv.tv_usec = timeout->tv_usec; + result = select (nfds, readfds, writefds, exceptfds, &tv); + } + else + result = select (nfds, readfds, writefds, exceptfds, NULL); + + if (sigmask) + sigprocmask (SIG_SETMASK, &origmask, NULL); +#endif + + if (tmout_status == 1 && result == 0) + _rl_timeout_handle (); + + return result; +} +#endif + +static void +_rl_timeout_handle () +{ + if (rl_timeout_event_hook) + (*rl_timeout_event_hook) (); + + RL_SETSTATE(RL_STATE_TIMEOUT); + _rl_abort_internal (); +} + +int +_rl_timeout_handle_sigalrm () +{ +#if defined (RL_TIMEOUT_USE_SIGALRM) + if (timerisunset (&timeout_point)) + return -1; + + /* Reset `timeout_point' to the current time to ensure that later + calls of `rl_timeout_pending ()' return 0 (timeout expired). */ + if (gettimeofday(&timeout_point, 0) != 0) + timerclear (&timeout_point); + + reset_alarm (); + + _rl_timeout_handle (); +#endif + return -1; +} /* **************************************************************** */ /* */ /* Character Input */ @@ -497,6 +775,7 @@ rl_read_key (void) if ((r = rl_gather_tyi ()) < 0) /* XXX - EIO */ { rl_done = 1; + RL_SETSTATE (RL_STATE_DONE); return (errno == EIO ? (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF) : '\n'); } else if (r > 0) /* read something */ @@ -525,11 +804,13 @@ rl_getc (FILE *stream) { int result; unsigned char c; + int fd; #if defined (HAVE_PSELECT) sigset_t empty_set; fd_set readfds; #endif + fd = fileno (stream); while (1) { RL_CHECK_SIGNALS (); @@ -537,23 +818,27 @@ rl_getc (FILE *stream) /* We know at this point that _rl_caught_signal == 0 */ #if defined (__MINGW32__) - if (isatty (fileno (stream))) + if (isatty (fd) return (_getch ()); /* "There is no error return." */ #endif result = 0; -#if defined (HAVE_PSELECT) +#if defined (HAVE_PSELECT) || defined (HAVE_SELECT) + /* At this point, if we have pselect, we're using select/pselect for the + timeouts. We handled MinGW above. */ FD_ZERO (&readfds); - FD_SET (fileno (stream), &readfds); + FD_SET (fd, &readfds); # if defined (HANDLE_SIGNALS) - result = pselect (fileno (stream) + 1, &readfds, NULL, NULL, NULL, &_rl_orig_sigset); + result = _rl_timeout_select (fd + 1, &readfds, NULL, NULL, NULL, &_rl_orig_sigset); # else sigemptyset (&empty_set); sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &empty_set); - result = pselect (fileno (stream) + 1, &readfds, NULL, NULL, NULL, &empty_set); + result = _rl_timeout_select (fd + 1, &readfds, NULL, NULL, NULL, &empty_set); # endif /* HANDLE_SIGNALS */ + if (result == 0) + _rl_timeout_handle (); /* check the timeout */ #endif if (result >= 0) - result = read (fileno (stream), &c, sizeof (unsigned char)); + result = read (fd, &c, sizeof (unsigned char)); if (result == sizeof (unsigned char)) return (c); @@ -582,7 +867,7 @@ rl_getc (FILE *stream) if (errno == X_EWOULDBLOCK || errno == X_EAGAIN) { - if (sh_unset_nodelay_mode (fileno (stream)) < 0) + if (sh_unset_nodelay_mode (fd) < 0) return (EOF); continue; } @@ -645,7 +930,7 @@ _rl_read_mbchar (char *mbchar, int size) { int mb_len, c; size_t mbchar_bytes_length; - wchar_t wc; + WCHAR_T wc; mbstate_t ps, ps_back; memset(&ps, 0, sizeof (mbstate_t)); @@ -661,7 +946,7 @@ _rl_read_mbchar (char *mbchar, int size) mbchar[mb_len++] = c; - mbchar_bytes_length = mbrtowc (&wc, mbchar, mb_len, &ps); + mbchar_bytes_length = MBRTOWC (&wc, mbchar, mb_len, &ps); if (mbchar_bytes_length == (size_t)(-1)) break; /* invalid byte sequence for the current locale */ else if (mbchar_bytes_length == (size_t)(-2)) diff --git a/isearch.c b/isearch.c index 080ba3c..c2d4d23 100644 --- a/isearch.c +++ b/isearch.c @@ -6,7 +6,7 @@ /* */ /* **************************************************************** */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -59,13 +59,10 @@ char *_rl_isearch_terminators = (char *)NULL; _rl_search_cxt *_rl_iscxt = 0; -/* Variables imported from other files in the readline library. */ -extern HIST_ENTRY *_rl_saved_line_for_history; +static int rl_search_history (int, int); -static int rl_search_history PARAMS((int, int)); - -static _rl_search_cxt *_rl_isearch_init PARAMS((int)); -static void _rl_isearch_fini PARAMS((_rl_search_cxt *)); +static _rl_search_cxt *_rl_isearch_init (int); +static void _rl_isearch_fini (_rl_search_cxt *); /* Last line found by the current incremental search, so we don't `find' identical lines many times in a row. Now part of isearch context. */ @@ -197,7 +194,10 @@ rl_display_search (char *search_string, int flags, int where) rl_message ("%s", message); xfree (message); +#if 0 + /* rl_message calls this */ (*rl_redisplay_function) (); +#endif } static _rl_search_cxt * @@ -276,6 +276,8 @@ _rl_isearch_fini (_rl_search_cxt *cxt) last_isearch_string = cxt->search_string; last_isearch_string_len = cxt->search_string_index; cxt->search_string = 0; + cxt->search_string_size = 0; + cxt->search_string_index = 0; if (cxt->last_found_line < cxt->save_line) rl_get_previous_history (cxt->save_line - cxt->last_found_line, 0); @@ -321,7 +323,7 @@ _rl_search_getchar (_rl_search_cxt *cxt) #if defined (HANDLE_MULTIBYTE) /* This ends up with C (and LASTC) being set to the last byte of the multibyte character. In most cases c == lastc == mb[0] */ - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (c >= 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0) c = cxt->lastc = _rl_read_mbstring (cxt->lastc, cxt->mb, MB_LEN_MAX); #endif @@ -680,7 +682,7 @@ opcode_dispatch: paste = _rl_bracketed_text (&pastelen); if (paste == 0 || *paste == 0) { - free (paste); + xfree (paste); break; } if (_rl_enable_active_region) @@ -690,9 +692,10 @@ opcode_dispatch: cxt->search_string_size += pastelen + 2; cxt->search_string = (char *)xrealloc (cxt->search_string, cxt->search_string_size); } - strcpy (cxt->search_string + cxt->search_string_index, paste); + memcpy (cxt->search_string + cxt->search_string_index, paste, pastelen); cxt->search_string_index += pastelen; - free (paste); + cxt->search_string[cxt->search_string_index] = '\0'; + xfree (paste); break; /* Add character to search string and continue search. */ diff --git a/keymaps.h b/keymaps.h index 1fa853d..2903814 100644 --- a/keymaps.h +++ b/keymaps.h @@ -1,6 +1,6 @@ /* keymaps.h -- Manipulation of readline keymaps. */ -/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc. +/* Copyright (C) 1987, 1989, 1992-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -65,33 +65,33 @@ extern KEYMAP_ENTRY_ARRAY vi_insertion_keymap, vi_movement_keymap; /* Return a new, empty keymap. Free it with free() when you are done. */ -extern Keymap rl_make_bare_keymap PARAMS((void)); +extern Keymap rl_make_bare_keymap (void); /* Return a new keymap which is a copy of MAP. */ -extern Keymap rl_copy_keymap PARAMS((Keymap)); +extern Keymap rl_copy_keymap (Keymap); /* Return a new keymap with the printing characters bound to rl_insert, the lowercase Meta characters bound to run their equivalents, and the Meta digits bound to produce numeric arguments. */ -extern Keymap rl_make_keymap PARAMS((void)); +extern Keymap rl_make_keymap (void); /* Free the storage associated with a keymap. */ -extern void rl_discard_keymap PARAMS((Keymap)); +extern void rl_discard_keymap (Keymap); /* These functions actually appear in bind.c */ /* Return the keymap corresponding to a given name. Names look like `emacs' or `emacs-meta' or `vi-insert'. */ -extern Keymap rl_get_keymap_by_name PARAMS((const char *)); +extern Keymap rl_get_keymap_by_name (const char *); /* Return the current keymap. */ -extern Keymap rl_get_keymap PARAMS((void)); +extern Keymap rl_get_keymap (void); /* Set the current keymap to MAP. */ -extern void rl_set_keymap PARAMS((Keymap)); +extern void rl_set_keymap (Keymap); /* Set the name of MAP to NAME */ -extern int rl_set_keymap_name PARAMS((const char *, Keymap)); +extern int rl_set_keymap_name (const char *, Keymap); #ifdef __cplusplus } diff --git a/kill.c b/kill.c index 50c3fde..4cf933b 100644 --- a/kill.c +++ b/kill.c @@ -1,6 +1,6 @@ /* kill.c -- kill ring management. */ -/* Copyright (C) 1994-2020 Free Software Foundation, Inc. +/* Copyright (C) 1994-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -70,10 +70,10 @@ static int rl_kill_index; /* How many slots we have in the kill ring. */ static int rl_kill_ring_length; -static int _rl_copy_to_kill_ring PARAMS((char *, int)); -static int region_kill_internal PARAMS((int)); -static int _rl_copy_word_as_kill PARAMS((int, int)); -static int rl_yank_nth_arg_internal PARAMS((int, int, int)); +static int _rl_copy_to_kill_ring (char *, int); +static int region_kill_internal (int); +static int _rl_copy_word_as_kill (int, int); +static int rl_yank_nth_arg_internal (int, int, int); /* How to say that you only want to save a certain amount of kill material. */ @@ -351,6 +351,30 @@ rl_unix_filename_rubout (int count, int key) while (count--) { c = rl_line_buffer[rl_point - 1]; + + /* First move backwards through whitespace */ + while (rl_point && whitespace (c)) + { + rl_point--; + c = rl_line_buffer[rl_point - 1]; + } + + /* Consume one or more slashes. */ + if (c == '/') + { + int i; + + i = rl_point - 1; + while (i > 0 && c == '/') + c = rl_line_buffer[--i]; + if (i == 0 || whitespace (c)) + { + rl_point = i + whitespace (c); + continue; /* slashes only */ + } + c = '/'; + } + while (rl_point && (whitespace (c) || c == '/')) { rl_point--; @@ -535,7 +559,7 @@ rl_yank_pop (int count, int key) int rl_vi_yank_pop (int count, int key) { - int l, n; + int l, n, origpoint; if (((rl_last_func != rl_vi_yank_pop) && (rl_last_func != rl_vi_put)) || !rl_kill_ring) @@ -545,11 +569,21 @@ rl_vi_yank_pop (int count, int key) } l = strlen (rl_kill_ring[rl_kill_index]); +#if 0 /* TAG:readline-8.3 8/29/2022 matteopaolini1995@gmail.com */ + origpoint = rl_point; + n = rl_point - l + 1; +#else n = rl_point - l; +#endif if (n >= 0 && STREQN (rl_line_buffer + n, rl_kill_ring[rl_kill_index], l)) { +#if 0 /* TAG:readline-8.3 */ + rl_delete_text (n, n + l); /* remember vi cursor positioning */ + rl_point = origpoint - l; +#else rl_delete_text (n, rl_point); rl_point = n; +#endif rl_kill_index--; if (rl_kill_index < 0) rl_kill_index = rl_kill_ring_length - 1; diff --git a/m4/codeset.m4 b/m4/codeset.m4 new file mode 100644 index 0000000..280f556 --- /dev/null +++ b/m4/codeset.m4 @@ -0,0 +1,24 @@ +# codeset.m4 serial 5 (gettext-0.18.2) +dnl Copyright (C) 2000-2002, 2006, 2008-2014, 2016, 2019 Free Software +dnl Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([AM_LANGINFO_CODESET], +[ + AC_CACHE_CHECK([for nl_langinfo and CODESET], [am_cv_langinfo_codeset], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[char* cs = nl_langinfo(CODESET); return !cs;]])], + [am_cv_langinfo_codeset=yes], + [am_cv_langinfo_codeset=no]) + ]) + if test $am_cv_langinfo_codeset = yes; then + AC_DEFINE([HAVE_LANGINFO_CODESET], [1], + [Define if you have and nl_langinfo(CODESET).]) + fi +]) diff --git a/macro.c b/macro.c index 92cc55c..231a24b 100644 --- a/macro.c +++ b/macro.c @@ -276,6 +276,8 @@ rl_end_kbd_macro (int count, int ignore) } current_macro_index -= rl_key_sequence_length; + if (current_macro_index < 0) + current_macro_index = 0; current_macro[current_macro_index] = '\0'; RL_UNSETSTATE(RL_STATE_MACRODEF); diff --git a/mbutil.c b/mbutil.c index dc62b4c..47e9100 100644 --- a/mbutil.c +++ b/mbutil.c @@ -1,6 +1,6 @@ /* mbutil.c -- readline multibyte character utility functions */ -/* Copyright (C) 2001-2020 Free Software Foundation, Inc. +/* Copyright (C) 2001-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -153,7 +153,7 @@ _rl_find_next_mbchar_internal (char *string, int seed, int count, int find_non_z size_t tmp, len; mbstate_t ps; int point; - wchar_t wc; + WCHAR_T wc; tmp = 0; @@ -183,11 +183,11 @@ _rl_find_next_mbchar_internal (char *string, int seed, int count, int find_non_z if (_rl_utf8locale && UTF8_SINGLEBYTE(string[point])) { tmp = 1; - wc = (wchar_t) string[point]; + wc = (WCHAR_T) string[point]; memset(&ps, 0, sizeof(mbstate_t)); } else - tmp = mbrtowc (&wc, string+point, len, &ps); + tmp = MBRTOWC (&wc, string+point, len, &ps); if (MB_INVALIDCH ((size_t)tmp)) { /* invalid bytes. assume a byte represents a character */ @@ -216,11 +216,11 @@ _rl_find_next_mbchar_internal (char *string, int seed, int count, int find_non_z if (find_non_zero) { - tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); + tmp = MBRTOWC (&wc, string + point, strlen (string + point), &ps); while (MB_NULLWCH (tmp) == 0 && MB_INVALIDCH (tmp) == 0 && WCWIDTH (wc) == 0) { point += tmp; - tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); + tmp = MBRTOWC (&wc, string + point, strlen (string + point), &ps); } } @@ -231,11 +231,11 @@ static inline int _rl_test_nonzero (char *string, int ind, int len) { size_t tmp; - wchar_t wc; + WCHAR_T wc; mbstate_t ps; memset (&ps, 0, sizeof (mbstate_t)); - tmp = mbrtowc (&wc, string + ind, len - ind, &ps); + tmp = MBRTOWC (&wc, string + ind, len - ind, &ps); /* treat invalid multibyte sequences as non-zero-width */ return (MB_INVALIDCH (tmp) || MB_NULLWCH (tmp) || WCWIDTH (wc) > 0); } @@ -293,7 +293,7 @@ _rl_find_prev_mbchar_internal (char *string, int seed, int find_non_zero) mbstate_t ps; int prev, non_zero_prev, point, length; size_t tmp; - wchar_t wc; + WCHAR_T wc; if (_rl_utf8locale) return (_rl_find_prev_utf8char (string, seed, find_non_zero)); @@ -312,11 +312,11 @@ _rl_find_prev_mbchar_internal (char *string, int seed, int find_non_zero) if (_rl_utf8locale && UTF8_SINGLEBYTE(string[point])) { tmp = 1; - wc = (wchar_t) string[point]; + wc = (WCHAR_T) string[point]; memset(&ps, 0, sizeof(mbstate_t)); } else - tmp = mbrtowc (&wc, string + point, length - point, &ps); + tmp = MBRTOWC (&wc, string + point, length - point, &ps); if (MB_INVALIDCH ((size_t)tmp)) { /* in this case, bytes are invalid or too short to compose @@ -470,27 +470,27 @@ _rl_is_mbchar_matched (char *string, int seed, int end, char *mbchar, int length return 1; } -wchar_t +WCHAR_T _rl_char_value (char *buf, int ind) { size_t tmp; - wchar_t wc; + WCHAR_T wc; mbstate_t ps; int l; if (MB_LEN_MAX == 1 || rl_byte_oriented) - return ((wchar_t) buf[ind]); + return ((WCHAR_T) buf[ind]); if (_rl_utf8locale && UTF8_SINGLEBYTE(buf[ind])) - return ((wchar_t) buf[ind]); + return ((WCHAR_T) buf[ind]); l = strlen (buf); if (ind >= l - 1) - return ((wchar_t) buf[ind]); + return ((WCHAR_T) buf[ind]); if (l < ind) /* Sanity check */ l = strlen (buf+ind); memset (&ps, 0, sizeof (mbstate_t)); - tmp = mbrtowc (&wc, buf + ind, l - ind, &ps); + tmp = MBRTOWC (&wc, buf + ind, l - ind, &ps); if (MB_INVALIDCH (tmp) || MB_NULLWCH (tmp)) - return ((wchar_t) buf[ind]); + return ((WCHAR_T) buf[ind]); return wc; } #endif /* HANDLE_MULTIBYTE */ diff --git a/misc.c b/misc.c index 3d9a674..4bca9c5 100644 --- a/misc.c +++ b/misc.c @@ -1,6 +1,6 @@ /* misc.c -- miscellaneous bindable readline functions. */ -/* Copyright (C) 1987-2019 Free Software Foundation, Inc. +/* Copyright (C) 1987-2022 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -50,14 +50,12 @@ #include "history.h" #include "rlprivate.h" +#include "histlib.h" #include "rlshell.h" #include "xmalloc.h" -static int rl_digit_loop PARAMS((void)); -static void _rl_history_set_point PARAMS((void)); - -/* Forward declarations used in this file */ -void _rl_free_history_entry PARAMS((HIST_ENTRY *)); +static int rl_digit_loop (void); +static void _rl_history_set_point (void); /* If non-zero, rl_get_previous_history and rl_get_next_history attempt to preserve the value of rl_point from line to line. */ @@ -309,9 +307,9 @@ _rl_start_using_history (void) { using_history (); if (_rl_saved_line_for_history) - _rl_free_history_entry (_rl_saved_line_for_history); - + _rl_free_saved_history_line (); _rl_saved_line_for_history = (HIST_ENTRY *)NULL; + _rl_history_search_pos = -99; /* some random invalid history position */ } /* Free the contents (and containing structure) of a HIST_ENTRY. */ @@ -355,6 +353,8 @@ rl_maybe_unsave_line (void) list from a history entry, as in rl_replace_from_history() below. */ rl_replace_line (_rl_saved_line_for_history->line, 0); rl_undo_list = (UNDO_LIST *)_rl_saved_line_for_history->data; + + /* Doesn't free `data'. */ _rl_free_history_entry (_rl_saved_line_for_history); _rl_saved_line_for_history = (HIST_ENTRY *)NULL; rl_point = rl_end; /* rl_replace_line sets rl_end */ @@ -382,8 +382,18 @@ rl_maybe_save_line (void) int _rl_free_saved_history_line (void) { + UNDO_LIST *orig; + if (_rl_saved_line_for_history) { + if (rl_undo_list && rl_undo_list == (UNDO_LIST *)_rl_saved_line_for_history->data) + rl_undo_list = 0; + /* Have to free this separately because _rl_free_history entry can't: + it doesn't know whether or not this has application data. Only the + callers that know this is _rl_saved_line_for_history can know that + it's an undo list. */ + if (_rl_saved_line_for_history->data) + _rl_free_undo_list ((UNDO_LIST *)_rl_saved_line_for_history->data); _rl_free_history_entry (_rl_saved_line_for_history); _rl_saved_line_for_history = (HIST_ENTRY *)NULL; } @@ -625,7 +635,7 @@ rl_get_previous_history (int count, int key) if (temp == 0) { if (had_saved_line == 0) - _rl_free_saved_history_line (); + _rl_free_saved_history_line (); rl_ding (); } else @@ -637,6 +647,42 @@ rl_get_previous_history (int count, int key) return 0; } +/* With an argument, move back that many history lines, else move to the + beginning of history. */ +int +rl_fetch_history (int count, int c) +{ + int wanted, nhist; + + /* Giving an argument of n means we want the nth command in the history + file. The command number is interpreted the same way that the bash + `history' command does it -- that is, giving an argument count of 450 + to this command would get the command listed as number 450 in the + output of `history'. */ + if (rl_explicit_arg) + { + nhist = history_base + where_history (); + /* Negative arguments count back from the end of the history list. */ + wanted = (count >= 0) ? nhist - count : -count; + + if (wanted <= 0 || wanted >= nhist) + { + /* In vi mode, we don't change the line with an out-of-range + argument, as for the `G' command. */ + if (rl_editing_mode == vi_mode) + rl_ding (); + else + rl_beginning_of_history (0, 0); + } + else + rl_get_previous_history (wanted, c); + } + else + rl_beginning_of_history (count, 0); + + return (0); +} + /* The equivalent of the Korn shell C-o operate-and-get-next-history-line editing command. */ @@ -664,15 +710,13 @@ set_saved_history () } int -rl_operate_and_get_next (count, c) - int count, c; +rl_operate_and_get_next (int count, int c) { /* Accept the current line. */ rl_newline (1, c); saved_history_logical_offset = rl_explicit_arg ? count : where_history () + history_base + 1; - _rl_saved_internal_startup_hook = _rl_internal_startup_hook; _rl_internal_startup_hook = set_saved_history; diff --git a/nls.c b/nls.c index d2f67e0..5c6a13b 100644 --- a/nls.c +++ b/nls.c @@ -1,6 +1,6 @@ /* nls.c -- skeletal internationalization code. */ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. +/* Copyright (C) 1996-2022 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -53,8 +53,12 @@ #include "readline.h" #include "rlshell.h" #include "rlprivate.h" +#include "xmalloc.h" -static int utf8locale PARAMS((char *)); +static int utf8locale (char *); + +#define RL_DEFAULT_LOCALE "C" +static char *_rl_current_locale = 0; #if !defined (HAVE_SETLOCALE) /* A list of legal values for the LANG or LC_CTYPE environment variables. @@ -78,12 +82,12 @@ static char *legal_lang_values[] = 0 }; -static char *normalize_codeset PARAMS((char *)); +static char *normalize_codeset (char *); #endif /* !HAVE_SETLOCALE */ -static char *find_codeset PARAMS((char *, size_t *)); +static char *find_codeset (char *, size_t *); -static char *_rl_get_locale_var PARAMS((const char *)); +static char *_rl_get_locale_var (const char *); static char * _rl_get_locale_var (const char *v) @@ -131,50 +135,61 @@ _rl_init_locale (void) that doesn't return anything, we set lspec to the empty string to force the subsequent call to setlocale() to define the `native' environment. */ +#if defined (HAVE_SETLOCALE) if (lspec == 0 || *lspec == 0) lspec = setlocale (LC_CTYPE, (char *)NULL); if (lspec == 0) lspec = ""; ret = setlocale (LC_CTYPE, lspec); /* ok, since it does not change locale */ +#else + ret = (lspec == 0 || *lspec == 0) ? RL_DEFAULT_LOCALE : lspec; +#endif _rl_utf8locale = (ret && *ret) ? utf8locale (ret) : 0; + _rl_current_locale = savestring (ret); return ret; } -/* Check for LC_ALL, LC_CTYPE, and LANG and use the first with a value - to decide the defaults for 8-bit character input and output. Returns - 1 if we set eight-bit mode. */ -int -_rl_init_eightbit (void) -{ /* If we have setlocale(3), just check the current LC_CTYPE category - value, and go into eight-bit mode if it's not C or POSIX. */ + value (passed as LOCALESTR), and go into eight-bit mode if it's not "C" + or "POSIX". If FORCE is non-zero, we reset the locale variables to values + appropriate for the C locale if the locale is "C" or "POSIX". FORCE is 0 + when this is called from _rl_init_eightbit, since we're modifying the + default initial values and don't need to change anything else. If we + don't have setlocale(3), we check the codeset portion of LOCALESTR against + a set of known values and go into eight-bit mode if it matches one of those. + Returns 1 if we set eight-bit (multibyte) mode. */ +static int +_rl_set_localevars (char *localestr, int force) +{ #if defined (HAVE_SETLOCALE) - char *lspec, *t; - - t = _rl_init_locale (); /* returns static pointer */ - - if (t && *t && (t[0] != 'C' || t[1]) && (STREQ (t, "POSIX") == 0)) + if (localestr && *localestr && (localestr[0] != 'C' || localestr[1]) && (STREQ (localestr, "POSIX") == 0)) { _rl_meta_flag = 1; _rl_convert_meta_chars_to_ascii = 0; _rl_output_meta_chars = 1; return (1); } + else if (force) + { + /* Default "C" locale settings. */ + _rl_meta_flag = 0; + _rl_convert_meta_chars_to_ascii = 1; + _rl_output_meta_chars = 0; + return (0); + } else return (0); #else /* !HAVE_SETLOCALE */ - char *lspec, *t; + char *t; int i; /* We don't have setlocale. Finesse it. Check the environment for the appropriate variables and set eight-bit mode if they have the right values. */ - lspec = _rl_get_locale_var ("LC_CTYPE"); - - if (lspec == 0 || (t = normalize_codeset (lspec)) == 0) + if (localestr == 0 || (t = normalize_codeset (localestr)) == 0) return (0); for (i = 0; t && legal_lang_values[i]; i++) if (STREQ (t, legal_lang_values[i])) @@ -185,6 +200,14 @@ _rl_init_eightbit (void) break; } + if (force && legal_lang_values[i] == 0) /* didn't find it */ + { + /* Default "C" locale settings. */ + _rl_meta_flag = 0; + _rl_convert_meta_chars_to_ascii = 1; + _rl_output_meta_chars = 0; + } + _rl_utf8locale = *t ? STREQ (t, "utf8") : 0; xfree (t); @@ -192,6 +215,21 @@ _rl_init_eightbit (void) #endif /* !HAVE_SETLOCALE */ } +/* Check for LC_ALL, LC_CTYPE, and LANG and use the first with a value + to decide the defaults for 8-bit character input and output. Returns + 1 if we set eight-bit mode. */ +int +_rl_init_eightbit (void) +{ + char *t, *ol; + + ol = _rl_current_locale; + t = _rl_init_locale (); /* resets _rl_current_locale, returns static pointer */ + xfree (ol); + + return (_rl_set_localevars (t, 0)); +} + #if !defined (HAVE_SETLOCALE) static char * normalize_codeset (char *codeset) @@ -288,3 +326,19 @@ find_codeset (char *name, size_t *lenp) return result; } + +void +_rl_reset_locale (void) +{ + char *ol, *nl; + + /* This should not be NULL; _rl_init_eightbit sets it on the first call to + readline() or rl_initialize(). */ + ol = _rl_current_locale; + nl = _rl_init_locale (); /* resets _rl_current_locale */ + + if ((ol == 0 && nl) || (ol && nl && (STREQ (ol, nl) == 0))) + (void)_rl_set_localevars (nl, 1); + + xfree (ol); +} diff --git a/parens.c b/parens.c index af47977..57ce704 100644 --- a/parens.c +++ b/parens.c @@ -1,6 +1,6 @@ /* parens.c -- implementation of matching parentheses feature. */ -/* Copyright (C) 1987, 1989, 1992-2015, 2017 Free Software Foundation, Inc. +/* Copyright (C) 1987, 1989, 1992-2015, 2017, 2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -53,7 +53,7 @@ extern char *strchr (), *strrchr (); #include "readline.h" #include "rlprivate.h" -static int find_matching_open PARAMS((char *, int, int)); +static int find_matching_open (char *, int, int); /* Non-zero means try to blink the matching open parenthesis when the close parenthesis is inserted. */ @@ -135,7 +135,11 @@ rl_insert_close (int count, int invoking_key) orig_point = rl_point; rl_point = match_point; (*rl_redisplay_function) (); +# if defined (RL_TIMEOUT_USE_SELECT) + ready = _rl_timeout_select (1, &readfds, (fd_set *)NULL, (fd_set *)NULL, &timer, NULL); +# else ready = select (1, &readfds, (fd_set *)NULL, (fd_set *)NULL, &timer); +# endif rl_point = orig_point; #else /* !HAVE_SELECT */ _rl_insert_char (count, invoking_key); diff --git a/patchlevel b/patchlevel index 7cbda82..d8c9df7 100644 --- a/patchlevel +++ b/patchlevel @@ -1,3 +1,3 @@ # Do not edit -- exists only for use by patch -2 +0 diff --git a/posixdir.h b/posixdir.h index af5be80..b737bd7 100644 --- a/posixdir.h +++ b/posixdir.h @@ -1,6 +1,6 @@ /* posixdir.h -- Posix directory reading includes and defines. */ -/* Copyright (C) 1987,1991,2012 Free Software Foundation, Inc. +/* Copyright (C) 1987,1991,2012,2019,2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. diff --git a/posixtime.h b/posixtime.h new file mode 100644 index 0000000..e70ebec --- /dev/null +++ b/posixtime.h @@ -0,0 +1,84 @@ +/* posixtime.h -- wrapper for time.h, sys/times.h mess. */ + +/* Copyright (C) 1999-2021 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#ifndef _POSIXTIME_H_ +#define _POSIXTIME_H_ + +/* include this after config.h */ +/* Some systems require this, mostly for the definition of `struct timezone'. + For example, Dynix/ptx has that definition in rather than + sys/time.h */ +#if defined (HAVE_SYS_TIME_H) +# include +#endif +#include + +#if !defined (HAVE_SYSCONF) || !defined (_SC_CLK_TCK) +# if !defined (CLK_TCK) +# if defined (HZ) +# define CLK_TCK HZ +# else +# define CLK_TCK 60 /* 60HZ */ +# endif +# endif /* !CLK_TCK */ +#endif /* !HAVE_SYSCONF && !_SC_CLK_TCK */ + +#if !HAVE_TIMEVAL +struct timeval +{ + time_t tv_sec; + long int tv_usec; +}; +#endif + +#if !HAVE_GETTIMEOFDAY +extern int gettimeofday PARAMS((struct timeval *, void *)); +#endif + +/* These exist on BSD systems, at least. */ +#if !defined (timerclear) +# define timerclear(tvp) do { (tvp)->tv_sec = 0; (tvp)->tv_usec = 0; } while (0) +#endif +#if !defined (timerisset) +# define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec) +#endif +#if !defined (timercmp) +# define timercmp(a, b, CMP) \ + (((a)->tv_sec == (b)->tv_sec) ? ((a)->tv_usec CMP (b)->tv_usec) \ + : ((a)->tv_sec CMP (b)->tv_sec)) +#endif + +/* These are non-standard. */ +#if !defined (timerisunset) +# define timerisunset(tvp) ((tvp)->tv_sec == 0 && (tvp)->tv_usec == 0) +#endif +#if !defined (timerset) +# define timerset(tvp, s, u) do { tvp->tv_sec = s; tvp->tv_usec = u; } while (0) +#endif + +#ifndef TIMEVAL_TO_TIMESPEC +# define TIMEVAL_TO_TIMESPEC(tv, ts) \ + do { \ + (ts)->tv_sec = (tv)->tv_sec; \ + (ts)->tv_nsec = (tv)->tv_usec * 1000; \ + } while (0) +#endif + +#endif /* _POSIXTIME_H_ */ diff --git a/readline.c b/readline.c index e61d188..9d42a8d 100644 --- a/readline.c +++ b/readline.c @@ -1,7 +1,7 @@ /* readline.c -- a general facility for reading lines of input with emacs style editing and completion. */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2022 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -72,35 +72,34 @@ extern int errno; #include "rlshell.h" #include "xmalloc.h" -#ifndef RL_LIBRARY_VERSION -# define RL_LIBRARY_VERSION "8.0" +#if defined (COLOR_SUPPORT) +# include "parse-colors.h" #endif -#ifndef RL_READLINE_VERSION -# define RL_READLINE_VERSION 0x0800 +#ifndef RL_LIBRARY_VERSION +# define RL_LIBRARY_VERSION "8.1" #endif -extern void _rl_free_history_entry PARAMS((HIST_ENTRY *)); - -#if defined (COLOR_SUPPORT) -extern void _rl_parse_colors PARAMS((void)); /* XXX */ +#ifndef RL_READLINE_VERSION +# define RL_READLINE_VERSION 0x0801 #endif - /* Forward declarations used in this file. */ -static char *readline_internal PARAMS((void)); -static void readline_initialize_everything PARAMS((void)); +static char *readline_internal (void); +static void readline_initialize_everything (void); + +static void run_startup_hooks (void); -static void bind_arrow_keys_internal PARAMS((Keymap)); -static void bind_arrow_keys PARAMS((void)); +static void bind_arrow_keys_internal (Keymap); +static void bind_arrow_keys (void); -static void bind_bracketed_paste_prefix PARAMS((void)); +static void bind_bracketed_paste_prefix (void); -static void readline_default_bindings PARAMS((void)); -static void reset_default_bindings PARAMS((void)); +static void readline_default_bindings (void); +static void reset_default_bindings (void); -static int _rl_subseq_result PARAMS((int, Keymap, int, int)); -static int _rl_subseq_getchar PARAMS((int)); +static int _rl_subseq_result (int, Keymap, int, int); +static int _rl_subseq_getchar (int); /* **************************************************************** */ /* */ @@ -165,6 +164,9 @@ int rl_end; /* Make this non-zero to return the current input_line. */ int rl_done; +/* If non-zero when readline_internal returns, it means we found EOF */ +int rl_eof_found = 0; + /* The last function executed by readline. */ rl_command_func_t *rl_last_func = (rl_command_func_t *)NULL; @@ -218,9 +220,6 @@ int _rl_eof_char = CTRL ('D'); /* Non-zero makes this the next keystroke to read. */ int rl_pending_input = 0; -/* If non-zero when readline_internal returns, it means we found EOF */ -int _rl_eof_found = 0; - /* Pointer to a useful terminal name. */ const char *rl_terminal_name = (const char *)NULL; @@ -241,6 +240,9 @@ char *_rl_comment_begin; /* Keymap holding the function currently being executed. */ Keymap rl_executing_keymap; +/* The function currently being executed. */ +rl_command_func_t *_rl_executing_func; + /* Keymap we're currently using to dispatch. */ Keymap _rl_dispatching_keymap; @@ -403,6 +405,16 @@ readline (const char *prompt) return (value); } +static void +run_startup_hooks (void) +{ + if (rl_startup_hook) + (*rl_startup_hook) (); + + if (_rl_internal_startup_hook) + (*_rl_internal_startup_hook) (); +} + #if defined (READLINE_CALLBACKS) # define STATIC_CALLBACK #else @@ -422,11 +434,7 @@ readline_internal_setup (void) if (_rl_enable_meta & RL_ISSTATE (RL_STATE_TERMPREPPED)) _rl_enable_meta_key (); - if (rl_startup_hook) - (*rl_startup_hook) (); - - if (_rl_internal_startup_hook) - (*_rl_internal_startup_hook) (); + run_startup_hooks (); rl_deactivate_mark (); @@ -474,12 +482,18 @@ readline_internal_teardown (int eof) RL_CHECK_SIGNALS (); + if (eof) + RL_SETSTATE (RL_STATE_EOF); /* XXX */ + /* Restore the original of this history line, iff the line that we are editing was originally in the history, AND the line has changed. */ entry = current_history (); + /* We don't want to do this if we executed functions that call + history_set_pos to set the history offset to the line containing the + non-incremental search string. */ if (entry && rl_undo_list) - { + { temp = savestring (the_line); rl_revert_line (1, 0); entry = replace_history_entry (where_history (), the_line, (histdata_t)NULL); @@ -511,6 +525,11 @@ readline_internal_teardown (int eof) void _rl_internal_char_cleanup (void) { + if (_rl_keep_mark_active) + _rl_keep_mark_active = 0; + else if (rl_mark_active_p ()) + rl_deactivate_mark (); + #if defined (VI_MODE) /* In vi mode, when you exit insert mode, the cursor moves back over the previous character. We explicitly check for that here. */ @@ -567,6 +586,15 @@ readline_internal_charloop (void) { (*rl_redisplay_function) (); _rl_want_redisplay = 0; + + /* If we longjmped because of a timeout, handle it here. */ + if (RL_ISSTATE (RL_STATE_TIMEOUT)) + { + RL_SETSTATE (RL_STATE_DONE); + rl_done = 1; + return 1; + } + /* If we get here, we're not being called from something dispatched from _rl_callback_read_char(), which sets up its own value of _rl_top_level (saving and restoring the old, of course), so @@ -596,6 +624,7 @@ readline_internal_charloop (void) RL_SETSTATE(RL_STATE_DONE); return (rl_done = 1); #else + RL_SETSTATE(RL_STATE_EOF); eof_found = 1; break; #endif @@ -636,6 +665,7 @@ readline_internal_charloop (void) RL_SETSTATE(RL_STATE_DONE); return (rl_done = 1); #else + RL_SETSTATE(RL_STATE_EOF); eof_found = 1; break; #endif @@ -652,6 +682,8 @@ readline_internal_charloop (void) rl_executing_keymap = _rl_command_to_execute->map; rl_executing_key = _rl_command_to_execute->key; + _rl_executing_func = _rl_command_to_execute->func; + rl_dispatching = 1; RL_SETSTATE(RL_STATE_DISPATCHING); r = (*(_rl_command_to_execute->func)) (_rl_command_to_execute->count, _rl_command_to_execute->key); @@ -668,11 +700,6 @@ readline_internal_charloop (void) if (rl_pending_input == 0 && lk == _rl_last_command_was_kill) _rl_last_command_was_kill = 0; - if (_rl_keep_mark_active) - _rl_keep_mark_active = 0; - else if (rl_mark_active_p ()) - rl_deactivate_mark (); - _rl_internal_char_cleanup (); #if defined (READLINE_CALLBACKS) @@ -703,8 +730,8 @@ static char * readline_internal (void) { readline_internal_setup (); - _rl_eof_found = readline_internal_charloop (); - return (readline_internal_teardown (_rl_eof_found)); + rl_eof_found = readline_internal_charloop (); + return (readline_internal_teardown (rl_eof_found)); } void @@ -878,6 +905,8 @@ _rl_dispatch_subseq (register int key, Keymap map, int got_subseq) rl_executing_keymap = map; rl_executing_key = key; + _rl_executing_func = func; + RESIZE_KEYSEQ_BUFFER(); rl_executing_keyseq[rl_key_sequence_length++] = key; rl_executing_keyseq[rl_key_sequence_length] = '\0'; @@ -1143,6 +1172,9 @@ _rl_subseq_result (int r, Keymap map, int key, int got_subseq) int rl_initialize (void) { + /* Initialize the timeout first to get the precise start time. */ + _rl_timeout_init (); + /* If we have never been called before, initialize the terminal and data structures. */ if (rl_initialized == 0) @@ -1154,14 +1186,14 @@ rl_initialize (void) RL_SETSTATE(RL_STATE_INITIALIZED); } else - (void)_rl_init_locale (); /* check current locale */ + _rl_reset_locale (); /* check current locale and set locale variables */ /* Initialize the current line information. */ _rl_init_line_state (); /* We aren't done yet. We haven't even gotten started yet! */ rl_done = 0; - RL_UNSETSTATE(RL_STATE_DONE); + RL_UNSETSTATE(RL_STATE_DONE|RL_STATE_TIMEOUT|RL_STATE_EOF); /* Tell the history routines what is going on. */ _rl_start_using_history (); @@ -1282,8 +1314,8 @@ readline_initialize_everything (void) /* If the completion parser's default word break characters haven't been set yet, then do so now. */ - if (rl_completer_word_break_characters == (char *)NULL) - rl_completer_word_break_characters = (char *)rl_basic_word_break_characters; + if (rl_completer_word_break_characters == 0) + rl_completer_word_break_characters = rl_basic_word_break_characters; #if defined (COLOR_SUPPORT) if (_rl_colored_stats || _rl_colored_completion_prefix) @@ -1532,3 +1564,12 @@ _rl_add_executing_keyseq (int key) RESIZE_KEYSEQ_BUFFER (); rl_executing_keyseq[rl_key_sequence_length++] = key; } + +/* `delete' the last character added to the executing key sequence. Use this + before calling rl_execute_next to avoid keys being added twice. */ +void +_rl_del_executing_keyseq (void) +{ + if (rl_key_sequence_length > 0) + rl_key_sequence_length--; +} diff --git a/readline.h b/readline.h index 78fa39d..cac269f 100644 --- a/readline.h +++ b/readline.h @@ -1,6 +1,6 @@ /* Readline.h -- the names of functions callable from within readline. */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2022 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -39,9 +39,9 @@ extern "C" { #endif /* Hex-encoded Readline version number. */ -#define RL_READLINE_VERSION 0x0801 /* Readline 8.0 */ +#define RL_READLINE_VERSION 0x0802 /* Readline 8.2 */ #define RL_VERSION_MAJOR 8 -#define RL_VERSION_MINOR 1 +#define RL_VERSION_MINOR 2 /* Readline data structures. */ @@ -79,211 +79,212 @@ extern FUNMAP **funmap; /* **************************************************************** */ /* Bindable commands for numeric arguments. */ -extern int rl_digit_argument PARAMS((int, int)); -extern int rl_universal_argument PARAMS((int, int)); +extern int rl_digit_argument (int, int); +extern int rl_universal_argument (int, int); /* Bindable commands for moving the cursor. */ -extern int rl_forward_byte PARAMS((int, int)); -extern int rl_forward_char PARAMS((int, int)); -extern int rl_forward PARAMS((int, int)); -extern int rl_backward_byte PARAMS((int, int)); -extern int rl_backward_char PARAMS((int, int)); -extern int rl_backward PARAMS((int, int)); -extern int rl_beg_of_line PARAMS((int, int)); -extern int rl_end_of_line PARAMS((int, int)); -extern int rl_forward_word PARAMS((int, int)); -extern int rl_backward_word PARAMS((int, int)); -extern int rl_refresh_line PARAMS((int, int)); -extern int rl_clear_screen PARAMS((int, int)); -extern int rl_clear_display PARAMS((int, int)); -extern int rl_skip_csi_sequence PARAMS((int, int)); -extern int rl_arrow_keys PARAMS((int, int)); - -extern int rl_previous_screen_line PARAMS((int, int)); -extern int rl_next_screen_line PARAMS((int, int)); +extern int rl_forward_byte (int, int); +extern int rl_forward_char (int, int); +extern int rl_forward (int, int); +extern int rl_backward_byte (int, int); +extern int rl_backward_char (int, int); +extern int rl_backward (int, int); +extern int rl_beg_of_line (int, int); +extern int rl_end_of_line (int, int); +extern int rl_forward_word (int, int); +extern int rl_backward_word (int, int); +extern int rl_refresh_line (int, int); +extern int rl_clear_screen (int, int); +extern int rl_clear_display (int, int); +extern int rl_skip_csi_sequence (int, int); +extern int rl_arrow_keys (int, int); + +extern int rl_previous_screen_line (int, int); +extern int rl_next_screen_line (int, int); /* Bindable commands for inserting and deleting text. */ -extern int rl_insert PARAMS((int, int)); -extern int rl_quoted_insert PARAMS((int, int)); -extern int rl_tab_insert PARAMS((int, int)); -extern int rl_newline PARAMS((int, int)); -extern int rl_do_lowercase_version PARAMS((int, int)); -extern int rl_rubout PARAMS((int, int)); -extern int rl_delete PARAMS((int, int)); -extern int rl_rubout_or_delete PARAMS((int, int)); -extern int rl_delete_horizontal_space PARAMS((int, int)); -extern int rl_delete_or_show_completions PARAMS((int, int)); -extern int rl_insert_comment PARAMS((int, int)); +extern int rl_insert (int, int); +extern int rl_quoted_insert (int, int); +extern int rl_tab_insert (int, int); +extern int rl_newline (int, int); +extern int rl_do_lowercase_version (int, int); +extern int rl_rubout (int, int); +extern int rl_delete (int, int); +extern int rl_rubout_or_delete (int, int); +extern int rl_delete_horizontal_space (int, int); +extern int rl_delete_or_show_completions (int, int); +extern int rl_insert_comment (int, int); /* Bindable commands for changing case. */ -extern int rl_upcase_word PARAMS((int, int)); -extern int rl_downcase_word PARAMS((int, int)); -extern int rl_capitalize_word PARAMS((int, int)); +extern int rl_upcase_word (int, int); +extern int rl_downcase_word (int, int); +extern int rl_capitalize_word (int, int); /* Bindable commands for transposing characters and words. */ -extern int rl_transpose_words PARAMS((int, int)); -extern int rl_transpose_chars PARAMS((int, int)); +extern int rl_transpose_words (int, int); +extern int rl_transpose_chars (int, int); /* Bindable commands for searching within a line. */ -extern int rl_char_search PARAMS((int, int)); -extern int rl_backward_char_search PARAMS((int, int)); +extern int rl_char_search (int, int); +extern int rl_backward_char_search (int, int); /* Bindable commands for readline's interface to the command history. */ -extern int rl_beginning_of_history PARAMS((int, int)); -extern int rl_end_of_history PARAMS((int, int)); -extern int rl_get_next_history PARAMS((int, int)); -extern int rl_get_previous_history PARAMS((int, int)); -extern int rl_operate_and_get_next PARAMS((int, int)); +extern int rl_beginning_of_history (int, int); +extern int rl_end_of_history (int, int); +extern int rl_get_next_history (int, int); +extern int rl_get_previous_history (int, int); +extern int rl_operate_and_get_next (int, int); +extern int rl_fetch_history (int, int); /* Bindable commands for managing the mark and region. */ -extern int rl_set_mark PARAMS((int, int)); -extern int rl_exchange_point_and_mark PARAMS((int, int)); +extern int rl_set_mark (int, int); +extern int rl_exchange_point_and_mark (int, int); /* Bindable commands to set the editing mode (emacs or vi). */ -extern int rl_vi_editing_mode PARAMS((int, int)); -extern int rl_emacs_editing_mode PARAMS((int, int)); +extern int rl_vi_editing_mode (int, int); +extern int rl_emacs_editing_mode (int, int); /* Bindable commands to change the insert mode (insert or overwrite) */ -extern int rl_overwrite_mode PARAMS((int, int)); +extern int rl_overwrite_mode (int, int); /* Bindable commands for managing key bindings. */ -extern int rl_re_read_init_file PARAMS((int, int)); -extern int rl_dump_functions PARAMS((int, int)); -extern int rl_dump_macros PARAMS((int, int)); -extern int rl_dump_variables PARAMS((int, int)); +extern int rl_re_read_init_file (int, int); +extern int rl_dump_functions (int, int); +extern int rl_dump_macros (int, int); +extern int rl_dump_variables (int, int); /* Bindable commands for word completion. */ -extern int rl_complete PARAMS((int, int)); -extern int rl_possible_completions PARAMS((int, int)); -extern int rl_insert_completions PARAMS((int, int)); -extern int rl_old_menu_complete PARAMS((int, int)); -extern int rl_menu_complete PARAMS((int, int)); -extern int rl_backward_menu_complete PARAMS((int, int)); +extern int rl_complete (int, int); +extern int rl_possible_completions (int, int); +extern int rl_insert_completions (int, int); +extern int rl_old_menu_complete (int, int); +extern int rl_menu_complete (int, int); +extern int rl_backward_menu_complete (int, int); /* Bindable commands for killing and yanking text, and managing the kill ring. */ -extern int rl_kill_word PARAMS((int, int)); -extern int rl_backward_kill_word PARAMS((int, int)); -extern int rl_kill_line PARAMS((int, int)); -extern int rl_backward_kill_line PARAMS((int, int)); -extern int rl_kill_full_line PARAMS((int, int)); -extern int rl_unix_word_rubout PARAMS((int, int)); -extern int rl_unix_filename_rubout PARAMS((int, int)); -extern int rl_unix_line_discard PARAMS((int, int)); -extern int rl_copy_region_to_kill PARAMS((int, int)); -extern int rl_kill_region PARAMS((int, int)); -extern int rl_copy_forward_word PARAMS((int, int)); -extern int rl_copy_backward_word PARAMS((int, int)); -extern int rl_yank PARAMS((int, int)); -extern int rl_yank_pop PARAMS((int, int)); -extern int rl_yank_nth_arg PARAMS((int, int)); -extern int rl_yank_last_arg PARAMS((int, int)); -extern int rl_bracketed_paste_begin PARAMS((int, int)); +extern int rl_kill_word (int, int); +extern int rl_backward_kill_word (int, int); +extern int rl_kill_line (int, int); +extern int rl_backward_kill_line (int, int); +extern int rl_kill_full_line (int, int); +extern int rl_unix_word_rubout (int, int); +extern int rl_unix_filename_rubout (int, int); +extern int rl_unix_line_discard (int, int); +extern int rl_copy_region_to_kill (int, int); +extern int rl_kill_region (int, int); +extern int rl_copy_forward_word (int, int); +extern int rl_copy_backward_word (int, int); +extern int rl_yank (int, int); +extern int rl_yank_pop (int, int); +extern int rl_yank_nth_arg (int, int); +extern int rl_yank_last_arg (int, int); +extern int rl_bracketed_paste_begin (int, int); /* Not available unless _WIN32 is defined. */ #if defined (_WIN32) -extern int rl_paste_from_clipboard PARAMS((int, int)); +extern int rl_paste_from_clipboard (int, int); #endif /* Bindable commands for incremental searching. */ -extern int rl_reverse_search_history PARAMS((int, int)); -extern int rl_forward_search_history PARAMS((int, int)); +extern int rl_reverse_search_history (int, int); +extern int rl_forward_search_history (int, int); /* Bindable keyboard macro commands. */ -extern int rl_start_kbd_macro PARAMS((int, int)); -extern int rl_end_kbd_macro PARAMS((int, int)); -extern int rl_call_last_kbd_macro PARAMS((int, int)); -extern int rl_print_last_kbd_macro PARAMS((int, int)); +extern int rl_start_kbd_macro (int, int); +extern int rl_end_kbd_macro (int, int); +extern int rl_call_last_kbd_macro (int, int); +extern int rl_print_last_kbd_macro (int, int); /* Bindable undo commands. */ -extern int rl_revert_line PARAMS((int, int)); -extern int rl_undo_command PARAMS((int, int)); +extern int rl_revert_line (int, int); +extern int rl_undo_command (int, int); /* Bindable tilde expansion commands. */ -extern int rl_tilde_expand PARAMS((int, int)); +extern int rl_tilde_expand (int, int); /* Bindable terminal control commands. */ -extern int rl_restart_output PARAMS((int, int)); -extern int rl_stop_output PARAMS((int, int)); +extern int rl_restart_output (int, int); +extern int rl_stop_output (int, int); /* Miscellaneous bindable commands. */ -extern int rl_abort PARAMS((int, int)); -extern int rl_tty_status PARAMS((int, int)); +extern int rl_abort (int, int); +extern int rl_tty_status (int, int); /* Bindable commands for incremental and non-incremental history searching. */ -extern int rl_history_search_forward PARAMS((int, int)); -extern int rl_history_search_backward PARAMS((int, int)); -extern int rl_history_substr_search_forward PARAMS((int, int)); -extern int rl_history_substr_search_backward PARAMS((int, int)); -extern int rl_noninc_forward_search PARAMS((int, int)); -extern int rl_noninc_reverse_search PARAMS((int, int)); -extern int rl_noninc_forward_search_again PARAMS((int, int)); -extern int rl_noninc_reverse_search_again PARAMS((int, int)); +extern int rl_history_search_forward (int, int); +extern int rl_history_search_backward (int, int); +extern int rl_history_substr_search_forward (int, int); +extern int rl_history_substr_search_backward (int, int); +extern int rl_noninc_forward_search (int, int); +extern int rl_noninc_reverse_search (int, int); +extern int rl_noninc_forward_search_again (int, int); +extern int rl_noninc_reverse_search_again (int, int); /* Bindable command used when inserting a matching close character. */ -extern int rl_insert_close PARAMS((int, int)); +extern int rl_insert_close (int, int); /* Not available unless READLINE_CALLBACKS is defined. */ -extern void rl_callback_handler_install PARAMS((const char *, rl_vcpfunc_t *)); -extern void rl_callback_read_char PARAMS((void)); -extern void rl_callback_handler_remove PARAMS((void)); -extern void rl_callback_sigcleanup PARAMS((void)); +extern void rl_callback_handler_install (const char *, rl_vcpfunc_t *); +extern void rl_callback_read_char (void); +extern void rl_callback_handler_remove (void); +extern void rl_callback_sigcleanup (void); /* Things for vi mode. Not available unless readline is compiled -DVI_MODE. */ /* VI-mode bindable commands. */ -extern int rl_vi_redo PARAMS((int, int)); -extern int rl_vi_undo PARAMS((int, int)); -extern int rl_vi_yank_arg PARAMS((int, int)); -extern int rl_vi_fetch_history PARAMS((int, int)); -extern int rl_vi_search_again PARAMS((int, int)); -extern int rl_vi_search PARAMS((int, int)); -extern int rl_vi_complete PARAMS((int, int)); -extern int rl_vi_tilde_expand PARAMS((int, int)); -extern int rl_vi_prev_word PARAMS((int, int)); -extern int rl_vi_next_word PARAMS((int, int)); -extern int rl_vi_end_word PARAMS((int, int)); -extern int rl_vi_insert_beg PARAMS((int, int)); -extern int rl_vi_append_mode PARAMS((int, int)); -extern int rl_vi_append_eol PARAMS((int, int)); -extern int rl_vi_eof_maybe PARAMS((int, int)); -extern int rl_vi_insertion_mode PARAMS((int, int)); -extern int rl_vi_insert_mode PARAMS((int, int)); -extern int rl_vi_movement_mode PARAMS((int, int)); -extern int rl_vi_arg_digit PARAMS((int, int)); -extern int rl_vi_change_case PARAMS((int, int)); -extern int rl_vi_put PARAMS((int, int)); -extern int rl_vi_column PARAMS((int, int)); -extern int rl_vi_delete_to PARAMS((int, int)); -extern int rl_vi_change_to PARAMS((int, int)); -extern int rl_vi_yank_to PARAMS((int, int)); -extern int rl_vi_yank_pop PARAMS((int, int)); -extern int rl_vi_rubout PARAMS((int, int)); -extern int rl_vi_delete PARAMS((int, int)); -extern int rl_vi_back_to_indent PARAMS((int, int)); -extern int rl_vi_unix_word_rubout PARAMS((int, int)); -extern int rl_vi_first_print PARAMS((int, int)); -extern int rl_vi_char_search PARAMS((int, int)); -extern int rl_vi_match PARAMS((int, int)); -extern int rl_vi_change_char PARAMS((int, int)); -extern int rl_vi_subst PARAMS((int, int)); -extern int rl_vi_overstrike PARAMS((int, int)); -extern int rl_vi_overstrike_delete PARAMS((int, int)); -extern int rl_vi_replace PARAMS((int, int)); -extern int rl_vi_set_mark PARAMS((int, int)); -extern int rl_vi_goto_mark PARAMS((int, int)); +extern int rl_vi_redo (int, int); +extern int rl_vi_undo (int, int); +extern int rl_vi_yank_arg (int, int); +extern int rl_vi_fetch_history (int, int); +extern int rl_vi_search_again (int, int); +extern int rl_vi_search (int, int); +extern int rl_vi_complete (int, int); +extern int rl_vi_tilde_expand (int, int); +extern int rl_vi_prev_word (int, int); +extern int rl_vi_next_word (int, int); +extern int rl_vi_end_word (int, int); +extern int rl_vi_insert_beg (int, int); +extern int rl_vi_append_mode (int, int); +extern int rl_vi_append_eol (int, int); +extern int rl_vi_eof_maybe (int, int); +extern int rl_vi_insertion_mode (int, int); +extern int rl_vi_insert_mode (int, int); +extern int rl_vi_movement_mode (int, int); +extern int rl_vi_arg_digit (int, int); +extern int rl_vi_change_case (int, int); +extern int rl_vi_put (int, int); +extern int rl_vi_column (int, int); +extern int rl_vi_delete_to (int, int); +extern int rl_vi_change_to (int, int); +extern int rl_vi_yank_to (int, int); +extern int rl_vi_yank_pop (int, int); +extern int rl_vi_rubout (int, int); +extern int rl_vi_delete (int, int); +extern int rl_vi_back_to_indent (int, int); +extern int rl_vi_unix_word_rubout (int, int); +extern int rl_vi_first_print (int, int); +extern int rl_vi_char_search (int, int); +extern int rl_vi_match (int, int); +extern int rl_vi_change_char (int, int); +extern int rl_vi_subst (int, int); +extern int rl_vi_overstrike (int, int); +extern int rl_vi_overstrike_delete (int, int); +extern int rl_vi_replace (int, int); +extern int rl_vi_set_mark (int, int); +extern int rl_vi_goto_mark (int, int); /* VI-mode utility functions. */ -extern int rl_vi_check PARAMS((void)); -extern int rl_vi_domove PARAMS((int, int *)); -extern int rl_vi_bracktype PARAMS((int)); +extern int rl_vi_check (void); +extern int rl_vi_domove (int, int *); +extern int rl_vi_bracktype (int); -extern void rl_vi_start_inserting PARAMS((int, int, int)); +extern void rl_vi_start_inserting (int, int, int); /* VI-mode pseudo-bindable commands, used as utility functions. */ -extern int rl_vi_fWord PARAMS((int, int)); -extern int rl_vi_bWord PARAMS((int, int)); -extern int rl_vi_eWord PARAMS((int, int)); -extern int rl_vi_fword PARAMS((int, int)); -extern int rl_vi_bword PARAMS((int, int)); -extern int rl_vi_eword PARAMS((int, int)); +extern int rl_vi_fWord (int, int); +extern int rl_vi_bWord (int, int); +extern int rl_vi_eWord (int, int); +extern int rl_vi_fword (int, int); +extern int rl_vi_bword (int, int); +extern int rl_vi_eword (int, int); /* **************************************************************** */ /* */ @@ -293,114 +294,115 @@ extern int rl_vi_eword PARAMS((int, int)); /* Readline functions. */ /* Read a line of input. Prompt with PROMPT. A NULL PROMPT means none. */ -extern char *readline PARAMS((const char *)); +extern char *readline (const char *); -extern int rl_set_prompt PARAMS((const char *)); -extern int rl_expand_prompt PARAMS((char *)); +extern int rl_set_prompt (const char *); +extern int rl_expand_prompt (char *); -extern int rl_initialize PARAMS((void)); +extern int rl_initialize (void); /* Undocumented; unused by readline */ -extern int rl_discard_argument PARAMS((void)); +extern int rl_discard_argument (void); /* Utility functions to bind keys to readline commands. */ -extern int rl_add_defun PARAMS((const char *, rl_command_func_t *, int)); -extern int rl_bind_key PARAMS((int, rl_command_func_t *)); -extern int rl_bind_key_in_map PARAMS((int, rl_command_func_t *, Keymap)); -extern int rl_unbind_key PARAMS((int)); -extern int rl_unbind_key_in_map PARAMS((int, Keymap)); -extern int rl_bind_key_if_unbound PARAMS((int, rl_command_func_t *)); -extern int rl_bind_key_if_unbound_in_map PARAMS((int, rl_command_func_t *, Keymap)); -extern int rl_unbind_function_in_map PARAMS((rl_command_func_t *, Keymap)); -extern int rl_unbind_command_in_map PARAMS((const char *, Keymap)); -extern int rl_bind_keyseq PARAMS((const char *, rl_command_func_t *)); -extern int rl_bind_keyseq_in_map PARAMS((const char *, rl_command_func_t *, Keymap)); -extern int rl_bind_keyseq_if_unbound PARAMS((const char *, rl_command_func_t *)); -extern int rl_bind_keyseq_if_unbound_in_map PARAMS((const char *, rl_command_func_t *, Keymap)); -extern int rl_generic_bind PARAMS((int, const char *, char *, Keymap)); - -extern char *rl_variable_value PARAMS((const char *)); -extern int rl_variable_bind PARAMS((const char *, const char *)); +extern int rl_add_defun (const char *, rl_command_func_t *, int); +extern int rl_bind_key (int, rl_command_func_t *); +extern int rl_bind_key_in_map (int, rl_command_func_t *, Keymap); +extern int rl_unbind_key (int); +extern int rl_unbind_key_in_map (int, Keymap); +extern int rl_bind_key_if_unbound (int, rl_command_func_t *); +extern int rl_bind_key_if_unbound_in_map (int, rl_command_func_t *, Keymap); +extern int rl_unbind_function_in_map (rl_command_func_t *, Keymap); +extern int rl_unbind_command_in_map (const char *, Keymap); +extern int rl_bind_keyseq (const char *, rl_command_func_t *); +extern int rl_bind_keyseq_in_map (const char *, rl_command_func_t *, Keymap); +extern int rl_bind_keyseq_if_unbound (const char *, rl_command_func_t *); +extern int rl_bind_keyseq_if_unbound_in_map (const char *, rl_command_func_t *, Keymap); +extern int rl_generic_bind (int, const char *, char *, Keymap); + +extern char *rl_variable_value (const char *); +extern int rl_variable_bind (const char *, const char *); /* Backwards compatibility, use rl_bind_keyseq_in_map instead. */ -extern int rl_set_key PARAMS((const char *, rl_command_func_t *, Keymap)); +extern int rl_set_key (const char *, rl_command_func_t *, Keymap); /* Backwards compatibility, use rl_generic_bind instead. */ -extern int rl_macro_bind PARAMS((const char *, const char *, Keymap)); +extern int rl_macro_bind (const char *, const char *, Keymap); /* Undocumented in the texinfo manual; not really useful to programs. */ -extern int rl_translate_keyseq PARAMS((const char *, char *, int *)); -extern char *rl_untranslate_keyseq PARAMS((int)); +extern int rl_translate_keyseq (const char *, char *, int *); +extern char *rl_untranslate_keyseq (int); -extern rl_command_func_t *rl_named_function PARAMS((const char *)); -extern rl_command_func_t *rl_function_of_keyseq PARAMS((const char *, Keymap, int *)); -extern rl_command_func_t *rl_function_of_keyseq_len PARAMS((const char *, size_t, Keymap, int *)); +extern rl_command_func_t *rl_named_function (const char *); +extern rl_command_func_t *rl_function_of_keyseq (const char *, Keymap, int *); +extern rl_command_func_t *rl_function_of_keyseq_len (const char *, size_t, Keymap, int *); +extern int rl_trim_arg_from_keyseq (const char *, size_t, Keymap); -extern void rl_list_funmap_names PARAMS((void)); -extern char **rl_invoking_keyseqs_in_map PARAMS((rl_command_func_t *, Keymap)); -extern char **rl_invoking_keyseqs PARAMS((rl_command_func_t *)); +extern void rl_list_funmap_names (void); +extern char **rl_invoking_keyseqs_in_map (rl_command_func_t *, Keymap); +extern char **rl_invoking_keyseqs (rl_command_func_t *); -extern void rl_function_dumper PARAMS((int)); -extern void rl_macro_dumper PARAMS((int)); -extern void rl_variable_dumper PARAMS((int)); +extern void rl_function_dumper (int); +extern void rl_macro_dumper (int); +extern void rl_variable_dumper (int); -extern int rl_read_init_file PARAMS((const char *)); -extern int rl_parse_and_bind PARAMS((char *)); +extern int rl_read_init_file (const char *); +extern int rl_parse_and_bind (char *); /* Functions for manipulating keymaps. */ -extern Keymap rl_make_bare_keymap PARAMS((void)); -extern int rl_empty_keymap PARAMS((Keymap)); -extern Keymap rl_copy_keymap PARAMS((Keymap)); -extern Keymap rl_make_keymap PARAMS((void)); -extern void rl_discard_keymap PARAMS((Keymap)); -extern void rl_free_keymap PARAMS((Keymap)); +extern Keymap rl_make_bare_keymap (void); +extern int rl_empty_keymap (Keymap); +extern Keymap rl_copy_keymap (Keymap); +extern Keymap rl_make_keymap (void); +extern void rl_discard_keymap (Keymap); +extern void rl_free_keymap (Keymap); -extern Keymap rl_get_keymap_by_name PARAMS((const char *)); -extern char *rl_get_keymap_name PARAMS((Keymap)); -extern void rl_set_keymap PARAMS((Keymap)); -extern Keymap rl_get_keymap PARAMS((void)); +extern Keymap rl_get_keymap_by_name (const char *); +extern char *rl_get_keymap_name (Keymap); +extern void rl_set_keymap (Keymap); +extern Keymap rl_get_keymap (void); -extern int rl_set_keymap_name PARAMS((const char *, Keymap)); +extern int rl_set_keymap_name (const char *, Keymap); /* Undocumented; used internally only. */ -extern void rl_set_keymap_from_edit_mode PARAMS((void)); -extern char *rl_get_keymap_name_from_edit_mode PARAMS((void)); +extern void rl_set_keymap_from_edit_mode (void); +extern char *rl_get_keymap_name_from_edit_mode (void); /* Functions for manipulating the funmap, which maps command names to functions. */ -extern int rl_add_funmap_entry PARAMS((const char *, rl_command_func_t *)); -extern const char **rl_funmap_names PARAMS((void)); +extern int rl_add_funmap_entry (const char *, rl_command_func_t *); +extern const char **rl_funmap_names (void); /* Undocumented, only used internally -- there is only one funmap, and this function may be called only once. */ -extern void rl_initialize_funmap PARAMS((void)); +extern void rl_initialize_funmap (void); /* Utility functions for managing keyboard macros. */ -extern void rl_push_macro_input PARAMS((char *)); +extern void rl_push_macro_input (char *); /* Functions for undoing, from undo.c */ -extern void rl_add_undo PARAMS((enum undo_code, int, int, char *)); -extern void rl_free_undo_list PARAMS((void)); -extern int rl_do_undo PARAMS((void)); -extern int rl_begin_undo_group PARAMS((void)); -extern int rl_end_undo_group PARAMS((void)); -extern int rl_modifying PARAMS((int, int)); +extern void rl_add_undo (enum undo_code, int, int, char *); +extern void rl_free_undo_list (void); +extern int rl_do_undo (void); +extern int rl_begin_undo_group (void); +extern int rl_end_undo_group (void); +extern int rl_modifying (int, int); /* Functions for redisplay. */ -extern void rl_redisplay PARAMS((void)); -extern int rl_on_new_line PARAMS((void)); -extern int rl_on_new_line_with_prompt PARAMS((void)); -extern int rl_forced_update_display PARAMS((void)); -extern int rl_clear_visible_line PARAMS((void)); -extern int rl_clear_message PARAMS((void)); -extern int rl_reset_line_state PARAMS((void)); -extern int rl_crlf PARAMS((void)); +extern void rl_redisplay (void); +extern int rl_on_new_line (void); +extern int rl_on_new_line_with_prompt (void); +extern int rl_forced_update_display (void); +extern int rl_clear_visible_line (void); +extern int rl_clear_message (void); +extern int rl_reset_line_state (void); +extern int rl_crlf (void); /* Functions to manage the mark and region, especially the notion of an active mark and an active region. */ -extern void rl_keep_mark_active PARAMS((void)); +extern void rl_keep_mark_active (void); -extern void rl_activate_mark PARAMS((void)); -extern void rl_deactivate_mark PARAMS((void)); -extern int rl_mark_active_p PARAMS((void)); +extern void rl_activate_mark (void); +extern void rl_deactivate_mark (void); +extern int rl_mark_active_p (void); #if defined (USE_VARARGS) && defined (PREFER_STDARG) extern int rl_message (const char *, ...) __attribute__((__format__ (printf, 1, 2))); @@ -408,99 +410,106 @@ extern int rl_message (const char *, ...) __attribute__((__format__ (printf, 1, extern int rl_message (); #endif -extern int rl_show_char PARAMS((int)); +extern int rl_show_char (int); /* Undocumented in texinfo manual. */ -extern int rl_character_len PARAMS((int, int)); -extern void rl_redraw_prompt_last_line PARAMS((void)); +extern int rl_character_len (int, int); +extern void rl_redraw_prompt_last_line (void); /* Save and restore internal prompt redisplay information. */ -extern void rl_save_prompt PARAMS((void)); -extern void rl_restore_prompt PARAMS((void)); +extern void rl_save_prompt (void); +extern void rl_restore_prompt (void); /* Modifying text. */ -extern void rl_replace_line PARAMS((const char *, int)); -extern int rl_insert_text PARAMS((const char *)); -extern int rl_delete_text PARAMS((int, int)); -extern int rl_kill_text PARAMS((int, int)); -extern char *rl_copy_text PARAMS((int, int)); +extern void rl_replace_line (const char *, int); +extern int rl_insert_text (const char *); +extern int rl_delete_text (int, int); +extern int rl_kill_text (int, int); +extern char *rl_copy_text (int, int); /* Terminal and tty mode management. */ -extern void rl_prep_terminal PARAMS((int)); -extern void rl_deprep_terminal PARAMS((void)); -extern void rl_tty_set_default_bindings PARAMS((Keymap)); -extern void rl_tty_unset_default_bindings PARAMS((Keymap)); +extern void rl_prep_terminal (int); +extern void rl_deprep_terminal (void); +extern void rl_tty_set_default_bindings (Keymap); +extern void rl_tty_unset_default_bindings (Keymap); -extern int rl_tty_set_echoing PARAMS((int)); -extern int rl_reset_terminal PARAMS((const char *)); -extern void rl_resize_terminal PARAMS((void)); -extern void rl_set_screen_size PARAMS((int, int)); -extern void rl_get_screen_size PARAMS((int *, int *)); -extern void rl_reset_screen_size PARAMS((void)); +extern int rl_tty_set_echoing (int); +extern int rl_reset_terminal (const char *); +extern void rl_resize_terminal (void); +extern void rl_set_screen_size (int, int); +extern void rl_get_screen_size (int *, int *); +extern void rl_reset_screen_size (void); -extern char *rl_get_termcap PARAMS((const char *)); +extern char *rl_get_termcap (const char *); /* Functions for character input. */ -extern int rl_stuff_char PARAMS((int)); -extern int rl_execute_next PARAMS((int)); -extern int rl_clear_pending_input PARAMS((void)); -extern int rl_read_key PARAMS((void)); -extern int rl_getc PARAMS((FILE *)); -extern int rl_set_keyboard_input_timeout PARAMS((int)); +extern int rl_stuff_char (int); +extern int rl_execute_next (int); +extern int rl_clear_pending_input (void); +extern int rl_read_key (void); +extern int rl_getc (FILE *); +extern int rl_set_keyboard_input_timeout (int); + +/* Functions to set and reset timeouts. */ +extern int rl_set_timeout (unsigned int, unsigned int); +extern int rl_timeout_remaining (unsigned int *, unsigned int *); + +#undef rl_clear_timeout +#define rl_clear_timeout() rl_set_timeout (0, 0) /* `Public' utility functions . */ -extern void rl_extend_line_buffer PARAMS((int)); -extern int rl_ding PARAMS((void)); -extern int rl_alphabetic PARAMS((int)); -extern void rl_free PARAMS((void *)); +extern void rl_extend_line_buffer (int); +extern int rl_ding (void); +extern int rl_alphabetic (int); +extern void rl_free (void *); /* Readline signal handling, from signals.c */ -extern int rl_set_signals PARAMS((void)); -extern int rl_clear_signals PARAMS((void)); -extern void rl_cleanup_after_signal PARAMS((void)); -extern void rl_reset_after_signal PARAMS((void)); -extern void rl_free_line_state PARAMS((void)); +extern int rl_set_signals (void); +extern int rl_clear_signals (void); +extern void rl_cleanup_after_signal (void); +extern void rl_reset_after_signal (void); +extern void rl_free_line_state (void); -extern int rl_pending_signal PARAMS((void)); -extern void rl_check_signals PARAMS((void)); +extern int rl_pending_signal (void); +extern void rl_check_signals (void); -extern void rl_echo_signal_char PARAMS((int)); +extern void rl_echo_signal_char (int); -extern int rl_set_paren_blink_timeout PARAMS((int)); +extern int rl_set_paren_blink_timeout (int); /* History management functions. */ -extern void rl_clear_history PARAMS((void)); +extern void rl_clear_history (void); /* Undocumented. */ -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_maybe_save_line (void); +extern int rl_maybe_unsave_line (void); +extern int rl_maybe_replace_line (void); /* Completion functions. */ -extern int rl_complete_internal PARAMS((int)); -extern void rl_display_match_list PARAMS((char **, int, int)); +extern int rl_complete_internal (int); +extern void rl_display_match_list (char **, int, 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)); +extern char **rl_completion_matches (const char *, rl_compentry_func_t *); +extern char *rl_username_completion_function (const char *, int); +extern char *rl_filename_completion_function (const char *, int); -extern int rl_completion_mode PARAMS((rl_command_func_t *)); +extern int rl_completion_mode (rl_command_func_t *); #if 0 /* Backwards compatibility (compat.c). These will go away sometime. */ -extern void free_undo_list PARAMS((void)); -extern int maybe_save_line PARAMS((void)); -extern int maybe_unsave_line PARAMS((void)); -extern int maybe_replace_line PARAMS((void)); - -extern int ding PARAMS((void)); -extern int alphabetic PARAMS((int)); -extern int crlf PARAMS((void)); - -extern char **completion_matches PARAMS((char *, rl_compentry_func_t *)); -extern char *username_completion_function PARAMS((const char *, int)); -extern char *filename_completion_function PARAMS((const char *, int)); +extern void free_undo_list (void); +extern int maybe_save_line (void); +extern int maybe_unsave_line (void); +extern int maybe_replace_line (void); + +extern int ding (void); +extern int alphabetic (int); +extern int crlf (void); + +extern char **completion_matches (char *, rl_compentry_func_t *); +extern char *username_completion_function (const char *, int); +extern char *filename_completion_function (const char *, int); #endif /* **************************************************************** */ @@ -553,6 +562,10 @@ extern int rl_mark; line and should return it. */ extern int rl_done; +/* Flag to indicate that readline has read an EOF character or read has + returned 0 or error, and is returning a NULL line as a result. */ +extern int rl_eof_found; + /* If set to a character value, that will be the next keystroke read. */ extern int rl_pending_input; @@ -599,6 +612,8 @@ extern rl_hook_func_t *rl_event_hook; /* The address of a function to call if a read is interrupted by a signal. */ extern rl_hook_func_t *rl_signal_event_hook; +extern rl_hook_func_t *rl_timeout_event_hook; + /* The address of a function to call if Readline needs to know whether or not there is data available from the current input source. */ extern rl_hook_func_t *rl_input_available_hook; @@ -689,7 +704,7 @@ extern const char *rl_basic_word_break_characters; /* The list of characters that signal a break between words for rl_complete_internal. The default list is the contents of rl_basic_word_break_characters. */ -extern /*const*/ char *rl_completer_word_break_characters; +extern const char *rl_completer_word_break_characters; /* Hook function to allow an application to set the completion word break characters before readline breaks up the line. Allows @@ -906,6 +921,8 @@ extern int rl_persistent_signal_handlers; #define RL_STATE_REDISPLAYING 0x1000000 /* updating terminal display */ #define RL_STATE_DONE 0x2000000 /* done; accepted line */ +#define RL_STATE_TIMEOUT 0x4000000 /* done; timed out */ +#define RL_STATE_EOF 0x8000000 /* done; got eof on read */ #define RL_SETSTATE(x) (rl_readline_state |= (x)) #define RL_UNSETSTATE(x) (rl_readline_state &= ~(x)) @@ -949,7 +966,7 @@ struct readline_state { rl_compentry_func_t *menuentryfunc; rl_compignore_func_t *ignorefunc; rl_completion_func_t *attemptfunc; - char *wordbreakchars; + const char *wordbreakchars; /* options state */ @@ -959,8 +976,8 @@ struct readline_state { char reserved[64]; }; -extern int rl_save_state PARAMS((struct readline_state *)); -extern int rl_restore_state PARAMS((struct readline_state *)); +extern int rl_save_state (struct readline_state *); +extern int rl_restore_state (struct readline_state *); #ifdef __cplusplus } diff --git a/rldefs.h b/rldefs.h index dab1beb..98577a6 100644 --- a/rldefs.h +++ b/rldefs.h @@ -2,7 +2,7 @@ for readline. This should be included after any files that define system-specific constants like _POSIX_VERSION or USG. */ -/* Copyright (C) 1987-2011 Free Software Foundation, Inc. +/* Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -79,14 +79,14 @@ extern char *strchr (), *strrchr (); #define _rl_stricmp strcasecmp #define _rl_strnicmp strncasecmp #else -extern int _rl_stricmp PARAMS((const char *, const char *)); -extern int _rl_strnicmp PARAMS((const char *, const char *, int)); +extern int _rl_stricmp (const char *, const char *); +extern int _rl_strnicmp (const char *, const char *, int); #endif #if defined (HAVE_STRPBRK) && !defined (HAVE_MULTIBYTE) # define _rl_strpbrk(a,b) strpbrk((a),(b)) #else -extern char *_rl_strpbrk PARAMS((const char *, const char *)); +extern char *_rl_strpbrk (const char *, const char *); #endif #if !defined (emacs_mode) diff --git a/rlmbutil.h b/rlmbutil.h index 4d3e907..d906057 100644 --- a/rlmbutil.h +++ b/rlmbutil.h @@ -1,6 +1,6 @@ /* rlmbutil.h -- utility functions for multibyte characters. */ -/* Copyright (C) 2001-2015 Free Software Foundation, Inc. +/* Copyright (C) 2001-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -81,6 +81,19 @@ /* end of multibyte capability checks for I18N */ /************************************************/ +/* + * wchar_t doesn't work for 32-bit values on Windows using MSVC + */ +#ifdef WCHAR_T_BROKEN +# define WCHAR_T char32_t +# define MBRTOWC mbrtoc32 +# define WCRTOMB c32rtomb +#else /* normal systems */ +# define WCHAR_T wchar_t +# define MBRTOWC mbrtowc +# define WCRTOMB wcrtomb +#endif + /* * Flags for _rl_find_prev_mbchar and _rl_find_next_mbchar: * @@ -91,22 +104,22 @@ #define MB_FIND_ANY 0x00 #define MB_FIND_NONZERO 0x01 -extern int _rl_find_prev_mbchar PARAMS((char *, int, int)); -extern int _rl_find_next_mbchar PARAMS((char *, int, int, int)); +extern int _rl_find_prev_mbchar (char *, int, int); +extern int _rl_find_next_mbchar (char *, int, int, int); #ifdef HANDLE_MULTIBYTE -extern int _rl_compare_chars PARAMS((char *, int, mbstate_t *, char *, int, mbstate_t *)); -extern int _rl_get_char_len PARAMS((char *, mbstate_t *)); -extern int _rl_adjust_point PARAMS((char *, int, mbstate_t *)); +extern int _rl_compare_chars (char *, int, mbstate_t *, char *, int, mbstate_t *); +extern int _rl_get_char_len (char *, mbstate_t *); +extern int _rl_adjust_point (char *, int, mbstate_t *); -extern int _rl_read_mbchar PARAMS((char *, int)); -extern int _rl_read_mbstring PARAMS((int, char *, int)); +extern int _rl_read_mbchar (char *, int); +extern int _rl_read_mbstring (int, char *, int); -extern int _rl_is_mbchar_matched PARAMS((char *, int, int, char *, int)); +extern int _rl_is_mbchar_matched (char *, int, int, char *, int); -extern wchar_t _rl_char_value PARAMS((char *, int)); -extern int _rl_walphabetic PARAMS((wchar_t)); +extern WCHAR_T _rl_char_value (char *, int); +extern int _rl_walphabetic (WCHAR_T); #define _rl_to_wupper(wc) (iswlower (wc) ? towupper (wc) : (wc)) #define _rl_to_wlower(wc) (iswupper (wc) ? towlower (wc) : (wc)) @@ -126,8 +139,7 @@ extern int _rl_walphabetic PARAMS((wchar_t)); /* Try and shortcut the printable ascii characters to cut down the number of calls to a libc wcwidth() */ static inline int -_rl_wcwidth (wc) - wchar_t wc; +_rl_wcwidth (WCHAR_T wc) { switch (wc) { diff --git a/rlprivate.h b/rlprivate.h index 23ab2d8..d87d07a 100644 --- a/rlprivate.h +++ b/rlprivate.h @@ -1,10 +1,10 @@ /* rlprivate.h -- functions and variables global to the readline library, but not intended for use by applications. */ -/* Copyright (C) 1999-2020 Free Software Foundation, Inc. +/* Copyright (C) 1999-2022 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library - for reading lines of text with interactive input and history editing. + for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -78,7 +78,7 @@ typedef struct __rl_search_context int search_string_size; char **lines; - char *allocated_line; + char *allocated_line; int hlen; int hindex; @@ -169,16 +169,16 @@ typedef struct __rl_vimotion_context /* fill in more as needed */ /* `Generic' callback data and functions */ -typedef struct __rl_callback_generic_arg +typedef struct __rl_callback_generic_arg { int count; int i1, i2; /* add here as needed */ } _rl_callback_generic_arg; -typedef int _rl_callback_func_t PARAMS((_rl_callback_generic_arg *)); +typedef int _rl_callback_func_t (_rl_callback_generic_arg *); -typedef void _rl_sigcleanup_func_t PARAMS((int, void *)); +typedef void _rl_sigcleanup_func_t (int, void *); /************************************************************************* * * @@ -221,16 +221,16 @@ extern int rl_blink_matching_paren; *************************************************************************/ /* kill.c */ -extern int rl_set_retained_kills PARAMS((int)); +extern int rl_set_retained_kills (int); /* terminal.c */ -extern void _rl_set_screen_size PARAMS((int, int)); +extern void _rl_set_screen_size (int, int); /* undo.c */ -extern int _rl_fix_last_undo_of_type PARAMS((int, int, int)); +extern int _rl_fix_last_undo_of_type (int, int, int); /* util.c */ -extern char *_rl_savestring PARAMS((const char *)); +extern char *_rl_savestring (const char *); /************************************************************************* * * @@ -250,66 +250,73 @@ extern char *_rl_savestring PARAMS((const char *)); #if defined(READLINE_CALLBACKS) /* readline.c */ -extern void readline_internal_setup PARAMS((void)); -extern char *readline_internal_teardown PARAMS((int)); -extern int readline_internal_char PARAMS((void)); +extern void readline_internal_setup (void); +extern char *readline_internal_teardown (int); +extern int readline_internal_char (void); -extern _rl_keyseq_cxt *_rl_keyseq_cxt_alloc PARAMS((void)); -extern void _rl_keyseq_cxt_dispose PARAMS((_rl_keyseq_cxt *)); -extern void _rl_keyseq_chain_dispose PARAMS((void)); +extern _rl_keyseq_cxt *_rl_keyseq_cxt_alloc (void); +extern void _rl_keyseq_cxt_dispose (_rl_keyseq_cxt *); +extern void _rl_keyseq_chain_dispose (void); + +extern int _rl_dispatch_callback (_rl_keyseq_cxt *); -extern int _rl_dispatch_callback PARAMS((_rl_keyseq_cxt *)); - /* callback.c */ -extern _rl_callback_generic_arg *_rl_callback_data_alloc PARAMS((int)); -extern void _rl_callback_data_dispose PARAMS((_rl_callback_generic_arg *)); +extern _rl_callback_generic_arg *_rl_callback_data_alloc (int); +extern void _rl_callback_data_dispose (_rl_callback_generic_arg *); #endif /* READLINE_CALLBACKS */ /* bind.c */ -extern char *_rl_untranslate_macro_value PARAMS((char *, int)); +extern char *_rl_untranslate_macro_value (char *, int); /* complete.c */ -extern void _rl_reset_completion_state PARAMS((void)); -extern char _rl_find_completion_word PARAMS((int *, int *)); -extern void _rl_free_match_list PARAMS((char **)); +extern void _rl_reset_completion_state (void); +extern char _rl_find_completion_word (int *, int *); +extern void _rl_free_match_list (char **); /* display.c */ -extern char *_rl_strip_prompt PARAMS((char *)); -extern void _rl_reset_prompt PARAMS((void)); -extern void _rl_move_vert PARAMS((int)); -extern void _rl_save_prompt PARAMS((void)); -extern void _rl_restore_prompt PARAMS((void)); -extern char *_rl_make_prompt_for_search PARAMS((int)); -extern void _rl_erase_at_end_of_line PARAMS((int)); -extern void _rl_clear_to_eol PARAMS((int)); -extern void _rl_clear_screen PARAMS((int)); -extern void _rl_update_final PARAMS((void)); -extern void _rl_optimize_redisplay PARAMS((void)); -extern void _rl_redisplay_after_sigwinch PARAMS((void)); -extern void _rl_clean_up_for_exit PARAMS((void)); -extern void _rl_erase_entire_line PARAMS((void)); -extern int _rl_current_display_line PARAMS((void)); -extern void _rl_refresh_line PARAMS((void)); +extern char *_rl_strip_prompt (char *); +extern void _rl_reset_prompt (void); +extern void _rl_move_vert (int); +extern void _rl_save_prompt (void); +extern void _rl_restore_prompt (void); +extern char *_rl_make_prompt_for_search (int); +extern void _rl_erase_at_end_of_line (int); +extern void _rl_clear_to_eol (int); +extern void _rl_clear_screen (int); +extern void _rl_update_final (void); +extern void _rl_optimize_redisplay (void); +extern void _rl_redisplay_after_sigwinch (void); +extern void _rl_clean_up_for_exit (void); +extern void _rl_erase_entire_line (void); +extern int _rl_current_display_line (void); +extern void _rl_refresh_line (void); /* input.c */ -extern int _rl_any_typein PARAMS((void)); -extern int _rl_input_available PARAMS((void)); -extern int _rl_nchars_available PARAMS((void)); -extern int _rl_input_queued PARAMS((int)); -extern void _rl_insert_typein PARAMS((int)); -extern int _rl_unget_char PARAMS((int)); -extern int _rl_pushed_input_available PARAMS((void)); +extern int _rl_any_typein (void); +extern int _rl_input_available (void); +extern int _rl_nchars_available (void); +extern int _rl_input_queued (int); +extern void _rl_insert_typein (int); +extern int _rl_unget_char (int); +extern int _rl_pushed_input_available (void); + +extern int _rl_timeout_init (void); +extern int _rl_timeout_handle_sigalrm (void); +#if defined (_POSIXSELECT_H_) +/* use as a sentinel for fd_set, struct timeval, and sigset_t definitions */ +extern int _rl_timeout_select (int, fd_set *, fd_set *, fd_set *, const struct timeval *, const sigset_t *); +#endif /* isearch.c */ -extern _rl_search_cxt *_rl_scxt_alloc PARAMS((int, int)); -extern void _rl_scxt_dispose PARAMS((_rl_search_cxt *, int)); +extern _rl_search_cxt *_rl_scxt_alloc (int, int); +extern void _rl_scxt_dispose (_rl_search_cxt *, int); -extern int _rl_isearch_dispatch PARAMS((_rl_search_cxt *, int)); -extern int _rl_isearch_callback PARAMS((_rl_search_cxt *)); -extern int _rl_isearch_cleanup PARAMS((_rl_search_cxt *, int)); +extern int _rl_isearch_dispatch (_rl_search_cxt *, int); +extern int _rl_isearch_callback (_rl_search_cxt *); +extern int _rl_isearch_cleanup (_rl_search_cxt *, int); -extern int _rl_search_getchar PARAMS((_rl_search_cxt *)); +extern int _rl_search_getchar (_rl_search_cxt *); /* kill.c */ #ifndef BRACKETED_PASTE_DEFAULT @@ -325,110 +332,117 @@ extern int _rl_search_getchar PARAMS((_rl_search_cxt *)); #define BRACK_PASTE_INIT "\033[?2004h" #define BRACK_PASTE_FINI "\033[?2004l\r" -extern int _rl_read_bracketed_paste_prefix PARAMS((int)); -extern char *_rl_bracketed_text PARAMS((size_t *)); -extern int _rl_bracketed_read_key PARAMS((void)); -extern int _rl_bracketed_read_mbstring PARAMS((char *, int)); +extern int _rl_read_bracketed_paste_prefix (int); +extern char *_rl_bracketed_text (size_t *); +extern int _rl_bracketed_read_key (void); +extern int _rl_bracketed_read_mbstring (char *, int); /* macro.c */ -extern void _rl_with_macro_input PARAMS((char *)); -extern int _rl_peek_macro_key PARAMS((void)); -extern int _rl_next_macro_key PARAMS((void)); -extern int _rl_prev_macro_key PARAMS((void)); -extern void _rl_push_executing_macro PARAMS((void)); -extern void _rl_pop_executing_macro PARAMS((void)); -extern void _rl_add_macro_char PARAMS((int)); -extern void _rl_kill_kbd_macro PARAMS((void)); +extern void _rl_with_macro_input (char *); +extern int _rl_peek_macro_key (void); +extern int _rl_next_macro_key (void); +extern int _rl_prev_macro_key (void); +extern void _rl_push_executing_macro (void); +extern void _rl_pop_executing_macro (void); +extern void _rl_add_macro_char (int); +extern void _rl_kill_kbd_macro (void); /* misc.c */ -extern int _rl_arg_overflow PARAMS((void)); -extern void _rl_arg_init PARAMS((void)); -extern int _rl_arg_getchar PARAMS((void)); -extern int _rl_arg_callback PARAMS((_rl_arg_cxt)); -extern void _rl_reset_argument PARAMS((void)); +extern int _rl_arg_overflow (void); +extern void _rl_arg_init (void); +extern int _rl_arg_getchar (void); +extern int _rl_arg_callback (_rl_arg_cxt); +extern void _rl_reset_argument (void); -extern void _rl_start_using_history PARAMS((void)); -extern int _rl_free_saved_history_line PARAMS((void)); -extern void _rl_set_insert_mode PARAMS((int, int)); +extern void _rl_start_using_history (void); +extern int _rl_free_saved_history_line (void); +extern void _rl_set_insert_mode (int, int); -extern void _rl_revert_previous_lines PARAMS((void)); -extern void _rl_revert_all_lines PARAMS((void)); +extern void _rl_revert_previous_lines (void); +extern void _rl_revert_all_lines (void); /* nls.c */ -extern char *_rl_init_locale PARAMS((void)); -extern int _rl_init_eightbit PARAMS((void)); +extern char *_rl_init_locale (void); +extern int _rl_init_eightbit (void); +extern void _rl_reset_locale (void); /* parens.c */ -extern void _rl_enable_paren_matching PARAMS((int)); +extern void _rl_enable_paren_matching (int); /* readline.c */ -extern void _rl_init_line_state PARAMS((void)); -extern void _rl_set_the_line PARAMS((void)); -extern int _rl_dispatch PARAMS((int, Keymap)); -extern int _rl_dispatch_subseq PARAMS((int, Keymap, int)); -extern void _rl_internal_char_cleanup PARAMS((void)); +extern void _rl_init_line_state (void); +extern void _rl_set_the_line (void); +extern int _rl_dispatch (int, Keymap); +extern int _rl_dispatch_subseq (int, Keymap, int); +extern void _rl_internal_char_cleanup (void); + +extern void _rl_init_executing_keyseq (void); +extern void _rl_term_executing_keyseq (void); +extern void _rl_end_executing_keyseq (void); +extern void _rl_add_executing_keyseq (int); +extern void _rl_del_executing_keyseq (void); -extern void _rl_init_executing_keyseq PARAMS((void)); -extern void _rl_term_executing_keyseq PARAMS((void)); -extern void _rl_end_executing_keyseq PARAMS((void)); -extern void _rl_add_executing_keyseq PARAMS((int)); +extern rl_command_func_t *_rl_executing_func; /* rltty.c */ -extern int _rl_disable_tty_signals PARAMS((void)); -extern int _rl_restore_tty_signals PARAMS((void)); +extern int _rl_disable_tty_signals (void); +extern int _rl_restore_tty_signals (void); /* search.c */ -extern int _rl_nsearch_callback PARAMS((_rl_search_cxt *)); -extern int _rl_nsearch_cleanup PARAMS((_rl_search_cxt *, int)); +extern int _rl_nsearch_callback (_rl_search_cxt *); +extern int _rl_nsearch_cleanup (_rl_search_cxt *, int); /* signals.c */ -extern void _rl_signal_handler PARAMS((int)); +extern void _rl_signal_handler (int); -extern void _rl_block_sigint PARAMS((void)); -extern void _rl_release_sigint PARAMS((void)); -extern void _rl_block_sigwinch PARAMS((void)); -extern void _rl_release_sigwinch PARAMS((void)); +extern void _rl_block_sigint (void); +extern void _rl_release_sigint (void); +extern void _rl_block_sigwinch (void); +extern void _rl_release_sigwinch (void); /* terminal.c */ -extern void _rl_get_screen_size PARAMS((int, int)); -extern void _rl_sigwinch_resize_terminal PARAMS((void)); -extern int _rl_init_terminal_io PARAMS((const char *)); +extern void _rl_get_screen_size (int, int); +extern void _rl_sigwinch_resize_terminal (void); +extern int _rl_init_terminal_io (const char *); #ifdef _MINIX -extern void _rl_output_character_function PARAMS((int)); +extern void _rl_output_character_function (int); #else -extern int _rl_output_character_function PARAMS((int)); +extern int _rl_output_character_function (int); #endif -extern void _rl_cr PARAMS((void)); -extern void _rl_output_some_chars PARAMS((const char *, int)); -extern int _rl_backspace PARAMS((int)); -extern void _rl_enable_meta_key PARAMS((void)); -extern void _rl_disable_meta_key PARAMS((void)); -extern void _rl_control_keypad PARAMS((int)); -extern void _rl_set_cursor PARAMS((int, int)); -extern void _rl_standout_on PARAMS((void)); -extern void _rl_standout_off PARAMS((void)); +extern void _rl_cr (void); +extern void _rl_output_some_chars (const char *, int); +extern int _rl_backspace (int); +extern void _rl_enable_meta_key (void); +extern void _rl_disable_meta_key (void); +extern void _rl_control_keypad (int); +extern void _rl_set_cursor (int, int); +extern void _rl_standout_on (void); +extern void _rl_standout_off (void); +extern int _rl_reset_region_color (int, const char *); +extern void _rl_region_color_on (void); +extern void _rl_region_color_off (void); /* text.c */ -extern void _rl_fix_point PARAMS((int)); -extern void _rl_fix_mark PARAMS((void)); -extern int _rl_replace_text PARAMS((const char *, int, int)); -extern int _rl_forward_char_internal PARAMS((int)); -extern int _rl_backward_char_internal PARAMS((int)); -extern int _rl_insert_char PARAMS((int, int)); -extern int _rl_overwrite_char PARAMS((int, int)); -extern int _rl_overwrite_rubout PARAMS((int, int)); -extern int _rl_rubout_char PARAMS((int, int)); +extern void _rl_fix_point (int); +extern void _rl_fix_mark (void); +extern int _rl_replace_text (const char *, int, int); +extern int _rl_forward_char_internal (int); +extern int _rl_backward_char_internal (int); +extern int _rl_insert_char (int, int); +extern int _rl_overwrite_char (int, int); +extern int _rl_overwrite_rubout (int, int); +extern int _rl_rubout_char (int, int); #if defined (HANDLE_MULTIBYTE) -extern int _rl_char_search_internal PARAMS((int, int, char *, int)); +extern int _rl_char_search_internal (int, int, char *, int); #else -extern int _rl_char_search_internal PARAMS((int, int, int)); +extern int _rl_char_search_internal (int, int, int); #endif -extern int _rl_set_mark_at_pos PARAMS((int)); +extern int _rl_set_mark_at_pos (int); /* undo.c */ -extern UNDO_LIST *_rl_copy_undo_entry PARAMS((UNDO_LIST *)); -extern UNDO_LIST *_rl_copy_undo_list PARAMS((UNDO_LIST *)); -extern void _rl_free_undo_list PARAMS((UNDO_LIST *)); +extern UNDO_LIST *_rl_copy_undo_entry (UNDO_LIST *); +extern UNDO_LIST *_rl_copy_undo_list (UNDO_LIST *); +extern void _rl_free_undo_list (UNDO_LIST *); /* util.c */ #if defined (USE_VARARGS) && defined (PREFER_STDARG) @@ -440,31 +454,37 @@ extern void _rl_ttymsg (); extern void _rl_errmsg (); extern void _rl_trace (); #endif -extern void _rl_audit_tty PARAMS((char *)); - -extern int _rl_tropen PARAMS((void)); - -extern int _rl_abort_internal PARAMS((void)); -extern int _rl_null_function PARAMS((int, int)); -extern char *_rl_strindex PARAMS((const char *, const char *)); -extern int _rl_qsort_string_compare PARAMS((char **, char **)); -extern int (_rl_uppercase_p) PARAMS((int)); -extern int (_rl_lowercase_p) PARAMS((int)); -extern int (_rl_pure_alphabetic) PARAMS((int)); -extern int (_rl_digit_p) PARAMS((int)); -extern int (_rl_to_lower) PARAMS((int)); -extern int (_rl_to_upper) PARAMS((int)); -extern int (_rl_digit_value) PARAMS((int)); +extern void _rl_audit_tty (char *); + +extern int _rl_tropen (void); + +extern int _rl_abort_internal (void); +extern int _rl_null_function (int, int); +extern char *_rl_strindex (const char *, const char *); +extern int _rl_qsort_string_compare (char **, char **); +extern int (_rl_uppercase_p) (int); +extern int (_rl_lowercase_p) (int); +extern int (_rl_pure_alphabetic) (int); +extern int (_rl_digit_p) (int); +extern int (_rl_to_lower) (int); +extern int (_rl_to_upper) (int); +extern int (_rl_digit_value) (int); /* vi_mode.c */ -extern void _rl_vi_initialize_line PARAMS((void)); -extern void _rl_vi_reset_last PARAMS((void)); -extern void _rl_vi_set_last PARAMS((int, int, int)); -extern int _rl_vi_textmod_command PARAMS((int)); -extern int _rl_vi_motion_command PARAMS((int)); -extern void _rl_vi_done_inserting PARAMS((void)); -extern int _rl_vi_domove_callback PARAMS((_rl_vimotion_cxt *)); -extern int _rl_vi_domove_motion_cleanup PARAMS((int, _rl_vimotion_cxt *)); +extern void _rl_vi_initialize_line (void); +extern void _rl_vi_reset_last (void); +extern void _rl_vi_set_last (int, int, int); +extern int _rl_vi_textmod_command (int); +extern int _rl_vi_motion_command (int); +extern void _rl_vi_done_inserting (void); +extern int _rl_vi_domove_callback (_rl_vimotion_cxt *); +extern int _rl_vi_domove_motion_cleanup (int, _rl_vimotion_cxt *); + +/* Use HS_HISTORY_VERSION as the sentinel to see if we've included history.h + and so can use HIST_ENTRY */ +#if defined (HS_HISTORY_VERSION) +extern void _rl_free_history_entry (HIST_ENTRY *); +#endif /************************************************************************* * Undocumented private variables * @@ -537,6 +557,8 @@ extern int _rl_echo_control_chars; extern int _rl_show_mode_in_prompt; extern int _rl_enable_bracketed_paste; extern int _rl_enable_active_region; +extern char *_rl_active_region_start_color; +extern char *_rl_active_region_end_color; extern char *_rl_comment_begin; extern unsigned char _rl_parsing_conditionalized_out; extern Keymap _rl_keymap; @@ -544,7 +566,6 @@ extern FILE *_rl_in_stream; extern FILE *_rl_out_stream; extern int _rl_last_command_was_kill; extern int _rl_eof_char; -extern int _rl_eof_found; extern procenv_t _rl_top_level; extern _rl_keyseq_cxt *_rl_kscxt; extern int _rl_keyseq_timeout; @@ -555,6 +576,7 @@ extern rl_hook_func_t *_rl_internal_startup_hook; /* search.c */ extern _rl_search_cxt *_rl_nscxt; +extern int _rl_history_search_pos; /* signals.c */ extern int volatile _rl_caught_signal; @@ -602,4 +624,10 @@ extern int _rl_vi_last_command; extern int _rl_vi_redoing; extern _rl_vimotion_cxt *_rl_vimvcxt; +/* Use HS_HISTORY_VERSION as the sentinel to see if we've included history.h + and so can use HIST_ENTRY */ +#if defined (HS_HISTORY_VERSION) +extern HIST_ENTRY *_rl_saved_line_for_history; +#endif + #endif /* _RL_PRIVATE_H_ */ diff --git a/rlshell.h b/rlshell.h index 3e17d8b..6055b14 100644 --- a/rlshell.h +++ b/rlshell.h @@ -1,6 +1,6 @@ /* rlshell.h -- utility functions normally provided by bash. */ -/* Copyright (C) 1999-2009 Free Software Foundation, Inc. +/* Copyright (C) 1999-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -24,10 +24,10 @@ #include "rlstdc.h" -extern char *sh_single_quote PARAMS((char *)); -extern void sh_set_lines_and_columns PARAMS((int, int)); -extern char *sh_get_env_value PARAMS((const char *)); -extern char *sh_get_home_dir PARAMS((void)); -extern int sh_unset_nodelay_mode PARAMS((int)); +extern char *sh_single_quote (char *); +extern void sh_set_lines_and_columns (int, int); +extern char *sh_get_env_value (const char *); +extern char *sh_get_home_dir (void); +extern int sh_unset_nodelay_mode (int); #endif /* _RL_SHELL_H_ */ diff --git a/rltty.c b/rltty.c index d0cd572..882a3d4 100644 --- a/rltty.c +++ b/rltty.c @@ -1,7 +1,7 @@ /* rltty.c -- functions to prepare and restore the terminal for readline's use. */ -/* Copyright (C) 1992-2017 Free Software Foundation, Inc. +/* Copyright (C) 1992-2022 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -52,7 +52,7 @@ extern int errno; rl_vintfunc_t *rl_prep_term_function = rl_prep_terminal; rl_voidfunc_t *rl_deprep_term_function = rl_deprep_terminal; -static void set_winsize PARAMS((int)); +static void set_winsize (int); /* **************************************************************** */ /* */ @@ -119,15 +119,15 @@ struct bsdtty { static TIOTYPE otio; -static void save_tty_chars PARAMS((TIOTYPE *)); -static int _get_tty_settings PARAMS((int, TIOTYPE *)); -static int get_tty_settings PARAMS((int, TIOTYPE *)); -static int _set_tty_settings PARAMS((int, TIOTYPE *)); -static int set_tty_settings PARAMS((int, TIOTYPE *)); +static void save_tty_chars (TIOTYPE *); +static int _get_tty_settings (int, TIOTYPE *); +static int get_tty_settings (int, TIOTYPE *); +static int _set_tty_settings (int, TIOTYPE *); +static int set_tty_settings (int, TIOTYPE *); -static void prepare_terminal_settings PARAMS((int, TIOTYPE, TIOTYPE *)); +static void prepare_terminal_settings (int, TIOTYPE, TIOTYPE *); -static void set_special_char PARAMS((Keymap, TIOTYPE *, int, rl_command_func_t *)); +static void set_special_char (Keymap, TIOTYPE *, int, rl_command_func_t *); static void save_tty_chars (TIOTYPE *tiop) @@ -332,16 +332,16 @@ prepare_terminal_settings (int meta_flag, TIOTYPE oldtio, TIOTYPE *tiop) static TIOTYPE otio; -static void save_tty_chars PARAMS((TIOTYPE *)); -static int _get_tty_settings PARAMS((int, TIOTYPE *)); -static int get_tty_settings PARAMS((int, TIOTYPE *)); -static int _set_tty_settings PARAMS((int, TIOTYPE *)); -static int set_tty_settings PARAMS((int, TIOTYPE *)); +static void save_tty_chars (TIOTYPE *); +static int _get_tty_settings (int, TIOTYPE *); +static int get_tty_settings (int, TIOTYPE *); +static int _set_tty_settings (int, TIOTYPE *); +static int set_tty_settings (int, TIOTYPE *); -static void prepare_terminal_settings PARAMS((int, TIOTYPE, TIOTYPE *)); +static void prepare_terminal_settings (int, TIOTYPE, TIOTYPE *); -static void set_special_char PARAMS((Keymap, TIOTYPE *, int, rl_command_func_t *)); -static void _rl_bind_tty_special_chars PARAMS((Keymap, TIOTYPE)); +static void set_special_char (Keymap, TIOTYPE *, int, rl_command_func_t *); +static void _rl_bind_tty_special_chars (Keymap, TIOTYPE); #if defined (FLUSHO) # define OUTPUT_BEING_FLUSHED(tp) (tp->c_lflag & FLUSHO) @@ -692,7 +692,11 @@ rl_deprep_terminal (void) if (terminal_prepped & TPX_BRACKPASTE) { fprintf (rl_outstream, BRACK_PASTE_FINI); - if (_rl_eof_found) + /* Since the last character in BRACK_PASTE_FINI is \r */ + _rl_last_c_pos = 0; + if (rl_eof_found && (RL_ISSTATE (RL_STATE_TIMEOUT) == 0)) + fprintf (rl_outstream, "\n"); + else if (_rl_echoing_p == 0) fprintf (rl_outstream, "\n"); } diff --git a/rltypedefs.h b/rltypedefs.h index f9f5cd3..1636549 100644 --- a/rltypedefs.h +++ b/rltypedefs.h @@ -1,6 +1,6 @@ /* rltypedefs.h -- Type declarations for readline functions. */ -/* Copyright (C) 2000-2011 Free Software Foundation, Inc. +/* Copyright (C) 2000-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -32,10 +32,10 @@ extern "C" { # define _FUNCTION_DEF #if defined(__GNUC__) || defined(__clang__) -typedef int Function () __attribute__ ((deprecated)); -typedef void VFunction () __attribute__ ((deprecated)); -typedef char *CPFunction () __attribute__ ((deprecated)); -typedef char **CPPFunction () __attribute__ ((deprecated)); +typedef int Function () __attribute__((deprecated)); +typedef void VFunction () __attribute__((deprecated)); +typedef char *CPFunction () __attribute__((deprecated)); +typedef char **CPPFunction () __attribute__((deprecated)); #else typedef int Function (); typedef void VFunction (); @@ -51,45 +51,45 @@ typedef char **CPPFunction (); # define _RL_FUNCTION_TYPEDEF /* Bindable functions */ -typedef int rl_command_func_t PARAMS((int, int)); +typedef int rl_command_func_t (int, int); /* Typedefs for the completion system */ -typedef char *rl_compentry_func_t PARAMS((const char *, int)); -typedef char **rl_completion_func_t PARAMS((const char *, 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 PARAMS((char *, int, char *)); -typedef char *rl_dequote_func_t PARAMS((char *, int)); +typedef char *rl_quote_func_t (char *, int, char *); +typedef char *rl_dequote_func_t (char *, int); -typedef int rl_compignore_func_t PARAMS((char **)); +typedef int rl_compignore_func_t (char **); -typedef void rl_compdisp_func_t PARAMS((char **, int, int)); +typedef void rl_compdisp_func_t (char **, int, int); /* Type for input and pre-read hook functions like rl_event_hook */ -typedef int rl_hook_func_t PARAMS((void)); +typedef int rl_hook_func_t (void); /* Input function type */ -typedef int rl_getc_func_t PARAMS((FILE *)); +typedef int rl_getc_func_t (FILE *); /* Generic function that takes a character buffer (which could be the readline line buffer) and an index into it (which could be rl_point) and returns an int. */ -typedef int rl_linebuf_func_t PARAMS((char *, int)); +typedef int rl_linebuf_func_t (char *, int); /* `Generic' function pointer typedefs */ -typedef int rl_intfunc_t PARAMS((int)); +typedef int rl_intfunc_t (int); #define rl_ivoidfunc_t rl_hook_func_t -typedef int rl_icpfunc_t PARAMS((char *)); -typedef int rl_icppfunc_t PARAMS((char **)); - -typedef void rl_voidfunc_t PARAMS((void)); -typedef void rl_vintfunc_t PARAMS((int)); -typedef void rl_vcpfunc_t PARAMS((char *)); -typedef void rl_vcppfunc_t PARAMS((char **)); - -typedef char *rl_cpvfunc_t PARAMS((void)); -typedef char *rl_cpifunc_t PARAMS((int)); -typedef char *rl_cpcpfunc_t PARAMS((char *)); -typedef char *rl_cpcppfunc_t PARAMS((char **)); +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 **); + +typedef char *rl_cpvfunc_t (void); +typedef char *rl_cpifunc_t (int); +typedef char *rl_cpcpfunc_t (char *); +typedef char *rl_cpcppfunc_t (char **); #endif /* _RL_FUNCTION_TYPEDEF */ diff --git a/search.c b/search.c index 38a2936..eea2301 100644 --- a/search.c +++ b/search.c @@ -1,6 +1,6 @@ /* search.c - code for non-incremental searching in emacs and vi modes. */ -/* Copyright (C) 1992-2020 Free Software Foundation, Inc. +/* Copyright (C) 1992-2022 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -55,33 +55,28 @@ _rl_search_cxt *_rl_nscxt = 0; -extern HIST_ENTRY *_rl_saved_line_for_history; - -/* Functions imported from the rest of the library. */ -extern void _rl_free_history_entry PARAMS((HIST_ENTRY *)); - static char *noninc_search_string = (char *) NULL; static int noninc_history_pos; static char *prev_line_found = (char *) NULL; -static int rl_history_search_len; -static int rl_history_search_pos; -static int rl_history_search_flags; +static int _rl_history_search_len; +/*static*/ int _rl_history_search_pos; +static int _rl_history_search_flags; static char *history_search_string; static int history_string_size; -static void make_history_line_current PARAMS((HIST_ENTRY *)); -static int noninc_search_from_pos PARAMS((char *, int, int, int, int *)); -static int noninc_dosearch PARAMS((char *, int, int)); -static int noninc_search PARAMS((int, int)); -static int rl_history_search_internal PARAMS((int, int)); -static void rl_history_search_reinit PARAMS((int)); +static void make_history_line_current (HIST_ENTRY *); +static int noninc_search_from_pos (char *, int, int, int, int *); +static int noninc_dosearch (char *, int, int); +static int noninc_search (int, int); +static int rl_history_search_internal (int, int); +static void rl_history_search_reinit (int); -static _rl_search_cxt *_rl_nsearch_init PARAMS((int, int)); -static void _rl_nsearch_abort PARAMS((_rl_search_cxt *)); -static int _rl_nsearch_dispatch PARAMS((_rl_search_cxt *, int)); +static _rl_search_cxt *_rl_nsearch_init (int, int); +static void _rl_nsearch_abort (_rl_search_cxt *); +static int _rl_nsearch_dispatch (_rl_search_cxt *, int); /* Make the data from the history entry ENTRY be the contents of the current line. This doesn't do anything with rl_point; the caller @@ -89,6 +84,15 @@ static int _rl_nsearch_dispatch PARAMS((_rl_search_cxt *, int)); static void make_history_line_current (HIST_ENTRY *entry) { + UNDO_LIST *xlist; + + xlist = _rl_saved_line_for_history ? (UNDO_LIST *)_rl_saved_line_for_history->data : 0; + /* At this point, rl_undo_list points to a private search string list. */ + if (rl_undo_list && rl_undo_list != (UNDO_LIST *)entry->data && rl_undo_list != xlist) + rl_free_undo_list (); + + /* Now we create a new undo list with a single insert for this text. + WE DON'T CHANGE THE ORIGINAL HISTORY ENTRY UNDO LIST */ _rl_replace_text (entry->line, 0, rl_end); _rl_fix_point (1); #if defined (VI_MODE) @@ -100,6 +104,11 @@ make_history_line_current (HIST_ENTRY *entry) rl_free_undo_list (); #endif + /* This will need to free the saved undo list associated with the original + (pre-search) line buffer. + XXX - look at _rl_free_saved_history_line and consider calling it if + rl_undo_list != xlist (or calling rl_free_undo list directly on + _rl_saved_line_for_history->data) */ if (_rl_saved_line_for_history) _rl_free_history_entry (_rl_saved_line_for_history); _rl_saved_line_for_history = (HIST_ENTRY *)NULL; @@ -264,11 +273,11 @@ static void _rl_nsearch_abort (_rl_search_cxt *cxt) { rl_maybe_unsave_line (); - rl_clear_message (); rl_point = cxt->save_point; rl_mark = cxt->save_mark; - _rl_fix_point (1); rl_restore_prompt (); + rl_clear_message (); + _rl_fix_point (1); RL_UNSETSTATE (RL_STATE_NSEARCH); } @@ -521,8 +530,10 @@ rl_history_search_internal (int count, int dir) { HIST_ENTRY *temp; int ret, oldpos, newcol; + int had_saved_line; char *t; + had_saved_line = _rl_saved_line_for_history != 0; rl_maybe_save_line (); temp = (HIST_ENTRY *)NULL; @@ -534,14 +545,14 @@ rl_history_search_internal (int count, int dir) while (count) { RL_CHECK_SIGNALS (); - ret = noninc_search_from_pos (history_search_string, rl_history_search_pos + dir, dir, 0, &newcol); + ret = noninc_search_from_pos (history_search_string, _rl_history_search_pos + dir, dir, 0, &newcol); if (ret == -1) break; /* Get the history entry we found. */ - rl_history_search_pos = ret; + _rl_history_search_pos = ret; oldpos = where_history (); - history_set_pos (rl_history_search_pos); + history_set_pos (_rl_history_search_pos); temp = current_history (); /* will never be NULL after successful search */ history_set_pos (oldpos); @@ -555,20 +566,21 @@ rl_history_search_internal (int count, int dir) /* If we didn't find anything at all, return. */ if (temp == 0) { + /* XXX - check had_saved_line here? */ rl_maybe_unsave_line (); rl_ding (); /* If you don't want the saved history line (last match) to show up in the line buffer after the search fails, change the #if 0 to #if 1 */ #if 0 - if (rl_point > rl_history_search_len) + if (rl_point > _rl_history_search_len) { - rl_point = rl_end = rl_history_search_len; + rl_point = rl_end = _rl_history_search_len; rl_line_buffer[rl_end] = '\0'; rl_mark = 0; } #else - rl_point = rl_history_search_len; /* rl_maybe_unsave_line changes it */ + rl_point = _rl_history_search_len; /* rl_maybe_unsave_line changes it */ rl_mark = rl_end; #endif return 1; @@ -578,13 +590,13 @@ rl_history_search_internal (int count, int dir) make_history_line_current (temp); /* decide where to put rl_point -- need to change this for pattern search */ - if (rl_history_search_flags & ANCHORED_SEARCH) - rl_point = rl_history_search_len; /* easy case */ + if (_rl_history_search_flags & ANCHORED_SEARCH) + rl_point = _rl_history_search_len; /* easy case */ else { #if 0 t = strstr (rl_line_buffer, history_search_string); /* XXX */ - rl_point = t ? (int)(t - rl_line_buffer) + rl_history_search_len : rl_end; + rl_point = t ? (int)(t - rl_line_buffer) + _rl_history_search_len : rl_end; #else rl_point = (newcol >= 0) ? newcol : rl_end; #endif @@ -599,17 +611,17 @@ rl_history_search_reinit (int flags) { int sind; - rl_history_search_pos = where_history (); - rl_history_search_len = rl_point; - rl_history_search_flags = flags; + _rl_history_search_pos = where_history (); + _rl_history_search_len = rl_point; + _rl_history_search_flags = flags; prev_line_found = (char *)NULL; if (rl_point) { /* Allocate enough space for anchored and non-anchored searches */ - if (rl_history_search_len >= history_string_size - 2) + if (_rl_history_search_len >= history_string_size - 2) { - history_string_size = rl_history_search_len + 2; + history_string_size = _rl_history_search_len + 2; history_search_string = (char *)xrealloc (history_search_string, history_string_size); } sind = 0; @@ -618,7 +630,7 @@ rl_history_search_reinit (int flags) strncpy (history_search_string + sind, rl_line_buffer, rl_point); history_search_string[rl_point + sind] = '\0'; } - _rl_free_saved_history_line (); + _rl_free_saved_history_line (); /* XXX rl_undo_list? */ } /* Search forward in the history for the string of characters @@ -634,7 +646,7 @@ rl_history_search_forward (int count, int ignore) rl_last_func != rl_history_search_backward) rl_history_search_reinit (ANCHORED_SEARCH); - if (rl_history_search_len == 0) + if (_rl_history_search_len == 0) return (rl_get_next_history (count, ignore)); return (rl_history_search_internal (abs (count), (count > 0) ? 1 : -1)); } @@ -652,7 +664,7 @@ rl_history_search_backward (int count, int ignore) rl_last_func != rl_history_search_backward) rl_history_search_reinit (ANCHORED_SEARCH); - if (rl_history_search_len == 0) + if (_rl_history_search_len == 0) return (rl_get_previous_history (count, ignore)); return (rl_history_search_internal (abs (count), (count > 0) ? -1 : 1)); } @@ -671,7 +683,7 @@ rl_history_substr_search_forward (int count, int ignore) rl_last_func != rl_history_substr_search_backward) rl_history_search_reinit (NON_ANCHORED_SEARCH); - if (rl_history_search_len == 0) + if (_rl_history_search_len == 0) return (rl_get_next_history (count, ignore)); return (rl_history_search_internal (abs (count), (count > 0) ? 1 : -1)); } @@ -689,7 +701,7 @@ rl_history_substr_search_backward (int count, int ignore) rl_last_func != rl_history_substr_search_backward) rl_history_search_reinit (NON_ANCHORED_SEARCH); - if (rl_history_search_len == 0) + if (_rl_history_search_len == 0) return (rl_get_previous_history (count, ignore)); return (rl_history_search_internal (abs (count), (count > 0) ? -1 : 1)); } diff --git a/shell.c b/shell.c index 7fe2e97..36c9148 100644 --- a/shell.c +++ b/shell.c @@ -1,7 +1,7 @@ /* shell.c -- readline utility functions that are normally provided by bash when readline is linked as part of the shell. */ -/* Copyright (C) 1997-2009,2017 Free Software Foundation, Inc. +/* Copyright (C) 1997-2009,2017,2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -64,7 +64,7 @@ #include "xmalloc.h" #if defined (HAVE_GETPWUID) && !defined (HAVE_GETPW_DECLS) -extern struct passwd *getpwuid PARAMS((uid_t)); +extern struct passwd *getpwuid (uid_t); #endif /* HAVE_GETPWUID && !HAVE_GETPW_DECLS */ #ifndef NULL diff --git a/signals.c b/signals.c index f9174ab..9df365e 100644 --- a/signals.c +++ b/signals.c @@ -1,6 +1,6 @@ /* signals.c -- signal handling support for readline. */ -/* Copyright (C) 1987-2017 Free Software Foundation, Inc. +/* Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -48,23 +48,11 @@ #if defined (HANDLE_SIGNALS) -#if !defined (RETSIGTYPE) -# if defined (VOID_SIGHANDLER) -# define RETSIGTYPE void -# else -# define RETSIGTYPE int -# endif /* !VOID_SIGHANDLER */ -#endif /* !RETSIGTYPE */ - -#if defined (VOID_SIGHANDLER) -# define SIGHANDLER_RETURN return -#else -# define SIGHANDLER_RETURN return (0) -#endif +#define SIGHANDLER_RETURN return /* This typedef is equivalent to the one for Function; it allows us to say SigHandler *foo = signal (SIGKILL, SIG_IGN); */ -typedef RETSIGTYPE SigHandler (); +typedef void SigHandler (int); #if defined (HAVE_POSIX_SIGNALS) typedef struct sigaction sighandler_cxt; @@ -78,12 +66,12 @@ typedef struct { SigHandler *sa_handler; int sa_mask, sa_flags; } sighandler_cxt # define SA_RESTART 0 #endif -static SigHandler *rl_set_sighandler PARAMS((int, SigHandler *, sighandler_cxt *)); -static void rl_maybe_set_sighandler PARAMS((int, SigHandler *, sighandler_cxt *)); -static void rl_maybe_restore_sighandler PARAMS((int, sighandler_cxt *)); +static SigHandler *rl_set_sighandler (int, SigHandler *, sighandler_cxt *); +static void rl_maybe_set_sighandler (int, SigHandler *, sighandler_cxt *); +static void rl_maybe_restore_sighandler (int, sighandler_cxt *); -static RETSIGTYPE rl_signal_handler PARAMS((int)); -static RETSIGTYPE _rl_handle_signal PARAMS((int)); +static void rl_signal_handler (int); +static void _rl_handle_signal (int); /* Exported variables for use by applications. */ @@ -136,7 +124,7 @@ void *_rl_sigcleanarg; /* Readline signal handler functions. */ /* Called from RL_CHECK_SIGNALS() macro to run signal handling code. */ -RETSIGTYPE +void _rl_signal_handler (int sig) { _rl_caught_signal = 0; /* XXX */ @@ -163,7 +151,7 @@ _rl_signal_handler (int sig) SIGHANDLER_RETURN; } -static RETSIGTYPE +static void rl_signal_handler (int sig) { _rl_caught_signal = sig; @@ -173,7 +161,7 @@ rl_signal_handler (int sig) /* This is called to handle a signal when it is safe to do so (out of the signal handler execution path). Called by _rl_signal_handler for all the signals readline catches except SIGWINCH. */ -static RETSIGTYPE +static void _rl_handle_signal (int sig) { int block_sig; @@ -222,6 +210,9 @@ _rl_handle_signal (int sig) switch (sig) { case SIGINT: + /* We will end up blocking SIGTTOU while we are resetting the tty, so + watch out for this if it causes problems. We could prevent this by + setting block_sig to 1 without modifying SET. */ _rl_reset_completion_state (); rl_free_line_state (); #if defined (READLINE_CALLBACKS) @@ -242,8 +233,11 @@ _rl_handle_signal (int sig) this even if we've been stopped on SIGTTOU, since we handle signals when we have returned from the signal handler and the signal is no longer blocked. */ - sigaddset (&set, SIGTTOU); - block_sig = 1; + if (block_sig == 0) + { + sigaddset (&set, SIGTTOU); + block_sig = 1; + } # endif #endif /* SIGTSTP */ /* Any signals that should be blocked during cleanup should go here. */ @@ -261,13 +255,17 @@ _rl_handle_signal (int sig) case SIGTERM: #if defined (SIGALRM) case SIGALRM: + if (sig == SIGALRM) + _rl_timeout_handle_sigalrm (); #endif #if defined (SIGQUIT) case SIGQUIT: #endif +#if defined (HAVE_POSIX_SIGNALS) if (block_sig) sigprocmask (SIG_BLOCK, &set, &oset); +#endif rl_echo_signal_char (sig); rl_cleanup_after_signal (); @@ -283,19 +281,6 @@ _rl_handle_signal (int sig) /* We don't have to bother unblocking the signal because we are not running in a signal handler context. */ -#if 0 -#if defined (HAVE_POSIX_SIGNALS) - /* Make sure this signal is not blocked when we resend it to the - calling application. */ - sigemptyset (&set); - sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &set); - sigdelset (&set, sig); -#else /* !HAVE_POSIX_SIGNALS */ -# if defined (HAVE_BSD_SIGNALS) - omask = sigblock (0); -# endif /* HAVE_BSD_SIGNALS */ -#endif /* !HAVE_POSIX_SIGNALS */ -#endif #if defined (__EMX__) signal (sig, SIG_ACK); @@ -309,16 +294,6 @@ _rl_handle_signal (int sig) /* We don't need to modify the signal mask now that this is not run in a signal handler context. */ -#if 0 - /* Let the signal that we just sent through if it is blocked. */ -#if defined (HAVE_POSIX_SIGNALS) - sigprocmask (SIG_SETMASK, &set, (sigset_t *)NULL); -#else /* !HAVE_POSIX_SIGNALS */ -# if defined (HAVE_BSD_SIGNALS) - sigsetmask (omask & ~(sigmask (sig))); -# endif /* HAVE_BSD_SIGNALS */ -#endif /* !HAVE_POSIX_SIGNALS */ -#endif rl_reset_after_signal (); } @@ -328,7 +303,7 @@ _rl_handle_signal (int sig) } #if defined (SIGWINCH) -static RETSIGTYPE +static void rl_sigwinch_handler (int sig) { SigHandler *oh; diff --git a/support/config.guess b/support/config.guess old mode 100755 new mode 100644 index 0fc11ed..7f76b62 --- a/support/config.guess +++ b/support/config.guess @@ -1,12 +1,14 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2020 Free Software Foundation, Inc. +# Copyright 1992-2022 Free Software Foundation, Inc. -timestamp='2020-11-07' +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2022-01-09' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or +# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but @@ -27,12 +29,20 @@ timestamp='2020-11-07' # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess # # Please send patches to . -me=$(echo "$0" | sed -e 's,.*/,,') +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + + +me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] @@ -50,7 +60,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2020 Free Software Foundation, Inc. +Copyright 1992-2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -84,6 +94,9 @@ if test $# != 0; then exit 1 fi +# Just in case it came from the environment. +GUESS= + # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a @@ -102,8 +115,8 @@ set_cc_for_build() { # prevent multiple calls if $tmp is already set test "$tmp" && return 0 : "${TMPDIR=/tmp}" - # shellcheck disable=SC2039 - { tmp=$( (umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null) && test -n "$tmp" && test -d "$tmp" ; } || + # shellcheck disable=SC2039,SC3028 + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } @@ -112,7 +125,7 @@ set_cc_for_build() { ,,) echo "int x;" > "$dummy.c" for driver in cc gcc c89 c99 ; do if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then - CC_FOR_BUILD="$driver" + CC_FOR_BUILD=$driver break fi done @@ -131,16 +144,14 @@ if test -f /.attbin/uname ; then PATH=$PATH:/.attbin ; export PATH fi -UNAME_MACHINE=$( (uname -m) 2>/dev/null) || UNAME_MACHINE=unknown -UNAME_RELEASE=$( (uname -r) 2>/dev/null) || UNAME_RELEASE=unknown -UNAME_SYSTEM=$( (uname -s) 2>/dev/null) || UNAME_SYSTEM=unknown -UNAME_VERSION=$( (uname -v) 2>/dev/null) || UNAME_VERSION=unknown +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -case "$UNAME_SYSTEM" in +case $UNAME_SYSTEM in Linux|GNU|GNU/*) - # If the system lacks a compiler, then just pick glibc. - # We could probably try harder. - LIBC=gnu + LIBC=unknown set_cc_for_build cat <<-EOF > "$dummy.c" @@ -149,22 +160,37 @@ Linux|GNU|GNU/*) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc + #elif defined(__GLIBC__) + LIBC=gnu #else #include + /* First heuristic to detect musl libc. */ #ifdef __DEFINED_va_list LIBC=musl - #else - LIBC=gnu #endif #endif EOF - eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g')" + cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval "$cc_set_libc" + + # Second heuristic to detect musl libc. + if [ "$LIBC" = unknown ] && + command -v ldd >/dev/null && + ldd --version 2>&1 | grep -q ^musl; then + LIBC=musl + fi + + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + if [ "$LIBC" = unknown ]; then + LIBC=gnu + fi ;; esac # Note: order is significant - the case branches are not exclusive. -case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in +case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, @@ -176,12 +202,11 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=$( (uname -p 2>/dev/null || \ - "/sbin/$sysctl" 2>/dev/null || \ - "/usr/sbin/$sysctl" 2>/dev/null || \ - echo unknown)) - case "$UNAME_MACHINE_ARCH" in + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + echo unknown)` + case $UNAME_MACHINE_ARCH in aarch64eb) machine=aarch64_be-unknown ;; armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; @@ -189,15 +214,15 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) - arch=$(echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,') - endian=$(echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p') - machine="${arch}${endian}"-unknown + arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown ;; - *) machine="$UNAME_MACHINE_ARCH"-unknown ;; + *) machine=$UNAME_MACHINE_ARCH-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in earm*) os=netbsdelf ;; @@ -218,10 +243,10 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in ;; esac # Determine ABI tags. - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' - abi=$(echo "$UNAME_MACHINE_ARCH" | sed -e "$expr") + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` ;; esac # The OS release @@ -229,76 +254,82 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. - case "$UNAME_VERSION" in + case $UNAME_VERSION in Debian*) release='-gnu' ;; *) - release=$(echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2) + release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "$machine-${os}${release}${abi-}" - exit ;; + GUESS=$machine-${os}${release}${abi-} + ;; *:Bitrig:*:*) - UNAME_MACHINE_ARCH=$(arch | sed 's/Bitrig.//') - echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" - exit ;; + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE + ;; *:OpenBSD:*:*) - UNAME_MACHINE_ARCH=$(arch | sed 's/OpenBSD.//') - echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" - exit ;; + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE + ;; + *:SecBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE + ;; *:LibertyBSD:*:*) - UNAME_MACHINE_ARCH=$(arch | sed 's/^.*BSD\.//') - echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" - exit ;; + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE + ;; *:MidnightBSD:*:*) - echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE + ;; *:ekkoBSD:*:*) - echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE + ;; *:SolidBSD:*:*) - echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE + ;; *:OS108:*:*) - echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE + ;; macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE + ;; *:MirBSD:*:*) - echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE + ;; *:Sortix:*:*) - echo "$UNAME_MACHINE"-unknown-sortix - exit ;; + GUESS=$UNAME_MACHINE-unknown-sortix + ;; *:Twizzler:*:*) - echo "$UNAME_MACHINE"-unknown-twizzler - exit ;; + GUESS=$UNAME_MACHINE-unknown-twizzler + ;; *:Redox:*:*) - echo "$UNAME_MACHINE"-unknown-redox - exit ;; + GUESS=$UNAME_MACHINE-unknown-redox + ;; mips:OSF1:*.*) - echo mips-dec-osf1 - exit ;; + GUESS=mips-dec-osf1 + ;; alpha:OSF1:*:*) + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + trap '' 0 case $UNAME_RELEASE in *4.0) - UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $3}') + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) - UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $4}') + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. - ALPHA_CPU_TYPE=$(/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1) - case "$ALPHA_CPU_TYPE" in + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case $ALPHA_CPU_TYPE in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") @@ -335,68 +366,69 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo "$UNAME_MACHINE"-dec-osf"$(echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz)" - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; + OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + GUESS=$UNAME_MACHINE-dec-osf$OSF_REL + ;; Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; + GUESS=m68k-unknown-sysv4 + ;; *:[Aa]miga[Oo][Ss]:*:*) - echo "$UNAME_MACHINE"-unknown-amigaos - exit ;; + GUESS=$UNAME_MACHINE-unknown-amigaos + ;; *:[Mm]orph[Oo][Ss]:*:*) - echo "$UNAME_MACHINE"-unknown-morphos - exit ;; + GUESS=$UNAME_MACHINE-unknown-morphos + ;; *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; + GUESS=i370-ibm-openedition + ;; *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; + GUESS=s390-ibm-zvmoe + ;; *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; + GUESS=powerpc-ibm-os400 + ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix"$UNAME_RELEASE" - exit ;; + GUESS=arm-acorn-riscix$UNAME_RELEASE + ;; arm*:riscos:*:*|arm*:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; + GUESS=arm-unknown-riscos + ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; + GUESS=hppa1.1-hitachi-hiuxmpp + ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "$( (/bin/universe) 2>/dev/null)" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; + case `(/bin/universe) 2>/dev/null` in + att) GUESS=pyramid-pyramid-sysv3 ;; + *) GUESS=pyramid-pyramid-bsd ;; + esac + ;; NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; + GUESS=pyramid-pyramid-svr4 + ;; DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; + GUESS=sparc-icl-nx6 + ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) - case $(/usr/bin/uname -p) in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; + case `/usr/bin/uname -p` in + sparc) GUESS=sparc-icl-nx7 ;; + esac + ;; s390x:SunOS:*:*) - echo "$UNAME_MACHINE"-ibm-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL + ;; sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-hal-solaris2$SUN_REL + ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris2$SUN_REL + ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux"$UNAME_RELEASE" - exit ;; + GUESS=i386-pc-auroraux$UNAME_RELEASE + ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) set_cc_for_build SUN_ARCH=i386 @@ -405,47 +437,50 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # This test works for both compilers. if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi - echo "$SUN_ARCH"-pc-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$SUN_ARCH-pc-solaris2$SUN_REL + ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris3$SUN_REL + ;; sun4*:SunOS:*:*) - case "$(/usr/bin/arch -k)" in + case `/usr/bin/arch -k` in Series*|S4*) - UNAME_RELEASE=$(uname -v) + UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/')" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` + GUESS=sparc-sun-sunos$SUN_REL + ;; sun3*:SunOS:*:*) - echo m68k-sun-sunos"$UNAME_RELEASE" - exit ;; + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; sun*:*:4.2BSD:*) - UNAME_RELEASE=$( (sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 - case "$(/bin/arch)" in + case `/bin/arch` in sun3) - echo m68k-sun-sunos"$UNAME_RELEASE" + GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun4) - echo sparc-sun-sunos"$UNAME_RELEASE" + GUESS=sparc-sun-sunos$UNAME_RELEASE ;; esac - exit ;; + ;; aushp:SunOS:*:*) - echo sparc-auspex-sunos"$UNAME_RELEASE" - exit ;; + GUESS=sparc-auspex-sunos$UNAME_RELEASE + ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor @@ -455,41 +490,41 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-milan-mint$UNAME_RELEASE + ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-hades-mint$UNAME_RELEASE + ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-unknown-mint$UNAME_RELEASE + ;; m68k:machten:*:*) - echo m68k-apple-machten"$UNAME_RELEASE" - exit ;; + GUESS=m68k-apple-machten$UNAME_RELEASE + ;; powerpc:machten:*:*) - echo powerpc-apple-machten"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-apple-machten$UNAME_RELEASE + ;; RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; + GUESS=mips-dec-mach_bsd4.3 + ;; RISC*:ULTRIX:*:*) - echo mips-dec-ultrix"$UNAME_RELEASE" - exit ;; + GUESS=mips-dec-ultrix$UNAME_RELEASE + ;; VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix"$UNAME_RELEASE" - exit ;; + GUESS=vax-dec-ultrix$UNAME_RELEASE + ;; 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix"$UNAME_RELEASE" - exit ;; + GUESS=clipper-intergraph-clix$UNAME_RELEASE + ;; mips:*:*:UMIPS | mips:*:*:RISCos) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" @@ -514,78 +549,79 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && - dummyarg=$(echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p') && - SYSTEM_NAME=$("$dummy" "$dummyarg") && + dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos"$UNAME_RELEASE" - exit ;; + GUESS=mips-mips-riscos$UNAME_RELEASE + ;; Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; + GUESS=powerpc-motorola-powermax + ;; Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; + GUESS=powerpc-harris-powermax + ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; + GUESS=powerpc-harris-powermax + ;; Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; + GUESS=powerpc-harris-powerunix + ;; m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; + GUESS=m88k-harris-cxux7 + ;; m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; + GUESS=m88k-motorola-sysv4 + ;; m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; + GUESS=m88k-motorola-sysv3 + ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=$(/usr/bin/uname -p) + UNAME_PROCESSOR=`/usr/bin/uname -p` if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 then if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ test "$TARGET_BINARY_INTERFACE"x = x then - echo m88k-dg-dgux"$UNAME_RELEASE" + GUESS=m88k-dg-dgux$UNAME_RELEASE else - echo m88k-dg-dguxbcs"$UNAME_RELEASE" + GUESS=m88k-dg-dguxbcs$UNAME_RELEASE fi else - echo i586-dg-dgux"$UNAME_RELEASE" + GUESS=i586-dg-dgux$UNAME_RELEASE fi - exit ;; + ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; + GUESS=m88k-dolphin-sysv3 + ;; M88*:*:R3*:*) # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; + GUESS=m88k-motorola-sysv3 + ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; + GUESS=m88k-tektronix-sysv3 + ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; + GUESS=m68k-tektronix-bsd + ;; *:IRIX*:*:*) - echo mips-sgi-irix"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/g')" - exit ;; + IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` + GUESS=mips-sgi-irix$IRIX_REL + ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'$(uname -s)'" gives 'AIX ' + GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id + ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; + GUESS=i386-ibm-aix + ;; ia64:AIX:*:*) if test -x /usr/bin/oslevel ; then - IBM_REV=$(/usr/bin/oslevel) + IBM_REV=`/usr/bin/oslevel` else - IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi - echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" - exit ;; + GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV + ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then set_cc_for_build @@ -600,68 +636,68 @@ EOF exit(0); } EOF - if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy") + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then - echo "$SYSTEM_NAME" + GUESS=$SYSTEM_NAME else - echo rs6000-ibm-aix3.2.5 + GUESS=rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 + GUESS=rs6000-ibm-aix3.2.4 else - echo rs6000-ibm-aix3.2 + GUESS=rs6000-ibm-aix3.2 fi - exit ;; + ;; *:AIX:*:[4567]) - IBM_CPU_ID=$(/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }') + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if test -x /usr/bin/lslpp ; then - IBM_REV=$(/usr/bin/lslpp -Lqc bos.rte.libc | - awk -F: '{ print $3 }' | sed s/[0-9]*$/0/) + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else - IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi - echo "$IBM_ARCH"-ibm-aix"$IBM_REV" - exit ;; + GUESS=$IBM_ARCH-ibm-aix$IBM_REV + ;; *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; + GUESS=rs6000-ibm-aix + ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) - echo romp-ibm-bsd4.4 - exit ;; + GUESS=romp-ibm-bsd4.4 + ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 + GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to + ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; + GUESS=rs6000-bull-bosx + ;; DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; + GUESS=m68k-bull-sysv3 + ;; 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; + GUESS=m68k-hp-bsd + ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; + GUESS=m68k-hp-bsd4.4 + ;; 9000/[34678]??:HP-UX:*:*) - HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//') - case "$UNAME_MACHINE" in + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + case $UNAME_MACHINE in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if test -x /usr/bin/getconf; then - sc_cpu_version=$(/usr/bin/getconf SC_CPU_VERSION 2>/dev/null) - sc_kernel_bits=$(/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null) - case "$sc_cpu_version" in + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case $sc_cpu_version in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 - case "$sc_kernel_bits" in + case $sc_kernel_bits in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 @@ -703,7 +739,7 @@ EOF exit (0); } EOF - (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=$("$dummy") + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac @@ -728,12 +764,12 @@ EOF HP_ARCH=hppa64 fi fi - echo "$HP_ARCH"-hp-hpux"$HPUX_REV" - exit ;; + GUESS=$HP_ARCH-hp-hpux$HPUX_REV + ;; ia64:HP-UX:*:*) - HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//') - echo ia64-hp-hpux"$HPUX_REV" - exit ;; + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + GUESS=ia64-hp-hpux$HPUX_REV + ;; 3050*:HI-UX:*:*) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" @@ -761,38 +797,38 @@ EOF exit (0); } EOF - $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy") && + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; + GUESS=unknown-hitachi-hiuxwe2 + ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) - echo hppa1.1-hp-bsd - exit ;; + GUESS=hppa1.1-hp-bsd + ;; 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; + GUESS=hppa1.0-hp-bsd + ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; + GUESS=hppa1.0-hp-mpeix + ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) - echo hppa1.1-hp-osf - exit ;; + GUESS=hppa1.1-hp-osf + ;; hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; + GUESS=hppa1.0-hp-osf + ;; i*86:OSF1:*:*) if test -x /usr/sbin/sysversion ; then - echo "$UNAME_MACHINE"-unknown-osf1mk + GUESS=$UNAME_MACHINE-unknown-osf1mk else - echo "$UNAME_MACHINE"-unknown-osf1 + GUESS=$UNAME_MACHINE-unknown-osf1 fi - exit ;; + ;; parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; + GUESS=hppa1.1-hp-lites + ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; + GUESS=c1-convex-bsd + ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd @@ -800,17 +836,18 @@ EOF fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; + GUESS=c34-convex-bsd + ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; + GUESS=c38-convex-bsd + ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; + GUESS=c4-convex-bsd + ;; CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=ymp-cray-unicos$CRAY_REL + ;; CRAY*[A-Z]90:*:*:*) echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ @@ -818,114 +855,129 @@ EOF -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) - echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=t90-cray-unicos$CRAY_REL + ;; CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=alphaev5-cray-unicosmk$CRAY_REL + ;; CRAY*SV1:*:*:*) - echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=sv1-cray-unicos$CRAY_REL + ;; *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=craynv-cray-unicosmp$CRAY_REL + ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=$(uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz) - FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///') - FUJITSU_REL=$(echo "$UNAME_RELEASE" | sed -e 's/ /_/') - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` + GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///') - FUJITSU_REL=$(echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/') - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` + GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE + ;; sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=sparc-unknown-bsdi$UNAME_RELEASE + ;; *:BSD/OS:*:*) - echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE + ;; arm:FreeBSD:*:*) - UNAME_PROCESSOR=$(uname -p) + UNAME_PROCESSOR=`uname -p` set_cc_for_build if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabi + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi else - echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabihf + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf fi - exit ;; + ;; *:FreeBSD:*:*) - UNAME_PROCESSOR=$(/usr/bin/uname -p) - case "$UNAME_PROCESSOR" in + UNAME_PROCESSOR=`/usr/bin/uname -p` + case $UNAME_PROCESSOR in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac - echo "$UNAME_PROCESSOR"-unknown-freebsd"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')" - exit ;; + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL + ;; i*:CYGWIN*:*) - echo "$UNAME_MACHINE"-pc-cygwin - exit ;; + GUESS=$UNAME_MACHINE-pc-cygwin + ;; *:MINGW64*:*) - echo "$UNAME_MACHINE"-pc-mingw64 - exit ;; + GUESS=$UNAME_MACHINE-pc-mingw64 + ;; *:MINGW*:*) - echo "$UNAME_MACHINE"-pc-mingw32 - exit ;; + GUESS=$UNAME_MACHINE-pc-mingw32 + ;; *:MSYS*:*) - echo "$UNAME_MACHINE"-pc-msys - exit ;; + GUESS=$UNAME_MACHINE-pc-msys + ;; i*:PW*:*) - echo "$UNAME_MACHINE"-pc-pw32 - exit ;; + GUESS=$UNAME_MACHINE-pc-pw32 + ;; + *:SerenityOS:*:*) + GUESS=$UNAME_MACHINE-pc-serenity + ;; *:Interix*:*) - case "$UNAME_MACHINE" in + case $UNAME_MACHINE in x86) - echo i586-pc-interix"$UNAME_RELEASE" - exit ;; + GUESS=i586-pc-interix$UNAME_RELEASE + ;; authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix"$UNAME_RELEASE" - exit ;; + GUESS=x86_64-unknown-interix$UNAME_RELEASE + ;; IA64) - echo ia64-unknown-interix"$UNAME_RELEASE" - exit ;; + GUESS=ia64-unknown-interix$UNAME_RELEASE + ;; esac ;; i*:UWIN*:*) - echo "$UNAME_MACHINE"-pc-uwin - exit ;; + GUESS=$UNAME_MACHINE-pc-uwin + ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-pc-cygwin - exit ;; + GUESS=x86_64-pc-cygwin + ;; prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=powerpcle-unknown-solaris2$SUN_REL + ;; *:GNU:*:*) # the GNU system - echo "$(echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,')-unknown-$LIBC$(echo "$UNAME_RELEASE"|sed -e 's,/.*$,,')" - exit ;; + GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` + GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL + ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo "$UNAME_MACHINE-unknown-$(echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]")$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')-$LIBC" - exit ;; + GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC + ;; *:Minix:*:*) - echo "$UNAME_MACHINE"-unknown-minix - exit ;; + GUESS=$UNAME_MACHINE-unknown-minix + ;; aarch64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; alpha:Linux:*:*) - case $(sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null) in + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; @@ -936,60 +988,63 @@ EOF esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; - arc:Linux:*:* | arceb:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; arm*:Linux:*:*) set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi else - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf fi fi - exit ;; + ;; avr32*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; cris:Linux:*:*) - echo "$UNAME_MACHINE"-axis-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; crisv32:Linux:*:*) - echo "$UNAME_MACHINE"-axis-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; e2k:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; frv:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; hexagon:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; i*86:Linux:*:*) - echo "$UNAME_MACHINE"-pc-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-pc-linux-$LIBC + ;; ia64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; k1om:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; m32r*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; m68*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; mips:Linux:*:* | mips64:Linux:*:*) set_cc_for_build IS_GLIBC=0 @@ -1034,65 +1089,66 @@ EOF #endif #endif EOF - eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI')" + cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` + eval "$cc_set_vars" test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; mips64el:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; openrisc*:Linux:*:*) - echo or1k-unknown-linux-"$LIBC" - exit ;; + GUESS=or1k-unknown-linux-$LIBC + ;; or32:Linux:*:* | or1k*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; padre:Linux:*:*) - echo sparc-unknown-linux-"$LIBC" - exit ;; + GUESS=sparc-unknown-linux-$LIBC + ;; parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-"$LIBC" - exit ;; + GUESS=hppa64-unknown-linux-$LIBC + ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level - case $(grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2) in - PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; - PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; - *) echo hppa-unknown-linux-"$LIBC" ;; + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; + PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; + *) GUESS=hppa-unknown-linux-$LIBC ;; esac - exit ;; + ;; ppc64:Linux:*:*) - echo powerpc64-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc64-unknown-linux-$LIBC + ;; ppc:Linux:*:*) - echo powerpc-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc-unknown-linux-$LIBC + ;; ppc64le:Linux:*:*) - echo powerpc64le-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc64le-unknown-linux-$LIBC + ;; ppcle:Linux:*:*) - echo powerpcle-unknown-linux-"$LIBC" - exit ;; - riscv32:Linux:*:* | riscv64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpcle-unknown-linux-$LIBC + ;; + riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; s390:Linux:*:* | s390x:Linux:*:*) - echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-ibm-linux-$LIBC + ;; sh64*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; sh*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; sparc:Linux:*:* | sparc64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; tile*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; vax:Linux:*:*) - echo "$UNAME_MACHINE"-dec-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-dec-linux-$LIBC + ;; x86_64:Linux:*:*) set_cc_for_build LIBCABI=$LIBC @@ -1101,71 +1157,71 @@ EOF (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_X32 >/dev/null then - LIBCABI="$LIBC"x32 + LIBCABI=${LIBC}x32 fi fi - echo "$UNAME_MACHINE"-pc-linux-"$LIBCABI" - exit ;; + GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI + ;; xtensa*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; + GUESS=i386-sequent-sysv4 + ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. - echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" - exit ;; + GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION + ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. - echo "$UNAME_MACHINE"-pc-os2-emx - exit ;; + GUESS=$UNAME_MACHINE-pc-os2-emx + ;; i*86:XTS-300:*:STOP) - echo "$UNAME_MACHINE"-unknown-stop - exit ;; + GUESS=$UNAME_MACHINE-unknown-stop + ;; i*86:atheos:*:*) - echo "$UNAME_MACHINE"-unknown-atheos - exit ;; + GUESS=$UNAME_MACHINE-unknown-atheos + ;; i*86:syllable:*:*) - echo "$UNAME_MACHINE"-pc-syllable - exit ;; + GUESS=$UNAME_MACHINE-pc-syllable + ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=i386-unknown-lynxos$UNAME_RELEASE + ;; i*86:*DOS:*:*) - echo "$UNAME_MACHINE"-pc-msdosdjgpp - exit ;; + GUESS=$UNAME_MACHINE-pc-msdosdjgpp + ;; i*86:*:4.*:*) - UNAME_REL=$(echo "$UNAME_RELEASE" | sed 's/\/MP$//') + UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" + GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL else - echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" + GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL fi - exit ;; + ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. - case $(/bin/uname -X | grep "^Machine") in + case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac - echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}" - exit ;; + GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then - UNAME_REL=$(sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=$( (/bin/uname -X|grep Release|sed -e 's/.*= //')) + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 @@ -1173,11 +1229,11 @@ EOF && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 - echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" + GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL else - echo "$UNAME_MACHINE"-pc-sysv32 + GUESS=$UNAME_MACHINE-pc-sysv32 fi - exit ;; + ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about @@ -1185,37 +1241,37 @@ EOF # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; + GUESS=i586-pc-msdosdjgpp + ;; Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; + GUESS=i386-pc-mach3 + ;; paragon:*:*:*) - echo i860-intel-osf1 - exit ;; + GUESS=i860-intel-osf1 + ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 + GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 + GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 fi - exit ;; + ;; mini*:CTIX:SYS*5:*) # "miniframe" - echo m68010-convergent-sysv - exit ;; + GUESS=m68010-convergent-sysv + ;; mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; + GUESS=m68k-convergent-sysv + ;; M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; + GUESS=m68k-diab-dnix + ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ - && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid) + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ @@ -1226,7 +1282,7 @@ EOF NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ - && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid) + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ @@ -1234,118 +1290,118 @@ EOF /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=m68k-unknown-lynxos$UNAME_RELEASE + ;; mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; + GUESS=m68k-atari-sysv4 + ;; TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=sparc-unknown-lynxos$UNAME_RELEASE + ;; rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=rs6000-unknown-lynxos$UNAME_RELEASE + ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-unknown-lynxos$UNAME_RELEASE + ;; SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv"$UNAME_RELEASE" - exit ;; + GUESS=mips-dde-sysv$UNAME_RELEASE + ;; RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; + GUESS=mips-sni-sysv4 + ;; RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; + GUESS=mips-sni-sysv4 + ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=$( (uname -p) 2>/dev/null) - echo "$UNAME_MACHINE"-sni-sysv4 + UNAME_MACHINE=`(uname -p) 2>/dev/null` + GUESS=$UNAME_MACHINE-sni-sysv4 else - echo ns32k-sni-sysv + GUESS=ns32k-sni-sysv fi - exit ;; + ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says - echo i586-unisys-sysv4 - exit ;; + GUESS=i586-unisys-sysv4 + ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; + GUESS=hppa1.1-stratus-sysv4 + ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; + GUESS=i860-stratus-sysv4 + ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. - echo "$UNAME_MACHINE"-stratus-vos - exit ;; + GUESS=$UNAME_MACHINE-stratus-vos + ;; *:VOS:*:*) # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; + GUESS=hppa1.1-stratus-vos + ;; mc68*:A/UX:*:*) - echo m68k-apple-aux"$UNAME_RELEASE" - exit ;; + GUESS=m68k-apple-aux$UNAME_RELEASE + ;; news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; + GUESS=mips-sony-newsos6 + ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if test -d /usr/nec; then - echo mips-nec-sysv"$UNAME_RELEASE" + GUESS=mips-nec-sysv$UNAME_RELEASE else - echo mips-unknown-sysv"$UNAME_RELEASE" + GUESS=mips-unknown-sysv$UNAME_RELEASE fi - exit ;; + ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; + GUESS=powerpc-be-beos + ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; + GUESS=powerpc-apple-beos + ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; + GUESS=i586-pc-beos + ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; + GUESS=i586-pc-haiku + ;; x86_64:Haiku:*:*) - echo x86_64-unknown-haiku - exit ;; + GUESS=x86_64-unknown-haiku + ;; SX-4:SUPER-UX:*:*) - echo sx4-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx4-nec-superux$UNAME_RELEASE + ;; SX-5:SUPER-UX:*:*) - echo sx5-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx5-nec-superux$UNAME_RELEASE + ;; SX-6:SUPER-UX:*:*) - echo sx6-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx6-nec-superux$UNAME_RELEASE + ;; SX-7:SUPER-UX:*:*) - echo sx7-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx7-nec-superux$UNAME_RELEASE + ;; SX-8:SUPER-UX:*:*) - echo sx8-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx8-nec-superux$UNAME_RELEASE + ;; SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx8r-nec-superux$UNAME_RELEASE + ;; SX-ACE:SUPER-UX:*:*) - echo sxace-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sxace-nec-superux$UNAME_RELEASE + ;; Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-apple-rhapsody$UNAME_RELEASE + ;; *:Rhapsody:*:*) - echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE + ;; arm64:Darwin:*:*) - echo aarch64-apple-darwin"$UNAME_RELEASE" - exit ;; + GUESS=aarch64-apple-darwin$UNAME_RELEASE + ;; *:Darwin:*:*) - UNAME_PROCESSOR=$(uname -p) + UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac @@ -1379,109 +1435,119 @@ EOF # uname -m returns i386 or x86_64 UNAME_PROCESSOR=$UNAME_MACHINE fi - echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE + ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=$(uname -p) + UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi - echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE + ;; *:QNX:*:4*) - echo i386-pc-qnx - exit ;; + GUESS=i386-pc-qnx + ;; NEO-*:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=neo-tandem-nsk$UNAME_RELEASE + ;; NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nse-tandem-nsk$UNAME_RELEASE + ;; NSR-*:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsr-tandem-nsk$UNAME_RELEASE + ;; NSV-*:NONSTOP_KERNEL:*:*) - echo nsv-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsv-tandem-nsk$UNAME_RELEASE + ;; NSX-*:NONSTOP_KERNEL:*:*) - echo nsx-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsx-tandem-nsk$UNAME_RELEASE + ;; *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; + GUESS=mips-compaq-nonstopux + ;; BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; + GUESS=bs2000-siemens-sysv + ;; DS/*:UNIX_System_V:*:*) - echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE + ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - # shellcheck disable=SC2154 - if test "$cputype" = 386; then + if test "${cputype-}" = 386; then UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" + elif test "x${cputype-}" != x; then + UNAME_MACHINE=$cputype fi - echo "$UNAME_MACHINE"-unknown-plan9 - exit ;; + GUESS=$UNAME_MACHINE-unknown-plan9 + ;; *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; + GUESS=pdp10-unknown-tops10 + ;; *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; + GUESS=pdp10-unknown-tenex + ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; + GUESS=pdp10-dec-tops20 + ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; + GUESS=pdp10-xkl-tops20 + ;; *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; + GUESS=pdp10-unknown-tops20 + ;; *:ITS:*:*) - echo pdp10-unknown-its - exit ;; + GUESS=pdp10-unknown-its + ;; SEI:*:*:SEIUX) - echo mips-sei-seiux"$UNAME_RELEASE" - exit ;; + GUESS=mips-sei-seiux$UNAME_RELEASE + ;; *:DragonFly:*:*) - echo "$UNAME_MACHINE"-unknown-dragonfly"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')" - exit ;; + DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL + ;; *:*VMS:*:*) - UNAME_MACHINE=$( (uname -p) 2>/dev/null) - case "$UNAME_MACHINE" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case $UNAME_MACHINE in + A*) GUESS=alpha-dec-vms ;; + I*) GUESS=ia64-dec-vms ;; + V*) GUESS=vax-dec-vms ;; esac ;; *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; + GUESS=i386-pc-xenix + ;; i*86:skyos:*:*) - echo "$UNAME_MACHINE"-pc-skyos"$(echo "$UNAME_RELEASE" | sed -e 's/ .*$//')" - exit ;; + SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` + GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL + ;; i*86:rdos:*:*) - echo "$UNAME_MACHINE"-pc-rdos - exit ;; - i*86:AROS:*:*) - echo "$UNAME_MACHINE"-pc-aros - exit ;; + GUESS=$UNAME_MACHINE-pc-rdos + ;; + i*86:Fiwix:*:*) + GUESS=$UNAME_MACHINE-pc-fiwix + ;; + *:AROS:*:*) + GUESS=$UNAME_MACHINE-unknown-aros + ;; x86_64:VMkernel:*:*) - echo "$UNAME_MACHINE"-unknown-esx - exit ;; + GUESS=$UNAME_MACHINE-unknown-esx + ;; amd64:Isilon\ OneFS:*:*) - echo x86_64-unknown-onefs - exit ;; + GUESS=x86_64-unknown-onefs + ;; *:Unleashed:*:*) - echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE + ;; esac +# Do we have a guess based on uname results? +if test "x$GUESS" != x; then + echo "$GUESS" + exit +fi + # No uname command or uname output not recognized. set_cc_for_build cat > "$dummy.c" </dev/null); + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else @@ -1613,7 +1679,7 @@ main () } EOF -$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=$($dummy) && +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. @@ -1621,7 +1687,7 @@ test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } echo "$0: unable to guess system type" >&2 -case "$UNAME_MACHINE:$UNAME_SYSTEM" in +case $UNAME_MACHINE:$UNAME_SYSTEM in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <&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) +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` -/usr/bin/uname -p = $( (/usr/bin/uname -p) 2>/dev/null) -/bin/uname -X = $( (/bin/uname -X) 2>/dev/null) +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` -hostinfo = $( (hostinfo) 2>/dev/null) -/bin/universe = $( (/bin/universe) 2>/dev/null) -/usr/bin/arch -k = $( (/usr/bin/arch -k) 2>/dev/null) -/bin/arch = $( (/bin/arch) 2>/dev/null) -/usr/bin/oslevel = $( (/usr/bin/oslevel) 2>/dev/null) -/usr/convex/getsysinfo = $( (/usr/convex/getsysinfo) 2>/dev/null) +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = "$UNAME_MACHINE" UNAME_RELEASE = "$UNAME_RELEASE" diff --git a/support/config.rpath b/support/config.rpath old mode 100755 new mode 100644 diff --git a/support/config.sub b/support/config.sub old mode 100755 new mode 100644 index c874b7a..9b62e37 --- a/support/config.sub +++ b/support/config.sub @@ -1,12 +1,14 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2020 Free Software Foundation, Inc. +# Copyright 1992-2021 Free Software Foundation, Inc. -timestamp='2020-11-07' +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2021-12-25' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or +# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but @@ -33,7 +35,7 @@ timestamp='2020-11-07' # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: -# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub +# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases @@ -50,7 +52,14 @@ timestamp='2020-11-07' # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. -me=$(echo "$0" | sed -e 's,.*/,,') +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + +me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS @@ -67,7 +76,7 @@ Report bugs and patches to ." version="\ GNU config.sub ($timestamp) -Copyright 1992-2020 Free Software Foundation, Inc. +Copyright 1992-2021 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -112,9 +121,11 @@ esac # Split fields of configuration type # shellcheck disable=SC2162 +saved_IFS=$IFS IFS="-" read field1 field2 field3 field4 <&2 @@ -1749,6 +1784,8 @@ case $kernel-$os in ;; kfreebsd*-gnu* | kopensolaris*-gnu*) ;; + vxworks-simlinux | vxworks-simwindows | vxworks-spe) + ;; nto-qnx*) ;; os2-emx) diff --git a/support/install.sh b/support/install.sh old mode 100755 new mode 100644 diff --git a/support/mkdirs b/support/mkdirs old mode 100755 new mode 100644 diff --git a/support/mkdist b/support/mkdist old mode 100755 new mode 100644 index 282431d..463bdc1 --- a/support/mkdist +++ b/support/mkdist @@ -78,7 +78,7 @@ fi dirmode=755 filmode=644 -while read fname type mode +while read fname type mode rest do [ -z "$fname" ] && continue @@ -89,13 +89,24 @@ do case "$type" in d) mkdir $newdir/$fname ;; f) cp -p $SRCDIR/$fname $newdir/$fname ;; + F) cp $SRCDIR/$fname $newdir/$fname ;; s) ln -s $mode $newdir/$fname ; mode= ;; # symlink l) ln $mode $newdir/$fname ; mode= ;; # hard link + c) cp $SRCDIR/$mode $newdir/$fname ; mode=$filmode ;; # copy to new name *) echo "unknown file type $type" 1>&2 ;; esac + # allow trailing comments + case "$mode" in + \#*) mode= ;; + esac + if [ -n "$mode" ]; then chmod $mode $newdir/$fname + elif [ "$type" = "f" ]; then + chmod $filmode $newdir/$fname + elif [ "$type" = "d" ]; then + chmod $dirmode $newdir/$fname fi done < $MANIFEST diff --git a/support/mkinstalldirs b/support/mkinstalldirs old mode 100755 new mode 100644 diff --git a/support/shlib-install b/support/shlib-install old mode 100755 new mode 100644 diff --git a/support/shobj-conf b/support/shobj-conf index 5a3f977..cd7634d 100644 --- a/support/shobj-conf +++ b/support/shobj-conf @@ -10,7 +10,7 @@ # Chet Ramey # chet@po.cwru.edu -# Copyright (C) 1996-2019 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is part of GNU Bash, the Bourne Again SHell. # @@ -123,7 +123,7 @@ sunos5*|solaris2*) ;; # All versions of Linux (including Gentoo/FreeBSD) or the semi-mythical GNU Hurd. -linux*-*|gnu*-*|k*bsd*-gnu-*|freebsd*|dragonfly*) +linux*-*|gnu*-*|k*bsd*-gnu-*|midnightbsd*|freebsd*|dragonfly*) SHOBJ_CFLAGS=-fPIC SHOBJ_LD='${CC}' SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' @@ -151,13 +151,13 @@ darwin*) darwin[1-7].*) SHOBJ_STATUS=unsupported SHOBJ_LDFLAGS='-dynamic' - SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -v' + SHLIB_XLDFLAGS='-install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -v' ;; # Darwin 8 == Mac OS X 10.4; Mac OS X 10.N == Darwin N+4 *) case "${host_os}" in darwin[89]*|darwin1[012]*) - SHOBJ_ARCHFLAGS='-arch_only `/usr/bin/arch`' + SHOBJ_ARCHFLAGS= ;; *) # Mac OS X 10.9 (Mavericks) and later SHOBJ_ARCHFLAGS= @@ -241,8 +241,8 @@ osf*) aix4.[2-9]*-*gcc*|aix[5-9].*-*gcc*) # lightly tested by jik@cisco.com SHOBJ_CFLAGS=-fpic - SHOBJ_LD='ld' - SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall' + SHOBJ_LD='${CC}' + SHOBJ_LDFLAGS='-Wl,-bdynamic -Wl,-bnoentry -Wl,-bexpall' SHOBJ_XLDFLAGS='-G' SHLIB_XLDFLAGS='-bM:SRE' diff --git a/terminal.c b/terminal.c index 05415dc..9997161 100644 --- a/terminal.c +++ b/terminal.c @@ -1,6 +1,6 @@ /* terminal.c -- controlling the terminal with termcap. */ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. +/* Copyright (C) 1996-2022 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -73,11 +73,11 @@ # include # include -static void _win_get_screensize PARAMS((int *, int *)); +static void _win_get_screensize (int *, int *); #endif #if defined (__EMX__) -static void _emx_get_screensize PARAMS((int *, int *)); +static void _emx_get_screensize (int *, int *); #endif /* If the calling application sets this to a non-zero value, readline will @@ -177,10 +177,19 @@ static char *_rl_term_kD; /* Insert key */ static char *_rl_term_kI; +/* Page up and page down keys */ +static char *_rl_term_kP; +static char *_rl_term_kN; + /* Cursor control */ static char *_rl_term_vs; /* very visible */ static char *_rl_term_ve; /* normal */ +/* User-settable color sequences to begin and end the active region. Defaults + are rl_term_so and rl_term_se on non-dumb terminals. */ +char *_rl_active_region_start_color = NULL; +char *_rl_active_region_end_color = NULL; + /* It's not clear how HPUX is so broken here. */ #ifdef TGETENT_BROKEN # define TGETENT_SUCCESS 0 @@ -194,7 +203,7 @@ static char *_rl_term_ve; /* normal */ #endif #define TGETFLAG(cap) (tgetflag (cap) == TGETFLAG_SUCCESS) -static void bind_termcap_arrow_keys PARAMS((Keymap)); +static void bind_termcap_arrow_keys (Keymap); /* Variables that hold the screen dimensions, used by the display code. */ int _rl_screenwidth, _rl_screenheight, _rl_screenchars; @@ -382,8 +391,12 @@ _rl_sigwinch_resize_terminal (void) void rl_resize_terminal (void) { + int width, height; + + width = _rl_screenwidth; + height = _rl_screenheight; _rl_get_screen_size (fileno (rl_instream), 1); - if (_rl_echoing_p) + if (_rl_echoing_p && (width != _rl_screenwidth || height != _rl_screenheight)) { if (CUSTOM_REDISPLAY_FUNC ()) rl_forced_update_display (); @@ -415,6 +428,8 @@ static const struct _tc_string tc_strings[] = { "kD", &_rl_term_kD }, /* delete */ { "kH", &_rl_term_kH }, /* home down ?? */ { "kI", &_rl_term_kI }, /* insert */ + { "kN", &_rl_term_kN }, /* page down */ + { "kP", &_rl_term_kP }, /* page up */ { "kd", &_rl_term_kd }, { "ke", &_rl_term_ke }, /* end keypad mode */ { "kh", &_rl_term_kh }, /* home */ @@ -456,7 +471,7 @@ _rl_init_terminal_io (const char *terminal_name) { const char *term; char *buffer; - int tty, tgetent_ret, dumbterm; + int tty, tgetent_ret, dumbterm, reset_region_colors; term = terminal_name ? terminal_name : sh_get_env_value ("TERM"); _rl_term_clrpag = _rl_term_cr = _rl_term_clreol = _rl_term_clrscroll = (char *)NULL; @@ -467,6 +482,8 @@ _rl_init_terminal_io (const char *terminal_name) dumbterm = STREQ (term, "dumb"); + reset_region_colors = 1; + #ifdef __MSDOS__ _rl_term_im = _rl_term_ei = _rl_term_ic = _rl_term_IC = (char *)NULL; _rl_term_up = _rl_term_dc = _rl_term_DC = _rl_visible_bell = (char *)NULL; @@ -478,6 +495,7 @@ _rl_init_terminal_io (const char *terminal_name) _rl_term_goto = _rl_term_pc = _rl_term_ip = (char *)NULL; _rl_term_ks = _rl_term_ke =_rl_term_vs = _rl_term_ve = (char *)NULL; _rl_term_kh = _rl_term_kH = _rl_term_at7 = _rl_term_kI = (char *)NULL; + _rl_term_kN = _rl_term_kP = (char *)NULL; _rl_term_so = _rl_term_se = (char *)NULL; #if defined(HACK_TERMCAP_MOTION) _rl_term_forward_char = (char *)NULL; @@ -540,6 +558,7 @@ _rl_init_terminal_io (const char *terminal_name) _rl_term_ku = _rl_term_kd = _rl_term_kl = _rl_term_kr = (char *)NULL; _rl_term_kh = _rl_term_kH = _rl_term_kI = _rl_term_kD = (char *)NULL; _rl_term_ks = _rl_term_ke = _rl_term_at7 = (char *)NULL; + _rl_term_kN = _rl_term_kP = (char *)NULL; _rl_term_mm = _rl_term_mo = (char *)NULL; _rl_term_ve = _rl_term_vs = (char *)NULL; _rl_term_forward_char = (char *)NULL; @@ -550,6 +569,11 @@ _rl_init_terminal_io (const char *terminal_name) escape sequences */ _rl_enable_bracketed_paste = 0; + /* No terminal so/se capabilities. */ + _rl_enable_active_region = 0; + _rl_reset_region_color (0, NULL); + _rl_reset_region_color (1, NULL); + /* Reasonable defaults for tgoto(). Readline currently only uses tgoto if _rl_term_IC or _rl_term_DC is defined, but just in case we change that later... */ @@ -604,8 +628,14 @@ _rl_init_terminal_io (const char *terminal_name) /* There's no way to determine whether or not a given terminal supports bracketed paste mode, so we assume a terminal named "dumb" does not. */ if (dumbterm) - _rl_enable_bracketed_paste = 0; - + _rl_enable_bracketed_paste = _rl_enable_active_region = 0; + + if (reset_region_colors) + { + _rl_reset_region_color (0, _rl_term_so); + _rl_reset_region_color (1, _rl_term_se); + } + return 0; } @@ -629,6 +659,9 @@ bind_termcap_arrow_keys (Keymap map) rl_bind_keyseq_if_unbound (_rl_term_kD, rl_delete); rl_bind_keyseq_if_unbound (_rl_term_kI, rl_overwrite_mode); /* Insert */ + rl_bind_keyseq_if_unbound (_rl_term_kN, rl_history_search_forward); /* Page Down */ + rl_bind_keyseq_if_unbound (_rl_term_kP, rl_history_search_backward); /* Page Up */ + _rl_keymap = xkeymap; } @@ -774,6 +807,67 @@ _rl_standout_off (void) #endif } +/* **************************************************************** */ +/* */ +/* Controlling color for a portion of the line */ +/* */ +/* **************************************************************** */ + +/* Reset the region color variables to VALUE depending on WHICH (0 == start, + 1 == end). This is where all the memory allocation for the color variable + strings is performed. We might want to pass a flag saying whether or not + to translate VALUE like a key sequence, but it doesn't really matter. */ +int +_rl_reset_region_color (int which, const char *value) +{ + int len; + + if (which == 0) + { + xfree (_rl_active_region_start_color); + if (value && *value) + { + _rl_active_region_start_color = (char *)xmalloc (2 * strlen (value) + 1); + rl_translate_keyseq (value, _rl_active_region_start_color, &len); + _rl_active_region_start_color[len] = '\0'; + } + else + _rl_active_region_start_color = NULL; + } + else + { + xfree (_rl_active_region_end_color); + if (value && *value) + { + _rl_active_region_end_color = (char *)xmalloc (2 * strlen (value) + 1); + rl_translate_keyseq (value, _rl_active_region_end_color, &len); + _rl_active_region_end_color[len] = '\0'; + } + else + _rl_active_region_end_color = NULL; + } + + return 0; +} + +void +_rl_region_color_on (void) +{ +#ifndef __MSDOS__ + if (_rl_active_region_start_color && _rl_active_region_end_color) + tputs (_rl_active_region_start_color, 1, _rl_output_character_function); +#endif +} + +void +_rl_region_color_off (void) +{ +#ifndef __MSDOS__ + if (_rl_active_region_start_color && _rl_active_region_end_color) + tputs (_rl_active_region_end_color, 1, _rl_output_character_function); +#endif +} + /* **************************************************************** */ /* */ /* Controlling the Meta Key and Keypad */ diff --git a/text.c b/text.c index 2567dea..91c3f33 100644 --- a/text.c +++ b/text.c @@ -1,6 +1,6 @@ /* text.c -- text handling commands for readline. */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -59,12 +59,12 @@ #include "xmalloc.h" /* Forward declarations. */ -static int rl_change_case PARAMS((int, int)); -static int _rl_char_search PARAMS((int, int, int)); +static int rl_change_case (int, int); +static int _rl_char_search (int, int, int); #if defined (READLINE_CALLBACKS) -static int _rl_insert_next_callback PARAMS((_rl_callback_generic_arg *)); -static int _rl_char_search_callback PARAMS((_rl_callback_generic_arg *)); +static int _rl_insert_next_callback (_rl_callback_generic_arg *); +static int _rl_char_search_callback (_rl_callback_generic_arg *); #endif /* The largest chunk of text that can be inserted in one call to @@ -96,6 +96,7 @@ rl_insert_text (const char *string) for (i = rl_end; i >= rl_point; i--) rl_line_buffer[i + l] = rl_line_buffer[i]; + strncpy (rl_line_buffer + rl_point, string, l); /* Remember how to undo this if we aren't undoing something. */ @@ -735,7 +736,7 @@ _rl_insert_char (int count, int c) } else { - wchar_t wc; + WCHAR_T wc; size_t ret; if (stored_count <= 0) @@ -745,7 +746,7 @@ _rl_insert_char (int count, int c) ps_back = ps; pending_bytes[pending_bytes_length++] = c; - ret = mbrtowc (&wc, pending_bytes, pending_bytes_length, &ps); + ret = MBRTOWC (&wc, pending_bytes, pending_bytes_length, &ps); if (ret == (size_t)-2) { @@ -919,8 +920,11 @@ _rl_overwrite_char (int count, int c) int k; /* Read an entire multibyte character sequence to insert COUNT times. */ + k = 1; if (count > 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0) k = _rl_read_mbstring (c, mbkey, MB_LEN_MAX); + if (k < 0) + return 1; #endif rl_begin_undo_group (); @@ -1132,7 +1136,7 @@ rl_newline (int count, int key) int rl_do_lowercase_version (int ignore1, int ignore2) { - return 0; + return 99999; /* prevent from being combined with _rl_null_function */ } /* This is different from what vi does, so the code's not shared. Emacs @@ -1401,9 +1405,9 @@ rl_change_case (int count, int op) { int start, next, end; int inword, nc, nop; - wchar_t c; + WCHAR_T c; #if defined (HANDLE_MULTIBYTE) - wchar_t wc, nwc; + WCHAR_T wc, nwc; char mb[MB_LEN_MAX+1]; int mlen; size_t m; @@ -1462,9 +1466,9 @@ rl_change_case (int count, int op) #if defined (HANDLE_MULTIBYTE) else { - m = mbrtowc (&wc, rl_line_buffer + start, end - start, &mps); + m = MBRTOWC (&wc, rl_line_buffer + start, end - start, &mps); if (MB_INVALIDCH (m)) - wc = (wchar_t)rl_line_buffer[start]; + wc = (WCHAR_T)rl_line_buffer[start]; else if (MB_NULLWCH (m)) wc = L'\0'; nwc = (nop == UpCase) ? _rl_to_wupper (wc) : _rl_to_wlower (wc); @@ -1474,12 +1478,12 @@ rl_change_case (int count, int op) mbstate_t ts; memset (&ts, 0, sizeof (mbstate_t)); - mlen = wcrtomb (mb, nwc, &ts); + mlen = WCRTOMB (mb, nwc, &ts); if (mlen < 0) { nwc = wc; memset (&ts, 0, sizeof (mbstate_t)); - mlen = wcrtomb (mb, nwc, &ts); + mlen = WCRTOMB (mb, nwc, &ts); if (mlen < 0) /* should not happen */ strncpy (mb, rl_line_buffer + start, mlen = m); } @@ -1536,7 +1540,10 @@ rl_transpose_words (int count, int key) { char *word1, *word2; int w1_beg, w1_end, w2_beg, w2_end; - int orig_point = rl_point; + int orig_point, orig_end; + + orig_point = rl_point; + orig_end = rl_end; if (!count) return 0; @@ -1580,6 +1587,7 @@ rl_transpose_words (int count, int key) /* This is exactly correct since the text before this point has not changed in length. */ rl_point = w2_end; + rl_end = orig_end; /* just make sure */ /* I think that does it. */ rl_end_undo_group (); diff --git a/tilde.h b/tilde.h index e26dd04..bc8022a 100644 --- a/tilde.h +++ b/tilde.h @@ -1,6 +1,6 @@ /* tilde.h: Externally available variables and function in libtilde.a. */ -/* Copyright (C) 1992-2009 Free Software Foundation, Inc. +/* Copyright (C) 1992-2009,2021 Free Software Foundation, Inc. This file contains the Readline Library (Readline), a set of routines for providing Emacs style line input to programs that ask @@ -27,19 +27,7 @@ extern "C" { #endif -/* A function can be defined using prototypes and compile on both ANSI C - and traditional C compilers with something like this: - extern char *func PARAMS((char *, char *, int)); */ - -#if !defined (PARAMS) -# if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus) -# define PARAMS(protos) protos -# else -# define PARAMS(protos) () -# endif -#endif - -typedef char *tilde_hook_func_t PARAMS((char *)); +typedef char *tilde_hook_func_t (char *); /* If non-null, this contains the address of a function that the application wants called before trying the standard tilde expansions. The function @@ -64,14 +52,14 @@ extern char **tilde_additional_prefixes; extern char **tilde_additional_suffixes; /* Return a new string which is the result of tilde expanding STRING. */ -extern char *tilde_expand PARAMS((const char *)); +extern char *tilde_expand (const char *); /* Do the work of tilde expansion on FILENAME. FILENAME starts with a tilde. If there is no expansion, call tilde_expansion_failure_hook. */ -extern char *tilde_expand_word PARAMS((const char *)); +extern char *tilde_expand_word (const char *); /* Find the portion of the string beginning with ~ that should be expanded. */ -extern char *tilde_find_word PARAMS((const char *, int, int *)); +extern char *tilde_find_word (const char *, int, int *); #ifdef __cplusplus } diff --git a/undo.c b/undo.c index 1479991..e4c457d 100644 --- a/undo.c +++ b/undo.c @@ -1,6 +1,6 @@ /* undo.c - manage list of changes to lines, offering opportunity to undo them */ -/* Copyright (C) 1987-2017 Free Software Foundation, Inc. +/* Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -49,9 +49,7 @@ #include "rlprivate.h" #include "xmalloc.h" -extern void _hs_replace_history_data PARAMS((int, histdata_t *, histdata_t *)); - -extern HIST_ENTRY *_rl_saved_line_for_history; +#include "histlib.h" /* Non-zero tells rl_delete_text and rl_insert_text to not add to the undo list. */ diff --git a/util.c b/util.c index 1576b55..2e986db 100644 --- a/util.c +++ b/util.c @@ -72,7 +72,7 @@ static const char * const pathname_alphabetic_chars = "/-_=~.#$"; int rl_alphabetic (int c) { - if (ALPHABETIC (c)) + if (_rl_alphabetic_p (c)) return (1); return (_rl_allow_pathname_alphabetic_chars && @@ -81,7 +81,7 @@ rl_alphabetic (int c) #if defined (HANDLE_MULTIBYTE) int -_rl_walphabetic (wchar_t wc) +_rl_walphabetic (WCHAR_T wc) { int c; @@ -98,7 +98,8 @@ _rl_walphabetic (wchar_t wc) int _rl_abort_internal (void) { - rl_ding (); + if (RL_ISSTATE (RL_STATE_TIMEOUT) == 0) + rl_ding (); /* Don't ring the bell on a timeout */ rl_clear_message (); _rl_reset_argument (); rl_clear_pending_input (); diff --git a/vi_mode.c b/vi_mode.c index 742341e..3a033ba 100644 --- a/vi_mode.c +++ b/vi_mode.c @@ -1,7 +1,7 @@ /* vi_mode.c -- A vi emulation mode for Bash. Derived from code written by Jeff Sparkes (jsparkes@bnr.ca). */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -124,44 +124,44 @@ static const char * const vi_textmod = "_*\\AaIiCcDdPpYyRrSsXx~"; /* Arrays for the saved marks. */ static int vi_mark_chars['z' - 'a' + 1]; -static void _rl_vi_replace_insert PARAMS((int)); -static void _rl_vi_save_replace PARAMS((void)); -static void _rl_vi_stuff_insert PARAMS((int)); -static void _rl_vi_save_insert PARAMS((UNDO_LIST *)); +static void _rl_vi_replace_insert (int); +static void _rl_vi_save_replace (void); +static void _rl_vi_stuff_insert (int); +static void _rl_vi_save_insert (UNDO_LIST *); -static void vi_save_insert_buffer PARAMS ((int, int)); +static void vi_save_insert_buffer (int, int); -static inline void _rl_vi_backup PARAMS((void)); +static inline void _rl_vi_backup (void); -static int _rl_vi_arg_dispatch PARAMS((int)); -static int rl_digit_loop1 PARAMS((void)); +static int _rl_vi_arg_dispatch (int); +static int rl_digit_loop1 (void); -static int _rl_vi_set_mark PARAMS((void)); -static int _rl_vi_goto_mark PARAMS((void)); +static int _rl_vi_set_mark (void); +static int _rl_vi_goto_mark (void); -static inline int _rl_vi_advance_point PARAMS((void)); -static inline int _rl_vi_backup_point PARAMS((void)); +static inline int _rl_vi_advance_point (void); +static inline int _rl_vi_backup_point (void); -static void _rl_vi_append_forward PARAMS((int)); +static void _rl_vi_append_forward (int); -static int _rl_vi_callback_getchar PARAMS((char *, int)); +static int _rl_vi_callback_getchar (char *, int); #if defined (READLINE_CALLBACKS) -static int _rl_vi_callback_set_mark PARAMS((_rl_callback_generic_arg *)); -static int _rl_vi_callback_goto_mark PARAMS((_rl_callback_generic_arg *)); -static int _rl_vi_callback_change_char PARAMS((_rl_callback_generic_arg *)); -static int _rl_vi_callback_char_search PARAMS((_rl_callback_generic_arg *)); +static int _rl_vi_callback_set_mark (_rl_callback_generic_arg *); +static int _rl_vi_callback_goto_mark (_rl_callback_generic_arg *); +static int _rl_vi_callback_change_char (_rl_callback_generic_arg *); +static int _rl_vi_callback_char_search (_rl_callback_generic_arg *); #endif -static int rl_domove_read_callback PARAMS((_rl_vimotion_cxt *)); -static int rl_domove_motion_callback PARAMS((_rl_vimotion_cxt *)); -static int rl_vi_domove_getchar PARAMS((_rl_vimotion_cxt *)); +static int rl_domove_read_callback (_rl_vimotion_cxt *); +static int rl_domove_motion_callback (_rl_vimotion_cxt *); +static int rl_vi_domove_getchar (_rl_vimotion_cxt *); -static int vi_change_dispatch PARAMS((_rl_vimotion_cxt *)); -static int vi_delete_dispatch PARAMS((_rl_vimotion_cxt *)); -static int vi_yank_dispatch PARAMS((_rl_vimotion_cxt *)); +static int vi_change_dispatch (_rl_vimotion_cxt *); +static int vi_delete_dispatch (_rl_vimotion_cxt *); +static int vi_yank_dispatch (_rl_vimotion_cxt *); -static int vidomove_dispatch PARAMS((_rl_vimotion_cxt *)); +static int vidomove_dispatch (_rl_vimotion_cxt *); void _rl_vi_initialize_line (void) @@ -337,24 +337,7 @@ rl_vi_yank_arg (int count, int key) int rl_vi_fetch_history (int count, int c) { - int wanted; - - /* Giving an argument of n means we want the nth command in the history - file. The command number is interpreted the same way that the bash - `history' command does it -- that is, giving an argument count of 450 - to this command would get the command listed as number 450 in the - output of `history'. */ - if (rl_explicit_arg) - { - wanted = history_base + where_history () - count; - if (wanted <= 0) - rl_beginning_of_history (0, 0); - else - rl_get_previous_history (wanted, c); - } - else - rl_beginning_of_history (count, 0); - return (0); + return (rl_fetch_history (count, c)); } /* Search again for the last thing searched for. */ @@ -944,7 +927,7 @@ rl_vi_arg_digit (int count, int c) static int _rl_vi_change_mbchar_case (int count) { - wchar_t wc; + WCHAR_T wc; char mb[MB_LEN_MAX+1]; int mlen, p; size_t m; @@ -955,9 +938,9 @@ _rl_vi_change_mbchar_case (int count) count--; while (count-- && rl_point < rl_end) { - m = mbrtowc (&wc, rl_line_buffer + rl_point, rl_end - rl_point, &ps); + m = MBRTOWC (&wc, rl_line_buffer + rl_point, rl_end - rl_point, &ps); if (MB_INVALIDCH (m)) - wc = (wchar_t)rl_line_buffer[rl_point]; + wc = (WCHAR_T)rl_line_buffer[rl_point]; else if (MB_NULLWCH (m)) wc = L'\0'; if (iswupper (wc)) @@ -975,7 +958,7 @@ _rl_vi_change_mbchar_case (int count) if (wc) { p = rl_point; - mlen = wcrtomb (mb, wc, &ps); + mlen = WCRTOMB (mb, wc, &ps); if (mlen >= 0) mb[mlen] = '\0'; rl_begin_undo_group (); @@ -1389,8 +1372,15 @@ int rl_vi_delete_to (int count, int key) { int c, r; + _rl_vimotion_cxt *savecxt; - if (_rl_vimvcxt) + savecxt = 0; + if (_rl_vi_redoing) + { + savecxt = _rl_vimvcxt; + _rl_vimvcxt = _rl_mvcxt_alloc (VIM_DELETE, key); + } + else if (_rl_vimvcxt) _rl_mvcxt_init (_rl_vimvcxt, VIM_DELETE, key); else _rl_vimvcxt = _rl_mvcxt_alloc (VIM_DELETE, key); @@ -1433,7 +1423,7 @@ rl_vi_delete_to (int count, int key) } _rl_mvcxt_dispose (_rl_vimvcxt); - _rl_vimvcxt = 0; + _rl_vimvcxt = savecxt; return r; } @@ -1481,8 +1471,15 @@ int rl_vi_change_to (int count, int key) { int c, r; + _rl_vimotion_cxt *savecxt; - if (_rl_vimvcxt) + savecxt = 0; + if (_rl_vi_redoing) + { + savecxt = _rl_vimvcxt; + _rl_vimvcxt = _rl_mvcxt_alloc (VIM_CHANGE, key); + } + else if (_rl_vimvcxt) _rl_mvcxt_init (_rl_vimvcxt, VIM_CHANGE, key); else _rl_vimvcxt = _rl_mvcxt_alloc (VIM_CHANGE, key); @@ -1524,7 +1521,7 @@ rl_vi_change_to (int count, int key) } _rl_mvcxt_dispose (_rl_vimvcxt); - _rl_vimvcxt = 0; + _rl_vimvcxt = savecxt; return r; } @@ -1553,8 +1550,15 @@ int rl_vi_yank_to (int count, int key) { int c, r; + _rl_vimotion_cxt *savecxt; - if (_rl_vimvcxt) + savecxt = 0; + if (_rl_vi_redoing) + { + savecxt = _rl_vimvcxt; + _rl_vimvcxt = _rl_mvcxt_alloc (VIM_YANK, key); + } + else if (_rl_vimvcxt) _rl_mvcxt_init (_rl_vimvcxt, VIM_YANK, key); else _rl_vimvcxt = _rl_mvcxt_alloc (VIM_YANK, key); @@ -1596,7 +1600,7 @@ rl_vi_yank_to (int count, int key) } _rl_mvcxt_dispose (_rl_vimvcxt); - _rl_vimvcxt = 0; + _rl_vimvcxt = savecxt; return r; } @@ -2036,6 +2040,9 @@ _rl_vi_callback_change_char (_rl_callback_generic_arg *data) char mb[MB_LEN_MAX+1]; c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); + if (c < 0) + return -1; + #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) strncpy (_rl_vi_last_replacement, mb, MB_LEN_MAX); @@ -2044,9 +2051,6 @@ _rl_vi_callback_change_char (_rl_callback_generic_arg *data) _rl_vi_last_replacement[0] = c; _rl_vi_last_replacement[MB_LEN_MAX] = '\0'; /* XXX */ - if (c < 0) - return -1; - _rl_callback_func = 0; _rl_want_redisplay = 1; @@ -2077,6 +2081,8 @@ rl_vi_change_char (int count, int key) else { c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); + if (c < 0) + return -1; #ifdef HANDLE_MULTIBYTE if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) strncpy (_rl_vi_last_replacement, mb, MB_LEN_MAX); @@ -2113,7 +2119,8 @@ rl_vi_overstrike (int count, int key) if (count > 0) { - _rl_overwrite_char (count, key); + if (_rl_overwrite_char (count, key) != 0) + return (1); vi_replace_count += count; } diff --git a/xmalloc.h b/xmalloc.h index f40d7a5..0fb9df9 100644 --- a/xmalloc.h +++ b/xmalloc.h @@ -1,6 +1,6 @@ /* xmalloc.h -- memory allocation that aborts on errors. */ -/* Copyright (C) 1999-2009 Free Software Foundation, Inc. +/* Copyright (C) 1999-2009,2010-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -38,8 +38,8 @@ #endif /* !PTR_T */ -extern PTR_T xmalloc PARAMS((size_t)); -extern PTR_T xrealloc PARAMS((void *, size_t)); -extern void xfree PARAMS((void *)); +extern PTR_T xmalloc (size_t); +extern PTR_T xrealloc (void *, size_t); +extern void xfree (void *); #endif /* _XMALLOC_H_ */ -- cgit v1.2.1